ESP er IP-protokoll 50, ikkje TCP-port 50: kva du må tillate
Protokollnummer og portnummer er ulike namnerom. Ei regel for TCP-port 50 tillèt ingenting, og NAT-traversering flyttar ESP til UDP 4500.
Brannmurskjema spør etter ein TCP-port, og det opplagde svaret er 50. Det svaret tillèt ingenting, fordi ESP er IP-protokoll nummer 50, og protokollnummer er ikkje portar. Dei to namneromma deler små heiltal og ingenting anna, og feilen er usynleg til IKE er ferdig og den verna trafikken aldri kjem fram.
To namnerom som deler små tal
Ein IP-header ber eit protokollfelt som namngjev det som kjem neste: 6 for TCP, 17 for UDP, 1 for ICMP, 50 for ESP, 51 for AH. Ein TCP- eller UDP-header ber portnummer, som vel ein prosess på målverten. Protokoll 50 og TCP-port 50 er urelaterte verdiar, men ein dialogboks kan få dei til å sjå utbytbare ut.
Det er grunnen til at ei videresendingsregel for portar ikkje kan uttrykkje innebygd ESP. Det finst ingen ESP-målport å videresende, og eit apparat som berre forstår portreglar, har ikkje noko ordtilfang for den pakken i det heile. Den rette regelen namngjev IP-protokollen i staden. Kvar portdialog er feil verktøy for den pakken.
Forvirringa har ei andre halvdel. Når pakken er kryptert, er alt inni han ugjennomsiktig, òg TCP-headeren til den opphavlege sambindinga. Ein brannmur som inspiserer portar i den pakken, ser på den ytre headeren, som i det innebygde tilfellet ikkje har nokon portar å inspisere.
Innebygd ESP, deretter det innkapsla alternativet
Innebygd ESP blir boren direkte som ein IP-protokoll, noko som er like effektivt som det er upraktisk. Effektivt fordi det ikkje finst nokon ekstra header, og upraktisk fordi ingen eining som omset adresser og portar kan følgje det. NAT-traversering finst for å løyse dette, ved å pakke ESP-pakken inn i UDP slik at omsetjaren har portar å skrive om.
| Form on the wire | How it is identified | What the firewall must permit |
|---|---|---|
| IKE negotiation | UDP with a destination port | UDP 500, and 4500 once traversal is detected |
| Native ESP | IP protocol 50 in the outer header | The protocol itself, with no port to name |
| ESP inside UDP | UDP 4500 carrying an ESP payload | The UDP port pair, which translation devices can track |
Dei to formene er alternative utplasseringar av same datakanal, ikkje lag av éin. Å tillate innebygd ESP tillèt ikkje den innkapsla forma, og å tillate UDP 4500 tillèt ikkje innebygd trafikk, så eit regelsett må samsvare med utplasseringa i staden for å dekkje begge ved eit uhell.
Oppdaging er òg viktig her. Endepunkta vel mellom formene under forhandlinga, og bytet skjer vanlegvis når ein NAT blir oppdaga mellom dei. Ein rute som endrar seg etter at tunnelen er etablert, kan difor flytte trafikken til eit namnerom reglane dine aldri dekte.
Les kva form sambindinga faktisk brukar
Spør endepunktet i staden for å gjette frå brannmuren. På Linux rapporterer tilstandsoppføringa om assosiasjonen brukar UDP-innkapsling og kva portar som er involverte. Ein pakkefangst svarar på det same spørsmålet frå leidningen, og begge er raskare enn å lese eit regelsett og håpe.
ip xfrm state | grep -A3 encap
tcpdump -ni any 'ip proto 50 or udp port 4500'
Den første kommandoen viser ein innkapslingstype når NAT-traversering er i bruk, og ingenting når han ikkje er det. Den andre viser kva av dei to formene som faktisk passerer grensesnittet, og det avgjer diskusjonar om ein konfigurasjon som ser rett ut på papiret.
Motprov høyrer heime i same trinn. Ei regel som rapporterer null treff, fortel deg at pakken aldri nådde henne, og det er eit ruting- eller selektorspørsmål, ikkje eit brannmurspørsmål.
Stadfest deretter kontrollkanalen separat. IKE har sine eigne portar og sine eigne loggar, og ei fullført forhandling utan data er nøyaktig den delinga denne artikkelen handlar om.
Skriv regelen i rett namnerom
Ei protokollregel og ei portregel er ulike instruksjonar, så verktøyet må uttrykkje den du meiner. I nftables er protokolltreffet eksplisitt, og det innkapsla alternativet får si eiga UDP-regel. Hald dei to reglane ved sida av kvarandre slik at paret er synleg i gjennomgangen.
nft add rule inet filter input ip protocol esp accept
nft add rule inet filter input udp dport { 500, 4500 } accept
Ikkje utvid nokon av reglane for å kompensere for ein feildiagnose. Ei tillat-alt for ESP-protokollen på kvart grensesnitt, eller ei UDP-tillating frå kvar som helst til kvar som helst, rettar eit symptom og fjernar kontrollen du prøvde å setje opp. Den smale støtta flyten er nesten alltid nok når forma er kjend.
Til slutt, hald laga rett når tunnelen verkar og applikasjonen ikkje. Pakkar som kjem til gatewayen treng framleis videresending, ein returrute og ein policy som slepp dei inn, og ingen av desse blir uttrykte av ei ESP-regel. Den manglande porten forklarar ein bestemt feil, ikkje kvar IPsec-feil. Hald reglerettinga og rutingkontrollen som to separate konklusjonar.
Noter forma du observerte, protokollregelen du la til, og teljaren du såg etterpå. Tre linjer, og neste person kan skilje ein namneromsfeil frå ein rutingfeil på eitt minutt i staden for ein ettermiddag.