Borang firewall meminta port TCP, dan entri yang jelas ialah 50. Entri itu tidak membenarkan apa-apa, kerana ESP ialah protokol IP nombor 50 dan nombor protokol bukan port. Kedua-dua ruang nama berkongsi integer kecil sahaja dan tiada yang lain, dan kesilapan itu tidak kelihatan sehingga IKE selesai dan trafik yang dilindungi tidak pernah tiba.

Dua ruang nama yang berkongsi nombor kecil

Pengepala IP membawa medan protokol yang menamakan apa yang menyusul: 6 untuk TCP, 17 untuk UDP, 1 untuk ICMP, 50 untuk ESP, 51 untuk AH. Pengepala TCP atau UDP membawa nombor port, yang memilih proses pada hos destinasi. Protokol 50 dan port TCP 50 ialah nilai yang tidak berkaitan, tetapi kotak dialog boleh membuatnya kelihatan boleh ditukar ganti.

Itulah sebabnya peraturan pemajuan port tidak dapat menyatakan ESP asli. Tiada port destinasi ESP untuk dipajukan, dan peranti yang hanya memahami peraturan port langsung tidak mempunyai kosa kata untuk paket itu. Peraturan yang betul menamakan protokol IP. Mana-mana dialog port ialah alat yang salah untuk paket itu.

Kekeliruan ini mempunyai separuh kedua. Apabila paket disulitkan, segala yang di dalamnya legap, termasuk pengepala TCP sambungan asal. Firewall yang memeriksa port pada paket itu melihat pengepala luar, yang dalam kes asli tiada port untuk diperiksa.

ESP asli, kemudian alternatif yang dikapsulkan

ESP asli dibawa terus sebagai protokol IP, yang sama cekap dan sama menyusahkan. Cekap kerana tiada pengepala tambahan, dan menyusahkan kerana mana-mana peranti yang menterjemah alamat dan port tidak dapat menjejakinya. NAT traversal wujud untuk menyelesaikannya, dengan membalut paket ESP di dalam UDP supaya penterjemah mempunyai port untuk ditulis semula.

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

Kedua-dua bentuk ialah penggunaan alternatif bagi saluran data yang sama, bukan lapisan bagi satu. Membenarkan ESP asli tidak membenarkan bentuk berkapsul, dan membenarkan UDP 4500 tidak membenarkan trafik asli, jadi set peraturan mesti sepadan dengan penggunaan, bukan menutup kedua-duanya secara tidak sengaja.

Pengesanan juga penting di sini. Titik akhir memutuskan antara bentuk semasa rundingan, dan pertukaran biasanya berlaku apabila NAT dikesan antara mereka. Laluan yang berubah selepas terowong dibina boleh memindahkan trafik ke ruang nama yang tidak pernah diliputi oleh peraturan anda.

Baca bentuk mana yang sebenarnya digunakan oleh sambungan

Tanyakan kepada titik akhir daripada meneka dari firewall. Dalam Linux entri keadaan melaporkan sama ada persatuan menggunakan pengkapsulan UDP dan port mana yang terlibat. Tangkapan paket menjawab soalan yang sama dari wayar, dan kedua-duanya lebih pantas daripada membaca set peraturan dan berharap.

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

Perintah pertama menunjukkan jenis pengkapsulan apabila NAT traversal digunakan dan tiada apa-apa apabila tidak. Yang kedua menunjukkan bentuk mana antara keduanya yang benar-benar melintasi antara muka, dan itu menyelesaikan perdebatan tentang konfigurasi yang kelihatan betul di atas kertas.

Bukti berlawanan tergolong dalam langkah yang sama. Peraturan yang melaporkan sifar padanan memberitahu anda bahawa paket itu tidak pernah sampai kepadanya, dan itu ialah persoalan penghalaan atau pemilih, bukan firewall.

Kemudian sahkan saluran kawalan secara berasingan. IKE mempunyai portnya sendiri dan lognya sendiri, dan rundingan yang selesai tanpa data ialah tepatnya pemisahan yang dibincangkan artikel ini.

Tulis peraturan dalam ruang nama yang betul

Peraturan protokol dan peraturan port ialah arahan yang berbeza, jadi alat itu mesti menyatakan yang anda maksudkan. Dalam nftables padanan protokol adalah eksplisit, dan alternatif berkapsul mendapat peraturan UDP sendiri. Simpan kedua-dua peraturan bersebelahan supaya pasangan itu kelihatan semasa semakan.

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

Jangan meluaskan mana-mana peraturan untuk menampung diagnosis yang salah. Membenarkan semua untuk protokol ESP pada setiap antara muka, atau kebenaran UDP dari mana-mana ke mana-mana, membaiki gejala dan menghapuskan kawalan yang anda cuba tetapkan. Aliran sempit yang disokong hampir selalu mencukupi setelah bentuknya diketahui.

Akhir sekali, kekalkan lapisan dengan betul apabila terowong berfungsi dan aplikasi tidak. Paket yang tiba di get laluan masih memerlukan pemajuan, laluan balik dan dasar yang menerimanya, dan tiada satu pun daripada itu dinyatakan oleh peraturan ESP. Port yang hilang menjelaskan kegagalan tertentu, bukan setiap kegagalan IPsec. Kekalkan pembaikan peraturan dan pemeriksaan penghalaan sebagai dua kesimpulan berasingan.

Catatkan bentuk yang anda perhatikan, peraturan protokol yang anda tambah dan pembilang yang anda lihat selepas itu. Tiga baris, dan orang seterusnya boleh membezakan kesilapan ruang nama daripada kesilapan penghalaan dalam satu minit dan bukan satu petang.

Artikel berkaitan