VPN na usmerjevalniku ali preusmerjanje vrat: kaj zmaga?
Preusmerjanje vrat lahko ukrade vrata poslušalcu VPN na usmerjevalniku. Preverite lastnika cilja, odstranite le nasprotujočo preslikavo in preizkusite vsako družino.
Usmerjevalnik sam zaključi VPN, staro pravilo preusmerjanja pa še vedno pošilja ista vrata UDP na stroj v lokalnem omrežju. Prava končna točka je lahko le ena od njiju, jedro pa med njima ne odloča. Prevod cilja prepiše paket, preden se uporabi lokalna storitev, zato proces VPN čaka na promet, ki je bil že poslan drugam. Naloga je odločiti, kdo ima vrata, nato pa uskladiti pravila.
Ena vrata, dva zahtevana lastnika
Strežnik VPN, ki teče v usmerjevalniku, potrebuje dovoljenje za vhod, ki vodi do njegove lastne vtičnice. Vnos NAT cilja za ista vrata vodi povsem drugam: na naslov v lokalnem omrežju in k odločitvi o preusmerjanju. To so različne končne točke z različnimi dnevniki in različnimi načini odpovedi. Običajen namig je, da ena družina naslovov deluje, druga pa ne, ker je bil preostali vnos napisan za eno družino in nikoli pregledan.
Pred urejanjem zapišite zahtevek: družina, zunanji naslov, transport, vrata in prevedeni cilj.
Prevod poteka pred lokalno kontrolo
NAT cilja spremeni cilj paketa v fazi pred usmerjanjem, preden jedro izbere med lokalno dostavo in preusmerjanjem. Ko cilj postane gostitelj v lokalnem omrežju, paket gre po poti preusmerjanja. Vhodna pravila za lastno vtičnico usmerjevalnika se nikoli ne pregledajo, zato dnevnik VPN ostane prazen, medtem ko odjemalec čaka.
Intended local entry:
WAN UDP 1194 -> router local socket -> input path
Conflicting old entry:
WAN UDP 1194 -> DNAT 192.168.50.10:1194 -> forward path
Ta vrstni red je celoten mehanizem, vmesniki naprav pa ga skrijejo za potrditvenimi polji, ne da bi ga spremenili. O poti paketa še vedno odloča lastnik cilja.
Če je gostitelj v lokalnem omrežju predvidena končna točka, je preusmerjanje pravilno in usmerjevalnik ne bi smel poslušati tudi na teh vratih.
Obdržite eno preslikavo in odstranite drugo
Naštejte vnose NAT za ta vrata in družino ter izberite tistega, ki ostane:
sudo iptables -t nat -S | grep 1194
sudo ss -lunp | grep :1194
Vnos TCP z isto številko je za odpoved UDP nepomemben in skupno obravnavanje vodi v brisanje napačnega pravila. Ko mora zmagati lokalna vtičnica, lastnik nasprotujoče preslikave odstrani ali prepiše prav ta vnos, dovoljenje za vhod za lastna vrata usmerjevalnika pa ostane na mestu. Nepovezana preusmerjanja, pot upravljanja in kopija nabora pravil bi morali spremembo preživeti.
Če VPN živi na ločenem gostitelju, je preusmerjanje pravi objekt. Storitev v vsebniku ali navidezni napravi lahko potrebuje objavljena vrata, tudi ko se škatli reče usmerjevalnik, zato sledite vtičnici in njenemu imenskemu prostoru, ne nalepki na ohišju.
Potrdite lastnika od zunaj
Preizkusite vsako družino posebej, ker povezava IPv6, ki se konča na usmerjevalniku, ne pove ničesar o povezavi IPv4, ki jo preusmerja zastarelo pravilo. Preberite dnevnik storitve, ki prejema, da vidite, katera končna točka je odgovorila, sporočilo odjemalca o uspehu pa obravnavajte kot šibek dokaz. Za smiseln preizkus je potreben nov tok. Pošljite sondo z zunanjega gostitelja z nc -zvu 203.0.113.7 1194 in preberite dnevnik zmagovalca z journalctl -u openvpn@server -n 20. Poslušalec usmerjevalnika sam zabeleži povezavo, gostitelj v lokalnem omrežju pa jo v svoji storitvi.
Sledenje povezavam drži obstoječe tokove na njihovi prvotni preslikavi, zato lahko vzpostavljena seja preživi pravilo, ki ste ga pravkar popravili.
Ko predvidena končna točka odgovori s svojimi običajnimi preverjanji identitete, preizkusite zasebni vir za tunelom. Doseči zunanjega poslušalca je le prvi skok; notranje usmerjanje in avtorizacija aplikacije sta ločena izida.