Obrasci za firewall traže TCP port, a očigledan unos je 50. Taj unos ne dozvoljava ništa, jer je ESP IP protokol broj 50, a brojevi protokola nisu portovi. Dva imenska prostora dijele male cijele brojeve i ništa drugo, a greška ostaje nevidljiva dok IKE ne završi i zaštićeni saobraćaj nikada ne stigne.

Dva imenska prostora koja dijele male brojeve

IP zaglavlje nosi polje protokola koje imenuje ono što slijedi: 6 za TCP, 17 za UDP, 1 za ICMP, 50 za ESP, 51 za AH. TCP ili UDP zaglavlje nosi brojeve portova, koji biraju proces na odredišnom hostu. Protokol 50 i TCP port 50 su nepovezane vrijednosti, ali dijaloški okvir ih može učiniti da izgledaju zamjenjivo.

Zato pravilo za prosljeđivanje portova ne može izraziti izvorni ESP. Ne postoji ESP odredišni port koji bi se proslijedio, a uređaj koji razumije samo pravila o portovima nema nikakav rječnik za taj paket. Ispravno pravilo umjesto toga imenuje IP protokol. Svaki dijalog o portovima je pogrešan alat za taj paket.

Zabuna ima i drugu polovinu. Kada je paket šifriran, sve unutar njega je neprozirno, uključujući TCP zaglavlje izvorne veze. Firewall koji pregleda portove na tom paketu gleda vanjsko zaglavlje, koje u izvornom slučaju nema portove za pregled.

Izvorni ESP, zatim enkapsulirana alternativa

Izvorni ESP se prenosi direktno kao IP protokol, što je istovremeno efikasno i nezgodno. Efikasno je jer nema dodatnog zaglavlja, a nezgodno jer ga svaki uređaj koji vrši prevođenje adresa i portova ne može pratiti. NAT prolaz postoji da to riješi, tako što ESP paket umota u UDP kako bi prevodilac imao portove za prepisivanje.

Form on the wireHow it is identifiedWhat the firewall must permit
IKE negotiationUDP with a destination portUDP 500, and 4500 once traversal is detected
Native ESPIP protocol 50 in the outer headerThe protocol itself, with no port to name
ESP inside UDPUDP 4500 carrying an ESP payloadThe UDP port pair, which translation devices can track

Ova dva oblika su alternativne postavke istog kanala za podatke, a ne slojevi jednog. Dozvola izvornog ESP ne dozvoljava enkapsulirani oblik, a dozvola UDP 4500 ne dozvoljava izvorni saobraćaj, pa skup pravila mora odgovarati postavci, a ne slučajno pokrivati oboje.

I otkrivanje je ovdje važno. Krajnje točke biraju između oblika tokom pregovora, a promjena se obično dogodi kada se između njih otkrije NAT. Put koji se promijeni nakon uspostavljanja tunela može zato premjestiti saobraćaj u imenski prostor koji vaša pravila nikada nisu pokrivala.

Pročitajte koji oblik veza stvarno koristi

Pitajte krajnju točku umjesto da nagađate iz firewalla. Na Linuxu zapis stanja izvještava da li asocijacija koristi UDP enkapsulaciju i koji su portovi uključeni. Snimanje paketa odgovara na isto pitanje sa žice, i oboje je brže od čitanja skupa pravila i nade.

ip xfrm state | grep -A3 encap
tcpdump -ni any 'ip proto 50 or udp port 4500'

Prva naredba prikazuje tip enkapsulacije kada se koristi NAT prolaz, a ništa kada se ne koristi. Druga prikazuje koji od dva oblika stvarno prelazi interfejs, što rješava rasprave o konfiguraciji koja na papiru izgleda ispravno.

Suprotni dokaz pripada istom koraku. Pravilo koje prijavljuje nula podudaranja govori vam da paket nikada nije stigao do njega, a to je pitanje rutiranja ili selektora, a ne firewalla.

Zatim posebno potvrdite kontrolni kanal. IKE ima svoje portove i svoje dnevnike, a završen pregovor bez podataka je upravo ta podjela o kojoj je ovaj članak.

Napišite pravilo u ispravnom imenskom prostoru

Pravilo protokola i pravilo porta su različite instrukcije, pa alat mora izraziti onu koju mislite. U nftablesu je podudaranje protokola eksplicitno, a enkapsulirana alternativa dobija svoje UDP pravilo. Držite dva pravila jedno uz drugo da par bude vidljiv pri pregledu.

nft add rule inet filter input ip protocol esp accept
nft add rule inet filter input udp dport { 500, 4500 } accept

Ne širite nijedno pravilo da nadoknadite pogrešnu dijagnozu. Dozvola za sve za ESP protokol na svakom interfejsu, ili UDP dozvola od bilo čega do bilo čega, ispravlja simptom i uklanja kontrolu koju ste pokušavali postaviti. Uski podržani tok je gotovo uvijek dovoljan kada je oblik poznat.

Na kraju, držite slojeve ispravno kada tunel radi, a aplikacija ne. Paketi koji stižu na mrežni prolaz i dalje trebaju prosljeđivanje, povratnu rutu i politiku koja ih propušta, a nijedno od toga nije izraženo ESP pravilom. Port koji nedostaje objašnjava konkretan kvar, a ne svaki IPsec kvar. Držite ispravku pravila i provjeru rutiranja kao dva odvojena zaključka.

Zapišite oblik koji ste primijetili, pravilo protokola koje ste dodali i brojač koji ste vidjeli poslije. Tri reda, i sljedeća osoba može razlikovati grešku imenskog prostora od greške rutiranja za minutu umjesto za popodne.

Povezani članci