Kaks VPN-klienti võivad väljuda kahe erineva avaliku IPv4-aadressi kaudu ja seda tegev reegel on lühem, kui enamik inimesi ootab. Selle toimimise põhjus ei ole iptablesi süntaks, vaid paketi olek, kui see jõuab väljundketti: sealne lähteaadress peab kliente ikka veel eristama. Kui varasem masquerade on mõlemad juba ühele aadressile kokku surunud, ei suuda ükski kliendipõhine reegel seda eristust taastada. Lahenda see küsimus kõigepealt ja kirjuta siis tõlge.

Milline identiteet jõuab lüüsini

Reegel vastab paketi lähteaadressile, mitte VPN-i kasutajanimele ja mitte nimele, mida kliendirakendus kuvab. Kõik, mis paketti teel varem tõlgib, määrab, mida sinu reegel veel näha saab. Käivita nat-tabel järjekorras ja leia punkt, kus allikas on ikka veel kliendipõhine.

iptables -t nat -S POSTROUTING

Loe seda loendit ülalt. Ülaosas olev masquerade-reegel kirjutab lähteaadressi ümber iga sobiva voolu jaoks ja selle järel paiknevad kliendipõhised kirjed vastavad aadressile, mida enam ei ole. Kui kaks LAN-seadet jagavad üht tunnelit ja saabuvad ühe sisemise aadressina, peab disain muutuma enne tulemüüri: hoia nende lähtevahemikud eraldi või anna kummalelegi oma sisemine aadress.

Seo sisemise aadressi määramine autenditud kliendiga. Selle aadressi teisele seadmele andmine annab üle ka väljundpoliitika ja lähtetõlge ei ole iseenesest identiteeditõestus.

Tõlge ei saa aadressi välja mõelda

Iga avalik aadress tuleb sellele väljundpunktile määrata või sinna suunata ja vastused peavad tagasitee sinna leidma. Reegel, mis saadab liiklust aadressilt, kuhu keegi tagasi ei suuna, visatakse kaugemas otsas ära või vastatakse hostile, kes seda kunagi ei küsinud. Pilveteenuse pakkuja eksemplaril on tavaliselt avalik aadress enne paketi lahkumist tõlgitud privaatse liidese aadressiks, seega peab SNAT-i lähteallikas olema aadress, mille pakkuja vastu võtab, mitte väärtus, mida konsool näitab. Loe pakkuja aadressimudelit ja järgi seda, selle asemel et kopeerida avalik väärtus igasse paketti.

Praktikas tähendab see marsruuditud prefiksi kontrollimist pakkuja konsoolis enne tulemüüri puudutamist ja privaatse liidese aadressi kasutamist tõlkeallikana, kui vastavus on üks-ühele. Allpool olevates näidetes kasutatud aadressid pärinevad dokumentatsioonivahemikest, seega esimene asi, mida asendada, on aadressi tekst ise.

Sisesta enne üldist masquerade'i

Kinnita väljundliides ja praegune kett enne millegi lisamist. Esimene otsustab, milliste pakettidega reegel sobida saab, ja teine näitab, mis selle ees juba seisab.

ip -4 route show default
iptables -t nat -L POSTROUTING -n -v --line-numbers

Esimene käsk nimetab liidese, mille kaudu interneti suunduv pakett tegelikult väljub. Teine trükib keti koos reanumbritega. Üldine masquerade-kirje on rida, millest ülespoole tuleb jääda.

iptables -t nat -I POSTROUTING 1 -s 10.88.4.20/32 -o ens3 -j SNAT --to-source 198.51.100.77
iptables -t nat -I POSTROUTING 1 -s 10.88.4.21/32 -o ens3 -j SNAT --to-source 198.51.100.78

Kaks ülaltoodud reeglit vastavad kumbki ühele sisemisele aadressile, piiravad vastavust väljundliidesega ja määravad lähteallika selgesõnaliselt. Sisesta, mitte lisa: positsioonil 1 hinnatakse neid enne masquerade-rida. Nendevaheline järjekord ei loe, sest nende allikad erinevad. Asenda ens3 sellega, mida marsruudikäsk teatas, ja hoia teised tulemüürihaldurid samadest konksudest eemal, sest kaks tööriista ühe tabeli kirjutamisel on tavaline põhjus, miks õigel reeglil pole mõju.

Tõesta allikat uue vooluga

Olekupõhine NAT seob tõlke voolu alguses ja kasutab seda hilisemate pakettide jaoks uuesti, seega enne muudatust avatud sessioon säilitab pärast muudatust oma vana lähteallika. Reeglit tõestab ainult äsja algatatud ühendus.

conntrack -L -s 10.88.4.20 -p tcp --dport 443

Loe selle kirje vastusesuunda: selle sihtkoht on aadress, mida kaugem otspunkt näeb lähteallikana. Võrdle seda kavatsetud avaliku aadressiga ja käsitle vana aadressiga kirjet tõendina liiga vara alanud voolu kohta, mitte katkise reegli kohta. Palu kliendil avada uus ühendus ja korda seejärel päringut. Kogu jälgimistabeli tühjendamine testi sundimiseks katkestab kõik teised sessioonid lüüsil.

Tõlge ei vali endiselt marsruuti, ei lase voolu filtrist läbi ega avalda sissetulevat teenust. Vale marsruut ja puuduv lubamisreegel jätkavad nurjumist ka pärast täiuslikku SNAT-reeglit. Kontrolli ka IPv6-t ja kõiki teiseseid väljundteid, seejärel märgi sisemise-avaliku paarid tulemüüri dokumentatsiooni, et järgmine muudatus algaks vastavusest, mitte reegli tekstist.

Seotud artiklid