Prečo IKEv2 na Androide nefunguje na neštandardnom porte UDP
Natívny formulár IKEv2 prijíma adresu, nie port. Overte, že ho klient podporuje, nastavte oba porty servera a potom sa pozrite na rámcovanie a záznamy.
Brána odpovedá na IKEv2 na UDP 4443 z nejakého dôvodu, profil má pole s názvom Server, zadáte názov hostiteľa a port a telefón hlási, že sa k serveru nedostane alebo nedokáže preložiť adresu. Nič sa neblokuje. Natívny formulár v Androide očakáva hostiteľa a to isté platí vo Windows. Vlastný port je schopnosť klienta skôr, než je nastavením servera, a len niektorí klienti vám ho dovolia vyjadriť. Prejdite tri časti poporiadku: čo klient dokáže povedať, na čom server počúva a či oba konce rámcujú pakety rovnako.
Čo telefón skutočne odoslal
Reťazec host:port v poli určenom pre názov sa preloží ako názov. Prekladač nevrátí pre vpn.example.net:4443 nič a chyba, ktorú vidíte, je zlyhanie prekladu názvu alebo nedostupnosti, nie vypršanie času na porte. Na tomto rozdiele záleží, pretože opakovanie s kratším názvom alebo inou sieťou nikdy neopraví reťazec, ktorý formulár nevie spracovať.
Natívny profil IKEv2 v Androide je rovnako ako vstavaný klient Windows VPN pevne viazaný na štandardné porty IKE. Ani jeden nevykazuje pole portu a žiadne úpravy profilu ho nepridajú. Ak poslucháč operátora skutočne beží na 4443, vstavaný klient je nesprávny nástroj, nie nesprávne nastavený.
Použite klienta, ktorý port vykazuje
Klient strongSwan pre Android dokumentuje konfigurovateľný port servera v pokročilom nastavení profilu, a preto sa objavuje takmer v každom funkčnom recepte na tento návrh. Táto podpora patrí tomu klientovi: iná aplikácia IKEv2 alebo dodávateľská odnož tej istej aplikácie nemusí rovnaké pole vykazovať, aj keď to základný démon strongSwan podporuje.
Vyžiadajte od operátora celú sadu naraz: názov brány, port UDP, metódu overenia a identitu servera, ktorú má klient očakávať. Vlastný port nie je dôvod vypnúť kontrolu certifikátov alebo zmeniť protokoly. Zadajte port tam, kde ho očakáva nainštalovaný klient, a ak také pole nemá, odpoveďou je iný schválený klient, nie odhadnutá obchádzka.
Server má dva porty a oba musia súhlasiť
IKE sa začína na UDP 500 a prechod NAT zvyčajne presúva IKE a zapuzdrený ESP na UDP 4500. V strongSwane ide o samostatné nastavenia, takže server presunutý na jediný vlastný port musí oba zmeniť na rovnakú hodnotu:
plugins {
socket-default {
port = 4443
port_nat_t = 4443
}
}
Keď jeden port slúži obom rolám, musí démon na tom istom sockete rozlíšiť IKE od ESP v UDP, čo robí pomocou štvorbajtového markera, ktorý nie je ESP a predchádza správe IKE. Preto klient nemôže vyjednávať na vlastnom porte a potom ticho pokračovať na 4500, a preto fráza „stačí zmeniť port” skrýva požiadavku na rámcovanie.
Presmerovanie nie je poslucháč
Presmerovanie 4443 na bežný poslucháč IKE je režim zlyhania, ktorý vyzerá takmer úspešne. Prvá výmena dorazí, server odpovie a spojenie sa potom zasekne alebo pregeneruje kľúče do ničoho, pretože odpoveď vychádza z iného portu a neskoršia zapuzdrená prevádzka nikdy nezodpovedá stavu, ktorý oba konce vytvorili. Pravidlo, ktoré prepisuje cieľový port bez presunutia poslucháča, dáva presne tento polootvorený výsledok.
Cesta musí tiež povoliť UDP od konca ku koncu. Prechod TCP 443 cez hotelovú alebo operátorskú sieť nehovorí o IKEv2 na porte UDP nič, ani keď má rovnaké číslo. Tam, kde je povolený len TCP 443, vlastný port UDP neurobí z IKEv2 HTTPS a správnou odpoveďou môže byť iná prístupová cesta, nie ďalší experiment s portom.
Pri testovaní oddeľte tri fázy
Zachytávajte na serveri, kým sa klient pokúsi raz. Požiadavka, ktorá nikdy nedorazí, je otázka koncového bodu alebo firewallu; požiadavka, ktorá dorazí bez odpovede, je otázka poslucháča alebo pravidiel; odpoveď, po ktorej nasleduje ticho, je otázka rámcovania alebo identity.
tcpdump -ni eth0 -vv udp port 4443
Potom čítajte správu klienta, nie jeho točiaci sa indikátor. Chyba návrhu znamená, že sa algoritmy nezhodujú, zlyhanie overenia znamená, že sa nezhodujú identity alebo certifikáty, a opakované prenosy bez odpovede znamenajú, že na tom porte nič neodpovedá. Testujte jednu fázu po druhej a medzi pokusmi meňte jedno pole; dokumentácia strongSwanu k prechodu NAT opisuje marker a správanie portu, ktoré vám zachytená prevádzka ukazuje.