Maskarada ali usmerjanje po politiki: promet LAN skozi prehod VPN
Prehod Linux lahko skrije vire LAN za naslovom svojega tunela ali jih usmeri nespremenjene. Izbira izhaja iz tega, kdo ima v lasti oddaljeno stran in kakšna je njena povratna pot.
Postaviti celoten LAN za tunel VPN je lažji del; odločiti se, kako oddaljena stran vidi te odjemalce, ni. Maskarada prepiše vsak vir LAN na naslov tunela prehoda, zato oddaljeni konec odgovori enemu partnerju. Usmerjanje po politiki ohrani izvirne naslove in zahteva, da oddaljena stran ve, kako do njih. Nobeno ni privzeto; izbira izhaja iz tega, kdo ima v lasti oddaljeno stran in ali je identiteta po napravi pomembna.
Oblikovanji obljubljata različne stvari
Maskarada zmanjša LAN na enega vidnega gostitelja: prehod. Oddaljeno omrežje odgovori na ta en naslov, prehod pa prevede odgovore nazaj k odjemalcu, ki je začel tok. Na oddaljeni strani ni potrebna pot do tvojih zasebnih predpon, zato ta zasnova preživi pri ponudniku, ki jih noče prenašati. Prehod postane tudi vir vsake povezave, zato oddaljena stran ne more ločiti dveh odjemalcev.
Usmerjanje po politiki ohrani naslov vsakega odjemalca nedotaknjen. Oddaljeno omrežje vidi dejanski vir in ga lahko zabeleži, uporabi pravilo za posameznega gostitelja ali pošlje odgovor neposredno na ta naslov. Ta vidnost je ves smisel in prinaša obveznost: oddaljena stran mora imeti pot za predpono LAN, ki vodi nazaj skozi tunel. Načrtuj to pot, preden vklopiš pravilo, ker bo tunel vstal v vsakem primeru in manjkali bodo le odgovori.
Načini okvare se razlikujejo toliko kot obljube. Manjkajoče pravilo maskarade ustvari pakete, ki odidejo z zasebnimi viri in se nikoli ne vrnejo. Manjkajoča povratna pot ustvari enak simptom pri usmerjanju po politiki, vendar popravek spada na oddaljeni usmerjevalnik, ne na prehod.
Maskarada: en partner na oddaljeni strani
Pot maskarade ima vrstni red, ki je pomemben. Posredovanje mora biti vklopljeno, preden katero koli pravilo NAT kaj koristi, pregledovalna tabela mora dovoliti prehod v obe smeri, in šele nato se prevod uporabi na vmesniku tunela.
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
Odjemalci še vedno potrebujejo pot do prehoda. Bodisi je prehod njihov privzeti usmerjevalnik, bodisi nosijo posebno pot do oddaljene predpone; če privzeti ostane ločen usmerjevalnik, ta usmerjevalnik potrebuje statično pot do ciljev tunela, sicer paket odide na napačen skok, preden ga prehod vidi.
DNS je ločena odločitev. Razreševalnik na oddaljeni strani odgovori le, če lahko njegov odgovor potuje nazaj do odjemalca. Pod maskarado se poizvedba zdi, da prihaja s prehoda, zato je povratna pot razreševalnika že izpolnjena; pod usmerjanjem po politiki razreševalnik potrebuje enako povratno pot kot vsaka druga oddaljena storitev.
Usmerjanje po politiki: ohrani vir, dodaj povratno pot
Usmerjanje po politiki se začne s tabelo in pravilom, ki jo izbere. Promet, ki vstopi z vmesnika LAN, se pošlje v namensko tabelo, ta tabela pa nosi privzeto pot skozi tunel. Glavna tabela ostane nedotaknjena, zato lahko promet, ki ga ustvari prehod sam, gre po drugi poti.
ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn
Oddaljena stran mora nato usmeriti predpono LAN nazaj skozi tunel. To je nastavitev na oddaljenem usmerjevalniku, ne na tem prehodu. Prehod mora sprejeti tudi odgovore, ki prispejo na drug vmesnik, kot bi predvidevala glavna tabela; ohlapno filtriranje povratne poti (rp_filter nastavljen na 2) je običajna prilagoditev, ko strogi način te pakete zavrže.
Ko sta aktivna dva tunela, označi vsak tok ob vstopu in pusti oznaki, da izbere tabelo. Pravilo, ki gleda le na vhodni vmesnik, pošlje promet obeh tunelov v isto tabelo, zato drugi tunel ukrade tokove prvemu. Preizkusi to oznako s povezavo, ki preživi ponovno povezavo, ker takrat se pokaže mešana politika.
Odloči se po lastništvu in po tem, kaj oddaljena stran beleži
Če se tunel konča pri ponudniku, uporabi maskarado. Ta operater ne bo usmerjal tvojih zasebnih obsegov LAN in nima razloga razlikovati posameznih odjemalcev za tvojim prehodom. En viden partner je edini model, ki ga njegova politika podpira, zato mu daj to in zadrži prevod na svojem robu. Ponudnik vidi enega partnerja, kar je natanko to, kar njegova politika pričakuje, in tvoji odjemalci podedujejo to eno identiteto.
Če sta oba konca tvoja in oddaljene storitve delujejo po izvornih naslovih, si usmerjanje po politiki zasluži svojo dodatno pot. Pravila požarnega zidu, dostop po uporabniku in revizijski dnevniki lahko takrat ločijo odjemalce. Če oddaljena stran potrebuje le dosegljivost, je maskarada preprostejša in odpravi cel razred napak povratne poti.
Hibridne zasnove so običajne: usmerjanje po politiki v tvojem omrežju, maskarada na robu ponudnika. Pomembno je zapisati, kateri skok prevaja in kateri skok usmerja, ker naključno pravilo NAT, dodano za enega odjemalca, skrije vir vsakemu odjemalcu v isti verigi.
Preveri z enega odjemalca, nato z drugega odjemalca
Zaženi preizkus tam, kjer se promet začne. Preveri pot, ki jo uporablja gostitelj, opazuj, kako se paket pojavi na vmesniku tunela, in preglej conntrack zaradi prevoda. To zaporedje dokazuje, da je paket šel po načrtovani poti, ne le da je nekam prispel.
Ponovi preizkus po ponovni povezavi. Pravilo maskarade, ki imenuje vmesnik, preživi nov naslov tunela; pravilo, ki imenuje stari naslov, ne preživi. Nato preizkusi drugega gostitelja LAN, ker je zasnova, ki deluje na enem stroju, pogosto odvisna od lastne poti tega stroja in ne od politike prehoda.
Zapiši izbrani model, prevedeni ali ohranjeni vir in lastnika povratne poti v opombe prehoda. Sicer bo naslednja oseba, ki doda odjemalca ali tunel, ugibala, in ugibanje je način, kako delujoča nastavitev LAN-v-VPN postane delna.