IKEv2 memakai UDP 500 dan 4500: mana yang membawa data?
Pertukaran pertama dan jalur yang membawa data bukan aliran yang sama. Periksa kedua port, dan ingat bahwa ESP asli adalah nomor protokol, bukan port.
Membuka UDP 500 di firewall membuat terowongan bisa bernegosiasi, lalu koneksi berhenti meneruskan lalu lintas. Daftar port itu tidak lengkap, bukan salah. IKEv2 dimulai pada satu soket dan dalam banyak penerapan nyata berlanjut pada soket lain, sementara muatannya bisa sama sekali bukan port. Membaca tahapannya berurutan menjelaskan aturan mana yang hilang.
Dua port, dua tugas
IKEv2 dimulai dengan pertukaran kunci pada UDP 500, tempat kedua pihak mengautentikasi diri dan membentuk asosiasi keamanan untuk terowongan. Jalur data berikutnya adalah perkara terpisah: bisa ESP asli, yang merupakan nomor protokol IP dan bukan port, atau lalu lintas yang dienkapsulasi dalam UDP pada 4500. Memisahkan keduanya dalam tinjauan firewall adalah perbedaan antara terowongan yang bernegosiasi dan terowongan yang berfungsi. Satu soket membawa kendali dan yang lain membawa muatan.
Itulah sebabnya aturan yang hanya mengizinkan 500 menghasilkan gejala paling membingungkan di seluruh keluarga protokol: negosiasi berhasil dan tidak ada yang berguna menyusul. Status menunjukkan satu peer, log menunjukkan IKE SA yang terbentuk, dan aplikasi tetap kehabisan waktu. Izin yang hilang milik aliran yang berbeda dari yang baru saja berhasil.
Mengapa 4500 ada sama sekali
Banyak perangkat NAT tidak dapat meneruskan protokol selain TCP atau UDP, dan sebagian menulis ulang alamat dengan cara yang merusak pemeriksaan integritas ESP. Enkapsulasi ESP di dalam UDP menyelesaikan kedua masalah, dengan biaya header tambahan dan port kedua yang harus diizinkan. Enkapsulasi itulah alasan port kedua ada sama sekali.
Setelah NAT terdeteksi, IKE sendiri juga pindah ke 4500 agar semua lalu lintas berbagi satu jalur melalui penerjemah. Penanda empat bita yang bukan ESP membedakan pesan kendali dari data pada soket itu. Peralihan itu keputusan protokol, bukan preferensi administrator.
Di mana port sumber berubah
Penerjemah dapat menulis ulang port sumber klien, sehingga tuple yang terlihat di server tidak cocok dengan tuple di klien. Lihat kedua sisi setiap lompatan NAT sebelum menyimpulkan bahwa sebuah aturan diabaikan. Penelusuran masalah hanya di klien dapat menghasilkan aturan yang tampak benar dan tetap gagal.
Implementasi yang mendukung MOBIKE juga dapat pindah ke 4500 tanpa NAT terdeteksi, dan sebagian penerapan sengaja memaksakan jalur itu. Melihat 4500 karena itu adalah bukti sebuah keputusan, bukan bukti router rumah.
Periksa kedua aliran di setiap batas
Telusuri tiga batas: jaringan klien, firewall perantara mana pun, dan server. Masing-masing memerlukan aliran yang didokumentasikan penerapan, bukan aliran dari artikel tentang kasus lain.
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
sudo iptables -S | grep -E '500|4500|esp'
ip xfrm state
Baris ESP dalam daftar firewall adalah kecocokan protokol, jadi aturan port tidak pernah mencakupnya. Jika operator memakai port khusus, ikuti konfigurasi yang didokumentasikan di kedua ujung, karena klien tidak dapat membuat pendengar di server dengan memilih nomor yang lazim.
Catat di mana negosiasi berhenti dan apakah asosiasi keamanan anak dipasang, karena pasangan itu memisahkan jalur yang terblokir dari kesalahan autentikasi atau kebijakan. Lalu ulangi uji dengan verifikasi server aktif, karena keterjangkauan bukan autentikasi. Langkah terakhir itu memisahkan port yang diizinkan dari peer yang tepercaya.