Üks klient peab jõudma teise kliendi SSH-teenuseni ja ülejäänud bassein peaks jääma sama isoleerituks kui praegu. Ahvatlev lüliti on client-to-client, mis lülitab võrdõigusliku juurdepääsu korraga kõigile sisse ja annab otsuse kernelile asemel OpenVPN-le. Kitsam vastus hoiab selle lüliti väljas ja laseb serveri enda marsruutimisel ja tulemüüril kanda täpselt ühte voogu.

Mehhanism loeb rohkem kui reegli tekst, sest kaks lähenemist paigutavad paketi erinevatesse kohtadesse. Teadmine, millise valisid, selgitab nii seda reeglit, mis näib ei tee midagi, kui ka seda partnerit, mis ühendub ilma selleta.

Kuhu client-to-client paketti liigutab

Kui client-to-client on sisse lülitatud, edastab server partneri paketi sisemiselt, selle asemel et see tunneliseadmest uuesti välja saata, nii et pakett ei jõua kunagi kerneli edastusteele. See on mugav ja tähendab ka, et sinu tulemüür ei näe kunagi voogu, mida ta peaks valvama. Jäta valik välja ja server marsruudib paketi uuesti sama liidese kaudu välja, mis asetab selle netfilteri ette. Sama liides sisse, sama liides välja, ja FORWARD-ahel saab sõna.

Vahetus on selgesõnaline: saad ühe poliitikapunkti ja võtad enda kanda marsruutimise ja edastamise, mida otsetee sinu eest tegi. See töö on ühe voo jaoks väike ja kasvab iga lisatava erandiga. Loenda erandid kohe, sest reeglistik on koht, kus partneripoliitika tegelikult elab.

Tee, mida partneri pakett tegelikult läbib

Eelda Linuxi Community OpenVPN 2.6 teenust, kasutajaruumi TUN-töötlust DCO asemel, subnet-topoloogiat, tun0 ja basseini 10.44.0.0/24, kliendiga A aadressil 10.44.0.21 ja kliendiga B aadressil 10.44.0.37. Subnet-topoloogia korral katavad A saadud aadress ja mask juba basseini, nii et A saadab paketi tunneliseadmesse ilma täiendava lükatud marsruudita. Kontrolli A tegelikku marsruuti, selle asemel et seda eeldada.

Serveris saabub pakett adresseerituna B-le, mis ei ole kohalik aadress, seega edastatakse see. IPv4 edastamine peab olema sisse lülitatud, et see üldse juhtuks, ja marsruudiotsing peab saatma paketi tagasi läbi tun0. Tulemüür näeb seega edastatud voogu, mille mõlemal küljel on sama liides, ja see on detail, mille enamik reeglistikke kahe silma vahele jätab. Siin ei ole allika tõlget vaja, ja A aadressi puutumatu hoidmine on see, mis lubab B-l rakendada oma allikapõhist reeglit.

Kaks reeglit serveris, selles järjekorras

Kogu luba kannavad kolm reeglit: edastamine, paari erand ja tunnelipaari jaoks vaikimisi mahaviskamine. Vastuvõtureegel nimetab paari ja teenuse, nii et luba peab vastu kasvavale basseinile. Aseta see enne igasugust tunnel-tunnel-liikluse üldist keeldu, sest esimene vaste võidab:

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o tun0 -s 10.44.0.21 -d 10.44.0.37 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -j DROP

Need käsud on illustratiivsed ja kuuluvad sinna mehhanismi, mida sinu host kasutab reeglite püsivaks hoidmiseks; tööajal tehtud sisestus kaob järgmisel käivitamisel. Olekul põhinev reegel on see, mis laseb B vastustel ja TCP käepigistusel naasta ilma teise, peegeldatud vastuvõtuta.

Kontrolli pärast loendureid, mitte reeglite loendit, sest reegel, mis kunagi ei taba, näeb välja täpselt nagu töötav. Kui loendurid jäävad nulli, ei lähe pakett seda teed, mida arvad.

Mida B peab veel lubama

B käitab SSH-teenust, seega B otsustab, kas midagi kuulab tunneli aadressil ja kas tema enda hosti tulemüür allikat aktsepteerib. Võrguluba serveris ei ole luba ühelegi B kontole, ja hostivõtme kontroll ning kasutaja autentimine kehtivad endiselt nagu igalt poolt mujalt.

Testi kõigepealt positiivset juhtumit: värske SSH-ühendus A-st B tunneli aadressile, vastu võetud oodatud hostivõtmega. Seejärel testi teist partnerit või teist porti ja kinnita, et see lükatakse tagasi, sest luba, mis vaikselt kõike lubab, on kuni asjaolude muutumiseni eristamatu toimivast loast. Selle testi mõlemad pooled on vajalikud ja teine jääb inimestel tavaliselt vahele.

Pane kirja määratud aadressid, tegelikud marsruudid mõlemas kliendis ning täpsed reeglid serveris ja B-s. Edukas ping lüüsile või avatud port serveris ei tõesta sellest midagi, sest mõlemad võivad olla tõesed, kui partneritevaheline edastamine on veel blokeeritud. Kirjuta need numbrid üles, kui tunnel on üleval, sest aadress, mille klient pärast uuesti ühendamist saab, võib olla teine.

Seotud artiklid