Dva kućna rutera, bez proslijeđenih portova, i VPN koji se ponekad ipak poveže. UDP to dozvoljava, jer će firewall propustiti paket koji može upariti s tokom koji je mašina već započela. To je uslovni trik, a ne funkcija, i uslove je lako navesti kad znate šta firewall poredi. Oni su i razlog zašto se identični profili ponašaju različito na različitim mrežama.

Poređenje koje firewall pravi

Svaki odlazni datagram stvara kratkotrajni zapis: izvorna adresa, izvorni port, odredišna adresa, odredišni port. Sve što stigne i poklapa se sa zapisom tretira se kao odgovor i propušta. Pravila za dolazni saobraćaj tu ne igraju nikakvu ulogu.

Dakle pitanje nije da li firewall pušta partnera unutra. Pitanje je da li paket partnera izgleda kao odgovor koji zapis čeka. Promijenite jedno polje tog četverodijelnog tuplea i paket postaje stranac. Zato se radna postavka može pokvariti kad se promijeni samo broj porta, i zato isti port može raditi na jednom ruteru, a na sljedećem ne.

Fiksirajte lokalni izvorni port i isti broj pojavit će se na obje strane razmjene. To je cijeli mehanizam i objašnjava zašto je trik krhak, a ne tajanstven.

Fiksiranje jednog porta na svakom kraju

Zadani UDP port OpenVPN-a je 1194, a lport postavlja izvorni port s kojeg šalje. Fiksirajte oba partnera i odlazni tuple svakog pokazivat će na port na kojem drugi sluša:

# peer A
lport 1194
remote 198.51.100.20 1194
# peer B
lport 1194
remote 203.0.113.10 1194

To radi samo dok nijedan ruter između njih ne prepisuje izvorni port. Kad se paketi pojave u snimku, a tunel ne ustane, prepisivanje je prvi osumnjičeni.

Gdje tuple prestaje da se poklapa

NAT koji mapira po odredištu daje svakom partneru drugačiji vanjski port. Adresa za koju je partneru rečeno da je koristi nije adresa koja do njega stiže, pa dolazni paket ne odgovara ničemu i tiho se odbacuje.

Operatersko prevođenje, naslagani NAT i randomizacija portova završavaju na isti način. Isto vrijedi za svaki međuuređaj koji prepisuje portove, a adrese ostavlja na miru.

Sa stream transportima je gore. TCP rukovanje prati se korak po korak, pa se VPN zasnovan na TCP-u ovako uopće ne može probiti i treba mu slušalac negdje na putu.

Jedna strana obično prva popusti

U praksi se dvije mreže rijetko ponašaju isto. Jedan ruter može davati predvidivo mapiranje, a drugi portove po odredištu, i rezultat je konfiguracija koja radi između dvije kuće, a pada s mobilne mreže. Izvještaji koji si proturječe obično opisuju dva različita para rutera. Nijedan autor nije u krivu i nijedan rezultat se ne generalizira.

Saznajte koja je strana ispustila paket prije nego što dirnete profile. Snimci s oba kraja rješavaju to u jednom pokušaju: datagrami koji napuste A i nikad ne stignu do B znače da je tok prepisan na putu, a datagrami koji stignu do B bez odgovora znače da ih firewall nije prihvatio kao povezane.

Dva partnera s javnim IPv6 adresama zaobilaze cijeli problem. Bez prevođenja nema se šta upariti, pa je dovoljno pravilo firewalla koje imenuje partnere i dizajn prestaje ovisiti o ponašanju rutera.

Kada prestati pokušavati

Host s javnom adresom je pouzdan odgovor. Može prekinuti tunel za oba partnera ili im jednostavno pomoći da otkriju trenutnu vanjsku adresu onog drugog, i oba aranžmana rade šta god NAT-ovi činili. Upravljani overlay daje istu koordinaciju ako politika to dozvoljava.

Nijednom od ovoga ne treba isključen firewall. Isključivanje zaštite da bi se dobila direktna veza odbacuje razlog zbog kojeg je direktni pokušaj bio privlačan i ostavlja mašinu otvorenom tokom cijelog testa.

Prvo isprobajte direktni aranžman, pa zabilježite šta ste vidjeli. Ponašanje NAT-a i snimak koji ga je pokazao vrijede više od para portova koji ste na kraju koristili, jer će sljedeća mreža biti drugačija. OpenVPN 2.6 priručnik dokumentuje lport i remote opcije od kojih ovo zavisi.

Povezani članci