Masquerade ar politika pagrįstas maršrutizavimas: LAN srautas per VPN tinklų sietuvą
Linux tinklų sietuvas gali paslėpti LAN šaltinius už savo tunelio adreso arba maršrutizuoti juos nepakeistus. Pasirinkimas priklauso nuo to, kam priklauso tolimoji pusė ir koks jos grįžimo maršrutas.
Visą LAN įdėti už VPN tunelio yra lengvoji dalis; nuspręsti, kaip tolimoji pusė mato tuos klientus, jau ne. Masquerade perrašo kiekvieną LAN šaltinį į tinklų sietuvo tunelio adresą, todėl tolimasis galas atsako vienam partneriui. Politika pagrįstas maršrutizavimas išsaugo pradinius adresus ir reikalauja, kad tolimoji pusė žinotų, kaip juos pasiekti. Nė vienas nėra numatytasis; pasirinkimas kyla iš to, kam priklauso tolimoji pusė ir ar svarbus identitetas pagal įrenginį.
Du sprendimai žada skirtingus dalykus
Masquerade sumažina LAN iki vieno matomo mazgo: tinklų sietuvo. Tolimasis tinklas atsako į tą vieną adresą, o sietuvas išverčia atsakymus atgal klientui, kuris pradėjo srautą. Tolimojoje pusėje nereikia maršruto į jūsų privačiuosius prefiksus, todėl šis sprendimas išgyvena pas tiekėją, kuris atsisako juos perduoti. Sietuvas taip pat tampa kiekvieno ryšio šaltiniu, todėl tolimoji pusė negali atskirti dviejų klientų.
Politika pagrįstas maršrutizavimas išsaugo kiekvieno kliento adresą nepaliestą. Tolimasis tinklas mato tikrąjį šaltinį ir gali jį registruoti, taikyti taisyklę kiekvienam mazgui arba siųsti atsakymą tiesiai į tą adresą. Šis matomumas yra visa esmė, ir jis ateina su prievole: tolimoji pusė turi turėti LAN prefikso maršrutą, kuris veda atgal per tunelį. Suplanuokite tą maršrutą prieš įjungdami taisyklę, nes tunelis vis tiek pakils ir trūks tik atsakymų.
Gedimų režimai skiriasi tiek pat, kiek pažadai. Trūkstama masquerade taisyklė sukuria paketus, kurie išeina su privačiais šaltiniais ir niekada negrįžta. Trūkstamas grįžimo maršrutas sukuria tą patį simptomą politika pagrįstame maršrutizavime, bet taisymas priklauso tolimajam maršrutizatoriui, o ne sietuvui.
Masquerade: vienas partneris tolimojoje pusėje
Masquerade kelias turi tvarką, kuri svarbi. Persiuntimas turi būti įjungtas, kol jokia NAT taisyklė duos naudos, filtro lentelė turi leisti tranzitą abiem kryptimis, ir tik tada vertimas taikomas tunelio sąsajoje.
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Klientams vis dar reikia kelio iki sietuvo. Arba sietuvas yra jų numatytasis maršrutizatorius, arba jie turi konkretų maršrutą tolimajam prefiksui; jei atskiras maršrutizatorius lieka numatytasis, jam reikia statinio maršruto tunelio paskirties vietoms, kitaip paketas nukrypsta į netinkamą šuolį, kol sietuvas jį pamato.
DNS yra atskiras sprendimas. Tolimosios pusės sprendėjas atsako tik tada, kai jo atsakymas gali grįžti klientui. Su masquerade užklausa atrodo ateinanti iš sietuvo, todėl sprendėjo grįžimo kelias jau užtikrintas; su politika pagrįstu maršrutizavimu sprendėjui reikia to paties grįžimo maršruto kaip ir bet kuriai kitai tolimajai paslaugai.
Politika pagrįstas maršrutizavimas: išsaugokite šaltinį, pridėkite grįžimo kelią
Politika pagrįstas maršrutizavimas prasideda lentele ir taisykle, kuri ją parenka. Srautas, įeinantis iš LAN sąsajos, siunčiamas į specialią lentelę, ir ta lentelė turi numatytąjį maršrutą per tunelį. Pagrindinė lentelė lieka nepaliesta, todėl paties sietuvo sukurtas srautas gali eiti kitu keliu.
ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn
Tada tolimoji pusė turi maršrutizuoti LAN prefiksą atgal per tunelį. Tai konfigūracija tolimajame maršrutizatoriuje, o ne šiame sietuve. Sietuvas taip pat turi priimti atsakymus, ateinančius per kitą sąsają, nei numatytų pagrindinė lentelė; laisvas atvirkštinio kelio filtravimas (rp_filter nustatytas į 2) yra įprastas koregavimas, kai griežtas režimas išmeta tuos paketus.
Kai du tuneliai aktyvūs, pažymėkite kiekvieną srautą įėjime ir leiskite žymei pasirinkti lentelę. Taisyklė, kuri žiūri tik į įvesties sąsają, siunčia abiejų tunelių srautą į tą pačią lentelę, todėl antrasis tunelis vagia srautus iš pirmojo. Išbandykite tą žymę ryšiu, kuris išgyvena pakartotinį prisijungimą, nes tada ir pasirodo mišri politika.
Spręskite pagal nuosavybę ir pagal tai, ką registruoja tolimoji pusė
Jei tunelis baigiasi pas tiekėją, naudokite masquerade. Tas operatorius nemaršrutizuos jūsų privačių LAN diapazonų ir neturi priežasties skirti atskirus klientus už jūsų sietuvo. Vienas matomas partneris yra vienintelis modelis, kurį palaiko jo politika, todėl duokite jam tai ir laikykite vertimą savo krašte. Tiekėjas mato vieną partnerį, o tai yra būtent tai, ko tikisi jo politika, ir jūsų klientai paveldi tą vieną tapatybę.
Jei abu galai jūsų ir tolimosios paslaugos veikia pagal šaltinio adresus, politika pagrįstas maršrutizavimas nusipelno papildomo maršruto. Tada ugniasienės taisyklės, prieiga pagal naudotoją ir audito žurnalai gali atskirti klientus. Jei tolimajai pusei reikia tik pasiekiamumo, masquerade yra paprastesnis ir pašalina visą grįžimo maršruto klaidų klasę.
Hibridiniai sprendimai yra normalūs: politika pagrįstas maršrutizavimas jūsų tinkle, masquerade tiekėjo krašte. Svarbu užrašyti, kuris šuolis išverčia ir kuris šuolis maršrutizuoja, nes atsitiktinė NAT taisyklė, pridėta vienam klientui, paslepia šaltinį kiekvienam tos pačios grandinės klientui.
Patikrinkite iš vieno kliento, tada iš antro kliento
Vykdykite testą ten, kur prasideda srautas. Patikrinkite maršrutą, kurį naudoja mazgas, stebėkite, kaip paketas pasirodo tunelio sąsajoje, ir patikrinkite conntrack dėl vertimo. Ta seka įrodo, kad paketas ėjo numatytu keliu, o ne tik kažkur atvyko.
Pakartokite testą po pakartotinio prisijungimo. Masquerade taisyklė, kuri nurodo sąsają, išgyvena naują tunelio adresą; taisyklė, kuri nurodo seną adresą, neišgyvena. Tada išbandykite antrą LAN mazgą, nes sprendimas, veikiantis vienoje mašinoje, dažnai priklauso nuo tos mašinos maršruto, o ne nuo sietuvo politikos.
Užrašykite pasirinktą modelį, išverstą arba išsaugotą šaltinį ir grįžimo maršruto savininką sietuvo pastabose. Kitaip kitas žmogus, pridėsiantis klientą ar tunelį, spėlios, o spėliojimas yra būdas, kuriuo veikiantis LAN–VPN sprendimas tampa daliniu.