IKEv2 používa UDP 500 a 4500: ktorý z nich prenáša dáta?
Prvá výmena a cesta, ktorá prenáša dáta, nie sú ten istý tok. Skontrolujte oba porty a pamätajte, že natívny ESP je číslo protokolu, nie port.
Otvorenie UDP 500 vo firewalle umožní tunelu vyjednávať, a potom spojenie prestane prepúšťať prevádzku. Zoznam portov bol neúplný, nie nesprávny. IKEv2 začína na jednom sockete a v mnohých reálnych nasadeniach pokračuje na inom, pričom užitočné zaťaženie nemusí byť port vôbec. Čítanie fáz po poradí vysvetľuje, ktoré pravidlo chýba.
Dva porty, dve úlohy
IKEv2 začína výmenou kľúčov na UDP 500, kde sa strany autentizujú a vytvoria bezpečnostnú asociáciu pre tunel. Dátová cesta, ktorá nasleduje, je samostatná vec: môže to byť natívny ESP, čo je číslo IP protokolu, nie port, alebo prevádzka zapuzdrená do UDP na 4500. Rozlišovať ich pri kontrole firewallu znamená rozdiel medzi tunelom, ktorý vyjednáva, a tunelom, ktorý funguje. Jeden socket nesie riadenie a druhý užitočné zaťaženie.
Preto pravidlo povoľujúce len 500 vytvára najzmätenejší príznak v celej rodine protokolov: vyjednávanie uspeje a nič užitočné nenasleduje. Stav ukazuje protistranu, log ukazuje nadviazanú IKE SA a aplikácia napriek tomu vyprší. Chýbajúce povolenie patrí inému toku než tomu, ktorý práve uspel.
Prečo 4500 vôbec existuje
Mnohé zariadenia NAT nevedia preposielať iný protokol ako TCP alebo UDP a niektoré prepisujú adresy spôsobom, ktorý narúša kontrolu integrity ESP. Zapuzdrenie ESP do UDP rieši oba problémy za cenu ďalšej hlavičky a druhého portu, ktorý treba povoliť. Práve toto zapuzdrenie je dôvod, prečo druhý port vôbec existuje.
Keď sa zistí NAT, aj samotný IKE sa presunie na 4500, aby všetka prevádzka zdieľala jednu cestu cez prekladač. Štvorbytový marker, ktorý nie je ESP, odlišuje riadiace správy od dát na tomto sockete. Presun je rozhodnutie protokolu, nie preferencia správcu.
Kde sa mení zdrojový port
Prekladač môže prepísať zdrojový port klienta, takže tuple videný na serveri nezodpovedá tuple na klientovi. Pozrite sa na obe strany každého NAT skoku, než usúdite, že sa pravidlo ignoruje. Diagnostika len na klientovi môže dať pravidlo, ktoré vyzerá správne a napriek tomu zlyhá.
Implementácie s podporou MOBIKE môžu prejsť na 4500 aj bez zisteného NAT a niektoré nasadenia túto cestu zámerne vynucujú. Vidieť 4500 je teda dôkaz rozhodnutia, nie dôkaz domáceho routera.
Overte oba toky na každej hranici
Prejdite tri hranice: sieť klienta, akýkoľvek medziľahlý firewall a server. Každá potrebuje toky, ktoré nasadenie dokumentuje, nie toky z článku o inom prípade.
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
sudo iptables -S | grep -E '500|4500|esp'
ip xfrm state
Riadok ESP v zozname firewallu je zhoda protokolu, takže pravidlo portu ho nikdy nepokryje. Ak operátor používa vlastný port, postupujte podľa dokumentovanej konfigurácie na oboch stranách, pretože klient nemôže na serveri vytvoriť poslucháča tým, že si vyberie známe číslo.
Zaznamenajte, kde sa vyjednávanie zastavilo a či bola nainštalovaná podriadená bezpečnostná asociácia, pretože táto dvojica oddeľuje zablokovanú cestu od chyby autentizácie alebo politiky. Potom test zopakujte so zapnutým overovaním servera, pretože dostupnosť nie je autentizácia. Ten posledný krok oddeľuje povolený port od dôveryhodnej protistrany.