Ugniasienės formos prašo TCP prievado, ir akivaizdi reikšmė yra 50. Ši reikšmė nieko neleidžia, nes ESP yra IP protokolas numeris 50, o protokolo numeriai nėra prievadai. Abi vardų erdvės dalijasi tik mažais sveikaisiais skaičiais ir niekuo daugiau, o klaida lieka nematoma tol, kol IKE baigsis ir apsaugotas srautas taip ir neatvyks.

Dvi vardų erdvės, kurios dalijasi mažais skaičiais

IP antraštė turi protokolo lauką, kuris įvardija, kas eina toliau: 6 TCP, 17 UDP, 1 ICMP, 50 ESP, 51 AH. TCP arba UDP antraštė turi prievadų numerius, kurie parenka procesą paskirties hoste. Protokolas 50 ir TCP prievadas 50 yra nesusijusios reikšmės, bet dialogas gali padaryti jas atrodančias keičiamomis.

Štai kodėl prievadų peradresavimo taisyklė negali išreikšti vietinio ESP. Nėra ESP paskirties prievado, kurį būtų galima peradresuoti, o įrenginys, suprantantis tik prievadų taisykles, apskritai neturi žodyno tam paketui. Teisinga taisyklė vietoj to įvardija IP protokolą. Bet koks prievadų dialogas yra netinkamas įrankis tam paketui.

Sumišimas turi ir antrą pusę. Kai paketas užšifruotas, viskas jo viduje yra nepermatoma, įskaitant pradinio ryšio TCP antraštę. Ugniasienė, kuri tikrina to paketo prievadus, žiūri į išorinę antraštę, kuri vietiniu atveju neturi prievadų, kuriuos būtų galima tikrinti.

Vietinis ESP, tada inkapsuliuota alternatyva

Vietinis ESP perduodamas tiesiogiai kaip IP protokolas, o tai vienodai efektyvu ir nepatogu. Efektyvu, nes nėra papildomos antraštės, ir nepatogu, nes joks įrenginys, atliekantis adresų ir prievadų vertimą, negali jo sekti. NAT traversal egzistuoja būtent tam: jis įvynioja ESP paketą į UDP, kad vertėjas turėtų prievadus perrašymui.

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

Abi formos yra alternatyvūs to paties duomenų kanalo diegimai, o ne vieno sluoksniai. Leidus vietinį ESP, neleidžiama inkapsuliuota forma, o leidus UDP 4500, neleidžiamas vietinis srautas, todėl taisyklių rinkinys turi atitikti diegimą, o ne atsitiktinai apimti abu.

Aptikimas čia taip pat svarbus. Galiniai taškai nusprendžia tarp formų derybų metu, o perjungimas paprastai įvyksta, kai tarp jų aptinkamas NAT. Todėl maršrutas, kuris pasikeičia po tunelio sukūrimo, gali perkelti srautą į vardų erdvę, kurios jūsų taisyklės niekada neapėmė.

Perskaitykite, kurią formą ryšys iš tikrųjų naudoja

Klauskite galinio taško, o ne spėkite iš ugniasienės. Linux sistemoje būsenos įrašas praneša, ar asociacija naudoja UDP inkapsuliavimą ir kurie prievadai dalyvauja. Paketų fiksavimas atsako į tą patį klausimą iš laido, ir abu yra greitesni nei skaityti taisyklių rinkinį ir tikėtis.

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

Pirmoji komanda rodo inkapsuliavimo tipą, kai naudojamas NAT traversal, ir nieko, kai nenaudojamas. Antroji rodo, kuri iš dviejų formų iš tikrųjų kerta sąsają, ir tai užbaigia ginčus apie konfigūraciją, kuri popieriuje atrodo teisinga.

Priešingi įrodymai priklauso tam pačiam žingsniui. Taisyklė, pranešanti apie nulį atitikimų, sako, kad paketas jos niekada nepasiekė, ir tai yra maršrutizavimo arba selektoriaus klausimas, o ne ugniasienės.

Tada atskirai patvirtinkite valdymo kanalą. IKE turi savo prievadus ir savo žurnalus, o baigta deryba be duomenų yra būtent tas atskyrimas, apie kurį šis straipsnis.

Rašykite taisyklę teisingoje vardų erdvėje

Protokolo taisyklė ir prievado taisyklė yra skirtingos instrukcijos, todėl įrankis turi išreikšti tą, kurią turite omenyje. nftables protokolo atitikimas yra aiškus, o inkapsuliuota alternatyva gauna savo UDP taisyklę. Laikykite abi taisykles greta, kad pora būtų matoma peržiūros metu.

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

Nesiplebkite išplėsti nė vienos taisyklės, kad kompensuotumėte neteisingą diagnozę. Leidimas viskam ESP protokolui kiekvienoje sąsajoje arba UDP leidimas iš bet kur į bet kur ištaiso simptomą ir pašalina kontrolę, kurią bandėte nustatyti. Siauras palaikomas srautas beveik visada pakanka, kai forma žinoma.

Galiausiai, laikykite sluoksnius tiesiai, kai tunelis veikia, o programa ne. Į tinklą patenkantys paketai vis dar reikia peradresavimo, grįžimo maršruto ir politikos, kuri juos priima, ir nė vieno iš jų neišreiškia ESP taisyklė. Trūkstamas prievadas paaiškina konkretų gedimą, o ne kiekvieną IPsec gedimą. Laikykite taisyklės pataisymą ir maršrutizavimo patikrinimą kaip dvi atskiras išvadas.

Užrašykite formą, kurią pastebėjote, protokolo taisyklę, kurią pridėjote, ir skaitiklį, kurį matėte po to. Trys eilutės, ir kitas žmogus gali atskirti vardų erdvės klaidą nuo maršrutizavimo klaidos per minutę, o ne per pusdienį.

Susiję straipsniai