Kasten dy’t foar in LAN routearje en tagelyk in VPN skilje, bedarje yn deselde diskusje mei harsels: de tunnel wol de standertrûte besitte, en it LAN hat dy werom nedich. As OpenVPN ferbynt, kin it in standertrûte troch de tunnel ynstallearje of in pear heal-standertrûtes, wat goed is foar in laptop en ferkeard foar in poarte waans buorlju antwurden fan har LAN-adres ferwachtsje. It antwurd is net de VPN oerslaan. It antwurd is de beide besluten ferskate tabellen jaan.

Ien standertrûte, twa eigners

Trochstjoerd ferkear en pleatslik ûntstien ferkear hoege net deselde wei te gean. LAN-klanten hawwe de tunnel allinnich nedich foar de bestimmings dy’t jo kieze, wylst de eigen beheartsesjes fan de host en syn antwurden oan dy klanten de LAN-standertrûte nedich hawwe. Beide yn de haadtabel mingerje twingt ien antwurd op twa ferskate fragen.

OpenVPN hat in skeakel krekt hjirfoar. route-noexec hâldt de klant tsjin om de haadtabel hielendal oan te reitsjen, en de wearden dy’t it brûkt hawwe soe, wurde eksportearre nei in route-up skript as route_vpn_gateway, dev en de ynterface-adressen. Dêrnei beslute jo hokker tabel hokker rûte krijt, yn koade dy’t jo letter lêze kinne.

Beliedstabel fersus de haadtabel oerskriuwe

ApproachWhat it buysWhat it costs
Separate table plus source ruleLAN traffic and host traffic keep independent defaultsEvery lookup now depends on rule order
Editing the main table onlyFewer moving parts on a single-purpose hostOne mistake takes the gateway offline entirely
Two half-default routesWorks for a full-tunnel clientAmbiguous on a host that must answer on its LAN address

De aparte tabel is de iennige opsje dy’t fierder as ien subnet skaallet. Jou it ien kear in namme en ferwize dêrnei by namme, sadat nimmen in nûmer ûnthâlde hoecht:

echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpn

De adressen hjir binne plakhâlders. Ferfange it LAN-préfix, de tunnelpoarte en de apparaatnamme út jo eigen útrôljen foardat jo wat draaie.

De regel moat ek by de host passe

In regel dy’t allinnich by it LAN-préfix past, dekt trochstjoerde pakketten. Hy dekt gjin ferkear dat de poarte sels ûntstiet, en hy dekt ek de antwurden net dy’t er weromstjoert nei LAN-klanten, dy’t it LAN-adres fan de poarte as boarne drage. Dy sykopdrachten falle troch nei main en kinne noch altyd troch de tunnel nei bûten.

Foegje in twadde regel ta foar it eigen LAN-adres fan de poarte, of ferbreedzje de earste regel nei in set dy’t beide omfettet. De folchoarder is wichtich: set de mear spesifike regel earst, en kontrolearje it resultaat mei in sykopdracht dy’t de boarne eksplisyt neamt.

ip route get 203.0.113.9 from 192.168.50.1

As dat it tunneleapparaat rapportearret foar in bestimmingsplak dat pleatslik bliuwe moat, is de regelset ferkeard, itsij wat de tabel befettet.

NAT of in rûte oan de oare kant

De VPN-server ken it tunnelsubnet en fierder neat. Pakketten dy’t mei in LAN-boarneadres oankomme, hawwe gjin weromwei, útsein as immen der ien leveret, en der binne krekt twa manieren om dat te dwaan. In rûte foar it LAN-préfix op de server taheakje hâldt de oarspronklike boarne fan ein oant ein sichtber, wat in auditeare opset meastentiids wol. Maskearring op de poarte skriuwt de boarne oer nei it tunneladres en freget gjin gearwurking fan de server.

iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADE

Kies NAT as jo de server net beheare en dêr gjin rûtes taheakje kinne. Kies de rûte oan de serverkant as logboeken, tagongskontrôle of symmetry fan de weromwei fan belang binne, want maskearring wisket it oarspronklike adres út alles wat de oare kant fêstleit.

Yn beide gefallen moat trochstjoerjen oan wêze, en strang weromwei-filtersjen kin it antwurd falle litte as main de tunnel foar dy boarne net keazen hawwe soe. Kontrolearje de effektive wearde foardat jo de tunnel de skuld jouwe.

Lit de splitsing in werferbining oerlibje

Mei de hân taheakke regels en rûtes ferdwine as de ynterface opnij makke wurdt, en in ferâldere tabelynskriuwing kin de sesje oerlibje dy’t him rjochtfeardige. Set de tabelregel, de tunnelrûte en de maskearringsynskriuwing yn it route-up skript fan de klant, en leegje de tabel oan de boppekant fan it skript sadat in âlde poarte net yn de nije sesje oerlibje kin.

Kontrolearje fan beide kanten: in sykopdracht op de poarte mei de LAN-boarne, en in echte oanfraach fan in LAN-klant nei in bestimmingsplak dat troch de tunnel gean moat. In rûte dy’t bestiet mar nea keazen wurdt, hâldt him krekt sa as gjin rûte oant jo de tellers lêze.

Relatearre artikelen