Nukreipk vieną LAN potinklį per OpenVPN ir išsaugok numatytąjį maršrutą
Išsaugok numatytąjį LAN maršrutą, kol vienas potinklis eina tuneliu. Palygink politikos lentelę su pagrindinės lentelės pakeitimais, tada pasirink NAT arba maršrutą serverio pusėje.
Įrenginiai, kurie maršrutizuoja LAN tinklą ir tuo pačiu metu jungiasi prie VPN, atsiduria tame pačiame ginče su savimi: tunelis nori valdyti numatytąjį maršrutą, o LAN jo reikia atgal. Kai OpenVPN prisijungia, jis gali įdiegti numatytąjį maršrutą per tunelį arba porą pusinių numatytųjų maršrutų, o tai teisinga nešiojamajam kompiuteriui ir neteisinga tinklų sietuvui, kurio kaimynai tikisi atsakymų iš jo LAN adreso. Atsakymas nėra praleisti VPN. Atsakymas yra duoti dviem sprendimams skirtingas lenteles.
Vienas numatytasis maršrutas, du savininkai
Persiunčiamas srautas ir vietoje sukuriamas srautas neprivalo eiti tuo pačiu keliu. LAN klientams tunelio reikia tik pasirinktoms paskirties vietoms, o paties pagrindinio kompiuterio valdymo sesijoms ir jo atsakymams tiems klientams reikia numatytojo LAN maršruto. Abu sumaišius pagrindinėje lentelėje, vienas atsakymas primetamas dviem skirtingiems klausimams.
OpenVPN turi jungiklį būtent tam. route-noexec neleidžia klientui apskritai liesti pagrindinės lentelės, o reikšmės, kurias jis būtų naudojęs, eksportuojamos į route-up scenarijų kaip route_vpn_gateway, dev ir sąsajos adresai. Tada jūs nusprendžiate, kuri lentelė gauna kurį maršrutą, kode, kurį galėsite perskaityti vėliau.
Politikos lentelė prieš pagrindinės perrašymą
| 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 |
Atskira lentelė yra vienintelis variantas, kuris skalėjasi daugiau nei vienas potinklis. Pavadinkite ją kartą, o paskui remkitės vardu, kad niekam nereikėtų atsiminti skaičiaus:
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 vpnAdresai čia yra pakaitiniai. Prieš ką nors paleisdami pakeiskite LAN prefiksą, tunelio sietuvą ir įrenginio pavadinimą savo diegime.
Taisyklė turi atitikti ir pagrindinį kompiuterį
Taisyklė, atitinkanti tik LAN prefiksą, apima persiunčiamus paketus. Ji neapima srauto, kurį sukuria pats sietuvas, ir neapima atsakymų, kuriuos jis siunčia atgal LAN klientams ir kurie kaip šaltinį neša sietuvo LAN adresą. Tos paieškos patenka į main ir vis tiek gali išeiti per tunelį.
Pridėkite antrą taisyklę paties sietuvo LAN adresui arba išplėskite pirmą taisyklę į aibę, apimančią abu. Tvarka svarbi: specifiškesnę taisyklę dėkite pirma ir patikrinkite rezultatą paieška, kuri aiškiai įvardija šaltinį.
ip route get 203.0.113.9 from 192.168.50.1Jei tai nurodo tunelio įrenginį paskirties vietai, kuri turėtų likti vietinė, taisyklių aibė neteisinga, nepriklausomai nuo to, ką lentelėje yra.
NAT arba maršrutas kitoje pusėje
VPN serveris žino tunelio potinklį ir nieko daugiau. Paketai, atvykstantys su LAN šaltinio adresu, neturi grįžimo kelio, nebent kas nors jį užtikrina, ir jį užtikrinti yra lygiai du būdai. Maršruto LAN prefiksui pridėjimas serveryje palieka pradinį šaltinį matomą nuo galo iki galo, ko paprastai nori audituotas dizainas. Maskavimas sietuve perrašo šaltinį į tunelio adresą ir nereikalauja serverio bendradarbiavimo.
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADEPasirinkite NAT, kai nevaldote serverio ir negalite ten pridėti maršrutų. Pasirinkite maršrutą serverio pusėje, kai svarbūs žurnalai, prieigos kontrolė arba grįžimo kelio simetrija, nes maskavimas ištrina pradinį adresą iš visko, ką fiksuoja kita pusė.
Bet kuriuo atveju persiuntimas turi būti įjungtas, o griežtas atvirkštinio kelio filtravimas gali numesti atsakymą, kai main nebūtų pasirinkęs tunelio tam šaltiniui. Patikrinkite faktinę reikšmę, prieš kaltindami tunelį.
Padarykite, kad padalijimas išgyventų prisijungimą iš naujo
Rankomis pridėtos taisyklės ir maršrutai išnyksta, kai sąsaja sukuriama iš naujo, o pasenęs lentelės įrašas gali pergyventi sesiją, kuri jį pateisino. Įdėkite lentelės taisyklę, tunelio maršrutą ir maskavimo įrašą į kliento route-up scenarijų ir išvalykite lentelę scenarijaus pradžioje, kad senas sietuvas negalėtų pergyventi naujoje sesijoje.
Patikrinkite iš abiejų galų: paiešką sietuve su LAN šaltiniu ir tikrą užklausą iš LAN kliento į paskirties vietą, kuri turi eiti per tunelį. Maršrutas, kuris egzistuoja, bet niekada nepasirenkamas, elgiasi lygiai kaip jokio maršruto, kol nepaskaitysite skaitiklių.