Otevření UDP 500 ve firewallu umožní tunelu vyjednávat, a pak spojení přestane propouštět provoz. Seznam portů byl neúplný, ne špatný. IKEv2 začíná na jednom socketu a v mnoha reálných nasazeních pokračuje na jiném, zatímco užitečné zatížení vůbec nemusí být port. Čtení fází popořadě vysvětluje, které pravidlo chybí.

Dva porty, dva úkoly

IKEv2 začíná výměnou klíčů na UDP 500, kde se strany autentizují a vytvoří bezpečnostní asociaci pro tunel. Datová cesta, která následuje, je samostatná věc: může to být nativní ESP, což je číslo IP protokolu, nikoli port, nebo provoz zapouzdřený do UDP na 4500. Rozlišovat je při kontrole firewallu znamená rozdíl mezi tunelem, který vyjednává, a tunelem, který funguje. Jeden socket nese řízení a druhý užitečné zatížení.

Proto pravidlo povolující jen 500 vytváří nejmatoucnější symptom v celé rodině protokolů: vyjednávání uspěje a nic užitečného nenásleduje. Stav ukazuje protistranu, log ukazuje navázanou IKE SA a aplikace přesto vyprší. Chybějící povolení patří jinému toku než tomu, který právě uspěl.

Proč 4500 vůbec existuje

Mnohá zařízení NAT neumí předávat jiný protokol než TCP nebo UDP a některá přepisují adresy způsobem, který narušuje kontrolu integrity ESP. Zapouzdření ESP do UDP řeší oba problémy za cenu další hlavičky a druhého portu, který je třeba povolit. Právě toto zapouzdření je důvodem, proč druhý port vůbec existuje.

Jakmile je zjištěn NAT, přesune se i samotný IKE na 4500, aby veškerý provoz sdílel jednu cestu přes překladač. Čtyřbajtový marker, který není ESP, odlišuje řídicí zprávy od dat na tomto socketu. Přesun je rozhodnutí protokolu, nikoli preference správce.

Kde se mění zdrojový port

Překladač může přepsat zdrojový port klienta, takže tuple viděný na serveru neodpovídá tuple na klientovi. Podívejte se na obě strany každého NAT skoku, než usoudíte, že se pravidlo ignoruje. Diagnostika jen na klientovi může dát pravidlo, které vypadá správně a přesto selhává.

Implementace s podporou MOBIKE mohou přejít na 4500 i bez zjištěného NAT a některá nasazení tuto cestu záměrně vynucují. Vidět 4500 je tedy důkaz rozhodnutí, ne důkaz domácího routeru.

Ověřte oba toky na každé hranici

Projděte tři hranice: klientskou síť, jakýkoli mezilehlý firewall a server. Každá potřebuje toky, které nasazení dokumentuje, ne toky z článku o jiném případě.

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

Řádek ESP v seznamu firewallu je shoda protokolu, takže pravidlo portu jej nikdy nepokryje. Pokud operátor používá vlastní port, postupujte podle dokumentované konfigurace na obou stranách, protože klient nemůže na serveru vytvořit posluchače tím, že zvolí známé číslo.

Zaznamenejte, kde se vyjednávání zastavilo a zda byla nainstalována podřízená bezpečnostní asociace, protože tato dvojice odděluje zablokovanou cestu od chyby autentizace nebo politiky. Poté test zopakujte s povoleným ověřováním serveru, protože dostupnost není autentizace. Tento poslední krok odděluje povolený port od důvěryhodné protistrany.

Související články