Ien apparaat fia in router-VPN hat trije regels nedich, gjin skeakel
Ien apparaat fia in router-VPN is beliedsrouting, gjin oanfinkfakje: in markearre tabel, in beheinde NAT-regel, plus de DNS-, IPv6- en LAN-paden dy’t hantliedingen oerslaan.
Op in router-VPN is der gjin skeakel per apparaat; de skeakel dy’t jo sykje is in fluchtoets dy’t beliedsroutingsregels foar jo skriuwt. Op it stuit dat ien laptop, ien poartberik, ien adreslist of ien LAN-segment troch de tunnel moat wylst al it oare op de WAN bliuwt, bouwe jo in beliedsroute yn stee fan in funksje oan te setten. It wurk hat trije beweeglike dielen, en elk mislearret oars: in markearre tabel sûnder rûte liket op stilte, in markearring tapast yn ’e ferkearde keatling liket as is der neat bard, en in ûntbrekkende NAT-regel liket op in tunnel dy’t ferbynt en neat draacht. Twa dielen mear ûntbrekke om’t se nea yn ’e mangle-regel ferskine, en dat binne DNS en IPv6.
De myte: de tunnel is in kliïntynstelling
In VPN-kliïnt oan ’e routerkant docht ien grof ding goed: hy set 0.0.0.0/0 yn ’e haadroutingtabel en rjochtet dy op ’e tunnel. WireGuard liedt dat ôf fan AllowedIPs, OpenVPN fan in trochstutte redirect-gateway, en beide feroarje it paad foar elke host efter de router. It fernaujen fan AllowedIPs of it tafoegjen fan route-nopull feroaret wat de kliïnt ynstallearret. It feroaret net foar wa’t de ynstallaasje jildt, om’t de kliïnt nea apparaten sjocht. Hy sjocht allinnich pakketten.
Kiezen op boarne of bestimming is in routingbeslút, dus it heart by de beliedslaach fan ’e router: in mangle-regel plus in twadde tabel op RouterOS, in MARK plus in ip rule op OpenWrt of DD-WRT, of in firewallregel wêrfan’t de gateway de tunnel is op pfSense. Netgate syn WireGuard-kliïntresep is dejinge om te lêzen foar’t jo tinke, om’t op dat platfoarm de gateway fan ’e regel, de interfacetaak en de útgeande NAT-ynfier allegear oerienkomme moatte foar’t ien kliïnt de tunnel brûkt.
De oare helte fan ’e myte is de twadde router. Noch in kastke keapje of it apparaat nei in gast-SSID ferpleatse wurket faak, en de reden is net de hardware: it set it apparaat op syn eigen subnet, wat jo de boarneselektor jout dy’t de firmware al begrypt. As jo dat segment op ’e router dy’t jo hawwe definiearje kinne, lost it ekstra kastke in probleem op dat jo net hiene.
Diel ien: in tunnel dy’t net de standertrûte is
Op RouterOS foegje jo de kliïnt ta sûnder standertrûte en jouwe jo de tunnel syn eigen tabel. De earste rûte is de markearre standert; de twadde is de mislearringshealte.
/ip route add dst-address=0.0.0.0/0 gateway=VPN_GATEWAY_IP routing-mark=vpn distance=1
/ip route add dst-address=0.0.0.0/0 type=unreachable routing-mark=vpn distance=2
De unreachable-rûte is de reden dat in markearre tabel in útsûnderingslist yn ’e haadtabel ferslacht. As de tunnel falt, krije markearre pakketten daliks unreachable yn stee fan stil werom te fallen nei de WAN, sadat de fout yn ’e flatermelding fan ’e applikaasje ferskynt en net op in geolokaasjeside dy’t jo in oere letter besjogge.
RouterOS 7 skiedt wat 6.x byinoar hold: jo ferklearje de tabel mei /routing table add name=vpn fib, en ferwize der dan by namme nei yn ’e rûte en yn ’e mangle-regel. In 6.x-fragmint dat routing-mark ynline set sûnder de tabel te definiearjen, laden skjin en matcht neat. De oare klassiker is twa 0.0.0.0/1-helten, of twa standertrûtes op deselde ôfstân yn ien tabel: de kearn kiest ien, en it gedrach kin feroarje nei in werstart.
Diel twa: markearje foar it rûtesykjen
De selektor beslút hokker pakketten dy tabel yngeane. RouterOS begjint meastentiids mei in adreslist foar bestimmingsbelied, of in boarneadres foar apparaatbelied:
/ip firewall mangle add chain=prerouting src-address=192.168.88.50 action=mark-routing new-routing-mark=vpn
/ip firewall mangle add chain=prerouting dst-address-list=via-vpn action=mark-routing new-routing-mark=vpn
/ip firewall address-list add list=via-vpn address=203.0.113.10
Linux-firmware docht itselde mei in netfilter-mark en in regel dy’t markearre pakketten yn in tabel stjoert dy’t jo folle hawwe:
iptables -t mangle -A PREROUTING -p tcp --dport 27000:27050 -j MARK --set-mark 0x200
ip route add default dev tun0 table 100
ip rule add fwmark 0x200 table 100
De keatling is gjin stylkar. As in pakket FORWARD berikt, hat it rûtesykjen al plakfûn, dus in MARK of DROP dêr kin allinnich oerskriuwe of fuortsmite. De markearring moat yn PREROUTING lânje foar trochstjoerd ferkear en yn OUTPUT foar ferkear dat de router sels makket, want dêr wenje de DNS, NTP en fernijingskontrôles fan ’e router. Krekt dat útgongspaad is de gewoane reden dat in folslein tunnelisearre opset by in lektest noch fan ’e ISP-resolver antwurdet.
Apparaatbelied hat in match nedich dy’t net driuwt. Reservearje it adres yn DHCP, of match in interface foar in tawijde segment; in adres dat letter nei in oar apparaat ferhuzet, past de tunnel stil ta op ’e ferkearde kliïnt. In brêge per SSID mei syn eigen subnet is de duorsumere ferzje fan itselde idee, en it jout de IPv6-regels in plak om te wenjen.
Diel trije: NAT, DNS en de LAN-útsûndering
Ferkear dat troch de tunnel útgiet hat in boarneadres nedich dêr’t de fiere kant op antwurdet. Behein de oersetting ta de tunnelinterface: out-interface=VPN_NAME op RouterOS, -o tun0 op Linux, in oerienkommende útgeande NAT-ynfier op pfSense. In masquerade-regel sûnder dy beheining oerskriuwt ferkear dat jo gewurde litte woene, en it symptoom is dat it net-tunnelisearre apparaat syn iepenbiere adres ferliest.
De LAN-útsûndering feroarsaket mear stipe-riedden as de tunnel sels. As de markearre tabel allinnich in standertrûte hat, matcht in printer- of NAS-bestimming fan it selektearre apparaat dy standert en ferdwynt yn ’e tunnel. Foegje de LAN-rûte ta oan deselde tabel, of slút it lokale subnet út yn ’e selektor; beide wurkje, en de útsûndering is makliker korrekt te hâlden as jo letter VLAN’s tafoegje.
DNS nimt in apart paad. Query’s dy’t de router trochstjoert, komme fan ’e router en folgje OUTPUT, net de trochstjoerde markearring, sadat in folslein tunnelisearre laptop noch altyd fia de ISP oplosse kin. Rjochtsje kliïnten op in resolver dy’t fia de tunnel berikber is, of markearje it eigen poarte-53-ferkear fan ’e router, en kontrolearje dan it oploste adres yn stee fan oan te nimmen dat it antwurd mei de weboanfraach reizge is.
As de regel matcht mar de app brûkt noch de WAN
Bestimmingslisten wurde raar âld. In namme lost op nei in adres dat net yn ’e list stiet, dus de oanfraach nimt de WAN wylst elke test dy’t jo tsjin it liste adres dienen, wurke. Fernij de list fan deselde resolver dy’t de kliïnt brûkt, en jou de foarkar oan in boarnebasearre selektor as jo echt al it ferkear fan ien apparaat wolle.
IPv6 is de stille omwei. It apparaat hat in twadde adresfamylje mei syn eigen standertrûte en syn eigen regelset, en allinnich it IPv4-adres matchje is heale belied. Pas deselde selektor ta op ip6tables of de nftables-ekwivalint, of skeakelje IPv6 op dat segment bewust út yn stee fan by ûngelok.
Fêstige ferbiningen telle ek. In conntrack-ynfier dy’t foar de wiziging makke is, folget it âlde paad oant it ferrint, dus in browser dy’t tidens de bewurking iepen bleau liket krekt op in regel dy’t nea tapast is. Iepje in nije ferbining, of leegje de tastân, foar’t jo it belied beoardielje.
Ferifiearje mei twa apparaten en in werstart
Test it apparaat dat tunnelisearre wurde moat en it apparaat dat net moat, en ferlykje de twadde hop yn stee fan in snelheidsgetal. In traceroute fan elk lit op hop twa of de tunnelgateway of de ISP-gateway sjen; as beide gelyk lykje, docht de markearring of de tabel net wat de regel seit. Brûk nije ferbiningen foar de test.
Werstart dan. De opstartfolchoarder is wêr’t in wurkjend belied in brutsen belied wurdt, om’t de kliïnt oan wêze moat foar’t de unreachable-rûte ynstallearre wurdt, en in bewarre snapshot dy’t de âlde regelset weromset, oerskriuwt jo tabel. Kontrolearje dat elke regel yn ’e bewarre konfiguraasje stiet en dat de markearre standert nei it opstarten bestiet, net allinnich nei’t jo dy yntypen hawwe.
As iets mislearret, helje earst de markearring fuort en sjoch oft normaal ferkear weromkomt, helje dan de tabel fuort. Dy folchoarder fertelt jo oft jo in routing- of in firewallprobleem efterfolgje, en it lit it húshâlden mei in wurkjende printer efter wylst jo it wurk ôfmeitsje.