Slik pakker NAT-traversal ESP inn i UDP
ESP har ingen porter, så NAT-traversal pakker det inn i UDP på 4500. Kontroller kontrollutvekslingen og den innkapslede datastien som to separate trinn.
To klienter bak samme ruter snakker med én IPsec-gateway, og den ene faller stadig ut mens den andre holder seg oppe. Native ESP er IP-protokoll 50 uten porter, så en oversetter har ingenting å feste en mapping på når flere klienter deler én adresse. NAT-traversal lukker dette gapet ved å pakke ESP inn i UDP på 4500, og den headeren forklarer de fleste av symptomene som følger. Den peker også på enheten som må endres.
Hvorfor dataplanet flytter til port 4500
Under oppsettet sammenligner IKEv2 adressene og portene som hver side tror den bruker, ved å utveksle hasher i NAT-detekteringsvarslene sine. Når hashene ikke stemmer, sitter det en oversetter et sted på veien, og begge parter flytter den beskyttede trafikken til UDP-innkapsling. Derfor ser en økt som møtte en oversetter annerledes ut enn en som ikke gjorde det.
Innpakningen er en konvolutt, ikke en protokollendring: ESP beholder headeren, integritetskontrollen og krypteringen, og UDP leverer bare portene oversetteren trenger. Port 500 bærer IKE-utvekslingen; 4500 bærer de innkapslede dataene etter detekteringen, og ofte også de senere IKE-meldingene. Ingen av portene gjør flyten til en TCP-forbindelse, en antakelse som villeder de fleste som leser en opptak.
Kontroller de to trinnene i rekkefølge
Bevis først kontrollutvekslingen, deretter datastien, og hold de to adskilt i notatene dine. Et opptak som viser trafikk på 500 og aldri på 4500 betyr vanligvis at datastien er filtrert, så rettelsen hører hjemme i brannmurregelen og ikke i klienten.
Overvåk begge portene med tcpdump -ni any 'udp port 500 or udp port 4500', og les oversettelsestabellen på ruteren mens en økt er aktiv. Tabellen viser kildeporten gatewayen faktisk vil se, og et opptak på laptopen er uenig med vilje: laptopen tror 500 mens gatewayen ser 4500 med en oversatt kildeport, og begge har rett. Den samme flyten, før og etter oversettelse:
client 192.0.2.10:500 -> router 203.0.113.7:62000 -> gateway 198.51.100.9:4500
Symptomer innpakningen forklarer, og to den ikke forklarer
En ruter som tillater kontrollutvekslingen og blokkerer de innkapslede dataene gir rapporten om at tunnelen er oppe, men at ingenting går gjennom. Mappingstabeller utløper, så en inaktiv økt trenger keepalive-trafikk som partene sender med vilje, og disse pakkene er ikke helsesjekker. Når flere klienter bak én gateway feiler samtidig, undersøk oversettelsen til den gatewayen og enhver gammel passthrough-funksjon. Innpakningen forklarer ikke et program som feiler hos alle klienter etter at tunnelen er oppe, eller en sertifikatadvarsel på en blokkeringsside; begge ligger over dette laget.
Les mappingstabellen for to klienter samtidig: hvis begge viser samme oversatte port, skiller enheten dem ikke slik gatewayen krever. En passthrough-modus som gir native ESP til bare én vert, tilsvarer ikke å betjene flere oversatte klienter, selv om leverandører beskriver begge som IPsec-vennlige. Dobbelt NAT legger til et mapping-lag og enda et utløpspunkt, men det bryter ikke utgående forbindelser automatisk.
Keepalive-trafikk fortjener sin egen linje i driftshåndboken, fordi det er den som holder svarstien åpen gjennom inaktive perioder. Aktiver den der leverandøren dokumenterer det, og kontroller den først når en økt dør etter minutters stillhet i stedet for ved første bruk.
Endre eieren av mappingen, og test på nytt
Følg de støttede NAT-traversal-innstillingene på begge parter i stedet for å gjette på en port. Å redigere den lokale kildeporten på én klient kan ikke endre tjenesten som lytter i den andre enden, og det ødelegger vanligvis mappingen som allerede er bygget. Hvis klienten sitter bak en enhet du ikke kontrollerer, tilhører endringen eieren av den.
Etter enhver endring, gjenta begge trinnkontrollene og bekreft at en datapakke passerer, ikke bare at statusskjermen ble grønn. Hold tuplene, utdataene fra mappingstabellen og regelendringen i ett notat, slik at neste person ikke starter på nytt fra kontrollutvekslingen. strongSwan-notatene om NAT-traversal dekker innkapslings- og keepalive-innstillingene bak begge trinnene.