Zakaj IKEv2 v Androidu ne deluje na nestandardnih vratih UDP
Izvorni obrazec IKEv2 sprejme naslov, ne vrata. Potrdite, da ga odjemalec podpira, nastavite obe vrati strežnika in nato preglejte uokvirjanje ter dnevnike.
Prehod odgovarja na IKEv2 na UDP 4443 z nekim razlogom, profil ima polje z imenom Server, vnesete ime gostitelja in vrata, telefon pa poroča, da ne doseže strežnika ali ne more razrešiti naslova. Nič ni blokirano. Izvorni obrazec v Androidu pričakuje gostitelja, in enako velja v Windows. Vrata po meri so zmožnost odjemalca, preden postanejo nastavitev strežnika, in samo nekateri odjemalci vam jih dovolijo izraziti. Pojdite skozi tri dele po vrsti: kaj lahko odjemalec pove, na kaj posluša strežnik in ali oba konca uokvirjata pakete enako.
Kaj je telefon dejansko poslal
Niz host:port v polju, namenjenem imenu, se razreši kot ime. Razreševalnik ne vrne ničesar za vpn.example.net:4443, napaka, ki jo vidite, pa je napaka pri razreševanju imena ali nedosegljivosti, ne potek časa na vratih. Ta razlika je pomembna, ker ponovni poskus s krajšim imenom ali drugim omrežjem nikoli ne bo popravil niza, ki ga obrazec ne more razčleniti.
Izvorni profil IKEv2 v Androidu je, tako kot vgrajeni odjemalec Windows VPN, pritrjen na standardna vrata IKE. Noben od njiju ne prikazuje polja za vrata in nobeno urejanje profila ga ne doda. Če poslušalec operaterja res deluje na 4443, je vgrajeni odjemalec napačno orodje, ne pa napačno konfiguriran.
Uporabite odjemalca, ki prikazuje vrata
Odjemalec strongSwan za Android dokumentira nastavljiva vrata strežnika v naprednih nastavitvah profila, zato se pojavlja v skoraj vsakem delujočem receptu za to zasnovo. Ta podpora pripada temu odjemalcu: druga aplikacija IKEv2 ali ponudnikova različica iste aplikacije morda ne prikazuje istega polja, čeprav ga osnovni demon strongSwan podpira.
Operatorja prosite za celoten nabor naenkrat: ime prehoda, vrata UDP, metodo overjanja in identiteto strežnika, ki jo mora odjemalec pričakovati. Vrata po meri niso razlog za izklop preverjanja potrdil ali za menjavo protokolov. Vnesite vrata tja, kjer jih pričakuje nameščeni odjemalec, in če ta odjemalec nima takega polja, je odgovor drug odobren odjemalec, ne pa ugibana rešitev.
Strežnik ima dvoje vrat in oboja se morajo ujemati
IKE se začne na UDP 500, prehod NAT pa običajno premakne IKE in zapakirani ESP na UDP 4500. To sta v strongSwanu ločeni nastavitvi, zato mora strežnik, premaknjen na ena vrata po meri, oboje spremeniti na isto vrednost:
plugins {
socket-default {
port = 4443
port_nat_t = 4443
}
}
Ko ena vrata služijo obema vlogama, mora demon na isti vtičnici ločiti IKE od ESP-v-UDP, kar stori s štiribajtnim označevalcem, ki ni ESP in ki je pred sporočilom IKE. Zato se odjemalec ne more pogajati na vratih po meri in nato tiho nadaljevati na 4500, in zato stavek »samo zamenjajte vrata« skriva zahtevo po uokvirjanju.
Preusmeritev ni poslušalec
Preusmeritev 4443 na običajnega poslušalca IKE je način odpovedi, ki je videti skoraj uspešen. Prva izmenjava prispe, strežnik odgovori, nato pa povezava obstane ali na novo ustvari ključe v nič, ker odgovor odide z drugih vrat in poznejši zapakirani promet nikoli ne ustreza stanju, ki sta ga ustvarila oba konca. Pravilo, ki prepiše ciljna vrata, ne da bi premaknilo poslušalca, da natanko ta na pol odprt rezultat.
Pot mora dovoljevati tudi UDP od konca do konca. Da TCP 443 preide skozi hotelsko ali operaterjevo omrežje, ne pove ničesar o IKEv2 na vratih UDP, tudi z isto številko. Kjer je dovoljen samo TCP 443, vrata UDP po meri ne spremenijo IKEv2 v HTTPS, in pravi odgovor je lahko druga dostopna pot, ne pa še en poskus z vrati.
Pri preizkušanju ločite tri stopnje
Zajemajte na strežniku, medtem ko odjemalec poskusi enkrat. Zahteva, ki nikoli ne prispe, je vprašanje končne točke ali požarnega zidu; zahteva, ki prispe brez odgovora, je vprašanje poslušalca ali pravil; odgovor, ki mu sledi tišina, je vprašanje uokvirjanja ali identitete.
tcpdump -ni eth0 -vv udp port 4443
Nato berite sporočilo odjemalca in ne njegovega vrtečega se kazalca. Napaka predloga pomeni, da se algoritmi ne ujemajo, neuspeh overjanja pomeni, da se identitete ali potrdila ne ujemajo, ponovljena pošiljanja brez odgovora pa pomenijo, da na teh vratih nič ne odgovarja. Preizkusite eno stopnjo naenkrat in med poskusi spremenite eno polje; dokumentacija strongSwan o prehodu NAT opisuje označevalec in vedenje vrat, ki vam jih kaže zajem.