Når UDP 500 åbnes i firewallen, kan tunnelen forhandle, og derefter holder forbindelsen op med at føre trafik. Portlisten var ufuldstændig, ikke forkert. IKEv2 starter på én socket og fortsætter i mange reelle installationer på en anden, mens nyttelasten slet ikke behøver at være en port. At læse faserne i rækkefølge forklarer, hvilken regel der mangler.

To porte, to opgaver

IKEv2 begynder med en nøgleudveksling på UDP 500, hvor parterne autentificerer sig og etablerer en sikkerhedsassociation til tunnelen. Den datasti, der følger, er en anden sag: det kan være native ESP, som er et IP-protokolnumer og ikke en port, eller trafik indkapslet i UDP på 4500. At holde dem adskilt i en firewallgennemgang er forskellen mellem en tunnel, der forhandler, og en tunnel, der virker. Den ene socket bærer styring, den anden nyttelast.

Derfor giver en regel, der kun tillader 500, det mest forvirrende symptom i hele protokolfamilien: forhandlingen lykkes, og intet nyttigt følger. Tilstanden viser en peer, loggen viser en etableret IKE SA, og applikationen får stadig timeout. Den manglende tilladelse hører til en anden strøm end den, der netop lykkedes.

Hvorfor 4500 overhovedet findes

Mange NAT-enheder kan ikke videresende andre protokoller end TCP eller UDP, og nogle omskriver adresser på måder, der ødelægger ESP's integritetskontrol. Indkapsling af ESP i UDP løser begge problemer, men koster et ekstra header og en anden port, der skal tillades. Den indkapsling er grunden til, at den anden port overhovedet findes.

Når NAT registreres, flytter IKE selv også til 4500, så al trafik deler én vej gennem oversætteren. En markør på fire byte, som ikke er ESP, adskiller styremeddelelser fra data på den socket. Skiftet er en protokolbeslutning, ikke en administratorens præference.

Hvor kildeporten ændrer sig

En oversætter kan omskrive klientens kildeport, så den tuple, der ses på serveren, ikke svarer til tupleen på klienten. Se på begge sider af hvert NAT-hop, før du konkluderer, at en regel ignoreres. Fejlfinding kun på klienten kan give en regel, der ser korrekt ud og alligevel fejler.

MOBIKE-kompatible implementeringer kan også skifte til 4500 uden registreret NAT, og nogle installationer fremtvinger den vej med vilje. At se 4500 er derfor bevis for en beslutning, ikke bevis for en hjemmerouter.

Kontroller begge strømme ved hver grænse

Gå gennem de tre grænser: klientens netværk, enhver mellemliggende firewall og serveren. Hver af dem har brug for de strømme, som installationen dokumenterer, ikke strømmene fra en artikel om et andet tilfælde.

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

ESP-linjen i en firewallliste er et protokolmatch, så en portregel dækker den aldrig. Hvis operatøren bruger en tilpasset port, skal du følge den dokumenterede konfiguration i begge ender, fordi en klient ikke kan oprette en listener på serveren ved at vælge et velkendt nummer.

Noter, hvor forhandlingen stoppede, og om en underordnet sikkerhedsassociation blev installeret, fordi det par adskiller en blokeret vej fra en autentificerings- eller politikfejl. Gentag derefter testen med serververifikation aktiveret, fordi tilgængelighed ikke er autentificering. Det sidste trin adskiller en tilladt port fra en betroet peer.

Relaterede artikler