Reititä yksi LAN-aliverkko OpenVPN:n läpi ja säilytä oletusreitti
Säilytä LANin oletusreitti, kun yksi aliverkko kulkee tunnelin läpi. Vertaa käytäntötaulukkoa päätaulukon muutoksiin ja valitse sitten NAT tai palvelinpuolen reitti.
Laitteet, jotka reitittävät LANia ja soittavat samalla VPN:ään, päätyvät samaan väittelyyn itsensä kanssa: tunneli haluaa omistaa oletusreitin ja LAN tarvitsee sen takaisin. Kun OpenVPN yhdistää, se voi asentaa oletusreitin tunnelin kautta tai parin puolikkaita oletusreittejä, mikä on oikein kannettavalle ja väärin yhdyskäytävälle, jonka naapurit odottavat vastauksia sen LAN-osoitteesta. Vastaus ei ole VPN:n ohittaminen. Vastaus on antaa kahdelle päätökselle eri taulukot.
Yksi oletusreitti, kaksi omistajaa
Edelleen välitetyn ja paikallisesti syntyneen liikenteen ei tarvitse kulkea samaa tietä. LAN-asiakkaat tarvitsevat tunnelin vain valitsemiisi kohteisiin, kun taas isännän omat hallintasessiot ja sen vastaukset näille asiakkaille tarvitsevat LANin oletusreitin. Molempien sekoittaminen päätaulukkoon pakottaa yhden vastauksen kahteen eri kysymykseen.
OpenVPN:ssä on kytkin juuri tähän. route-noexec estää asiakasta koskemasta päätaulukkoon lainkaan, ja arvot, joita se olisi käyttänyt, viedään route-up skriptiin niminä route_vpn_gateway, dev ja liitännän osoitteet. Sen jälkeen sinä päätät, mikä taulukko saa minkä reitin, koodissa jonka voit lukea myöhemmin.
Käytäntötaulukko vai päätaulukon uudelleenkirjoitus
| Approach | What it buys | What it costs |
|---|---|---|
| Separate table plus source rule | LAN traffic and host traffic keep independent defaults | Every lookup now depends on rule order |
| Editing the main table only | Fewer moving parts on a single-purpose host | One mistake takes the gateway offline entirely |
| Two half-default routes | Works for a full-tunnel client | Ambiguous on a host that must answer on its LAN address |
Erillinen taulukko on ainoa vaihtoehto, joka skaalautuu yhden aliverkon yli. Nimeä se kerran ja viittaa siihen sitten nimellä, jotta kenenkään ei tarvitse muistaa numeroa:
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 vpnOsoitteet tässä ovat paikkamerkkejä. Korvaa LAN-etuliite, tunnelin yhdyskäytävä ja laitteen nimi omasta käyttöönotostasi ennen kuin ajat mitään.
Säännön on vastattava myös isäntää
Sääntö, joka vastaa vain LAN-etuliitettä, kattaa edelleen välitetyt paketit. Se ei kata liikennettä, jonka yhdyskäytävä itse tuottaa, eikä vastauksia, jotka se lähettää takaisin LAN-asiakkaille ja jotka kantavat yhdyskäytävän LAN-osoitetta lähteenään. Ne haut putoavat mainiin ja voivat silti lähteä tunnelin kautta.
Lisää toinen sääntö yhdyskäytävän omalle LAN-osoitteelle tai laajenna ensimmäinen sääntö joukoksi, joka sisältää molemmat. Järjestys on tärkeä: aseta täsmällisempi sääntö ensin ja tarkista tulos haulla, joka nimeää lähteen nimenomaisesti.
ip route get 203.0.113.9 from 192.168.50.1Jos se raportoi tunnelilaitteen kohteelle, jonka pitäisi pysyä paikallisena, sääntöjoukko on väärä riippumatta siitä, mitä taulukko sisältää.
NAT vai reitti kaukopäässä
VPN-palvelin tuntee tunnelin aliverkon eikä mitään muuta. Paketeilla, jotka saapuvat LAN-lähdeosoitteella, ei ole paluureittiä, ellei joku tarjoa sitä, ja sen tarjoamiseen on täsmälleen kaksi tapaa. Reitin lisääminen LAN-etuliitteelle palvelimella pitää alkuperäisen lähteen näkyvissä päästä päähän, mitä auditoitu suunnittelu yleensä haluaa. Naamiointi yhdyskäytävällä kirjoittaa lähteen tunnelin osoitteeksi eikä vaadi palvelimelta yhteistyötä.
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADEValitse NAT, kun et hallitse palvelinta etkä voi lisätä sinne reittejä. Valitse palvelinpuolen reitti, kun lokit, pääsynvalvonta tai paluureitin symmetria ovat tärkeitä, koska naamiointi pyyhkii alkuperäisen osoitteen kaikesta, mitä kaukopää tallentaa.
Kummassakin tapauksessa edelleenvälityksen on oltava käytössä, ja tiukka käänteisen reitin suodatus voi pudottaa vastauksen, kun main ei olisi valinnut tunnelia kyseiselle lähteelle. Tarkista tehollinen arvo ennen kuin syytät tunnelia.
Tee jaosta uudelleenyhdistämisen kestävä
Käsin lisätyt säännöt ja reitit katoavat, kun liitäntä luodaan uudelleen, ja vanhentunut taulukkomerkintä voi elää pidempään kuin sen oikeuttanut istunto. Laita taulukkosääntö, tunnelin reitti ja naamiointimerkintä asiakkaan route-up skriptiin ja tyhjennä taulukko skriptin alussa, jotta vanha yhdyskäytävä ei voi selvitä uuteen istuntoon.
Varmista molemmista päistä: haku yhdyskäytävällä LAN-lähteellä ja todellinen pyyntö LAN-asiakkaalta kohteeseen, jonka pitäisi kulkea tunnelin kautta. Reitti, joka on olemassa mutta jota ei koskaan valita, käyttäytyy täsmälleen kuin reittiä ei olisi, kunnes luet laskureita.