Seadmed, mis marsruudivad LAN-i jaoks ja valivad samal ajal VPN-i, satuvad iseendaga samasse vaidlusse: tunnel tahab vaikeimarsruuti omada ja LAN vajab seda tagasi. Kui OpenVPN ühendub, võib see paigaldada vaikeimarsruudi läbi tunneli või paari pooleldi vaikeimarsruuti, mis on sülearvuti jaoks õige ja lüüsi jaoks vale, mille naabrid ootavad vastuseid selle LAN-aadressilt. Vastus ei ole VPN-i vahele jätta. Vastus on anda kahele otsusele erinevad tabelid.

Üks vaikeimarsruut, kaks omanikku

Edastatav liiklus ja kohapeal loodud liiklus ei pea minema sama teed. LAN-i kliendid vajavad tunnelit ainult nende sihtkohtade jaoks, mille te valite, samal ajal kui hosti enda haldusseansid ja selle vastused neile klientidele vajavad LAN-i vaikeimarsruuti. Mõlema segamine põhitabelisse sunnib ühe vastuse kahele erinevale küsimusele.

OpenVPN-il on täpselt selle jaoks lüliti. route-noexec takistab kliendil põhitabelit üldse puudutada ja väärtused, mida see oleks kasutanud, eksporditakse route-up skripti kui route_vpn_gateway, dev ja liidese aadressid. Seejärel otsustate teie, milline tabel millise marsruudi saab, koodis, mida saab hiljem lugeda.

Poliitikatabel põhitabeli ümberkirjutamise vastu

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

Eraldi tabel on ainus valik, mis skaleerub kaugemale kui üks alavõrk. Andke sellele üks kord nimi ja viidake seejärel nimele, et keegi ei peaks numbrit meeles pidama:

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

Aadressid on siin kohatäited. Asendage LAN-i prefiks, tunneli lüüs ja seadme nimi oma juurutuse põhjal enne millegi käivitamist.

Reegel peab sobima ka hostiga

Reegel, mis sobib ainult LAN-i prefiksiga, katab edastatavad paketid. See ei kata liiklust, mida lüüs ise loob, ega vastuseid, mille see LAN-i klientidele tagasi saadab, mis kannavad lüüsi LAN-aadressi allikana. Need otsingud langevad maini ja võivad ikkagi tunnelist välja minna.

Lisage teine reegel lüüsi enda LAN-aadressi jaoks või laiendage esimest reeglit hulgaks, mis sisaldab mõlemat. Järjekord on oluline: pange konkreetsem reegel esimeseks ja kontrollige tulemust otsinguga, mis nimetab allikat selgesõnaliselt.

ip route get 203.0.113.9 from 192.168.50.1

Kui see näitab tunneli seadet sihtkoha jaoks, mis peaks jääma kohalikuks, on reeglistik vale sõltumata sellest, mida tabel sisaldab.

NAT või marsruut kaugemal pool

VPN-server teab tunneli alavõrku ega midagi muud. Saabuvatel pakettidel, mille allikas on LAN-i aadress, puudub tagasitee, kui keegi seda ei paku, ja seda saab pakkuda täpselt kahel viisil. Marsruudi lisamine LAN-i prefiksile serveris hoiab algse allika nähtavana otsast otsani, mida auditeeritud disain tavaliselt tahab. Maskeerimine lüüsil kirjutab allika ümber tunneli aadressiks ja ei vaja serveri kaasabi.

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

Valige NAT, kui te ei kontrolli serverit ega saa sinna marsruute lisada. Valige serveripoolne marsruut, kui olulised on logid, juurdepääsukontroll või tagasitee sümmeetria, sest maskeerimine kustutab algse aadressi kõigest, mida kaugem pool salvestab.

Mõlemal juhul peab edastamine olema lubatud ja range pöördtee filtreerimine võib vastuse ära jätta, kui main ei oleks selle allika jaoks tunnelit valinud. Kontrollige tegelikku väärtust enne, kui tunnelit süüdistate.

Tehke nii, et jaotus jääb ühenduse taastamise üle

Käsitsi lisatud reeglid ja marsruudid kaovad liidese uuesti loomisel ja aegunud tabelikirje võib üle elada seansi, mis seda õigustas. Pange tabelireegel, tunneli marsruut ja maskeerimiskirje kliendi route-up skripti sisse ja tühjendage tabel skripti alguses, et vana lüüs ei saaks uude seanssi üle kanduda.

Kontrollige mõlemast otsast: otsing lüüsil LAN-i allikaga ja tegelik päring LAN-i kliendilt sihtkohta, mis peaks tunnelist läbi minema. Marsruut, mis on olemas, kuid mida kunagi ei valita, käitub täpselt nagu marsruudi puudumine, kuni loete loendureid.

Seotud artiklid