IPsec pass-through di router rumah: apa yang sebenarnya dilakukannya
Sakelar itu meneruskan satu protokol melewati terjemahan alamat; ia tidak mendaftarkan router sebagai klien. Rekam pertukarannya, baca asosiasinya, lalu putuskan.
Sakelar pass-through router adalah konsesi penerusan untuk perangkat di belakangnya, bukan layanan VPN. Sakelar itu tidak mendaftarkan router sebagai klien, tidak menyimpan kredensial, dan tidak mendorong setiap perangkat di rumah melewati pintu keluar jarak jauh. Yang dilakukannya adalah membentuk bagaimana satu protokol melintasi terjemahan alamat dan filter. Setelah itu jelas, sakelar menjadi mudah diuji dan mudah dibiarkan mati.
Apa yang sebenarnya dilakukan router
Router berada di antara klien dan peer IPsec, meneruskan paket yang tidak pernah dirancang untuk dipahaminya. Vendor menerapkan fitur ini setidaknya dengan tiga cara: pembantu protokol yang melacak atau menulis ulang status, pengecualian filter yang menghentikan pembuangan ESP, atau mode kompatibilitas untuk klien lama. Label di antarmuka web jarang mengatakan mana dari ketiganya yang Anda punya. Hanya catatan firmware atau rekaman paket yang akan mengatakannya.
Pembantu juga bisa memperburuk keadaan. Bantuan yang ditulis untuk aliran lama kadang mengganggu klien yang sudah menangani terjemahan dengan benar. Saat klien modern bekerja dengan opsi mati, membiarkannya mati adalah konfigurasi yang lebih baik.
Pass-through tidak pernah memberikan kunci peer kepada router. Router tetap melihat alamat dan port luar, dan tetap menerapkan kebijakan penerusannya sendiri pada alamat itu.
NAT dan NAT-T menentukan jalur
IPsec tidak dibangun untuk bertahan melewati terjemahan alamat, jadi standar menambahkan pembungkus. NAT traversal membungkus ESP di dalam UDP, memungkinkan tabel NAT biasa membawa aliran itu, dan negosiasi menyetujui peralihan tersebut selama IKE (RFC 3948). IKE sendiri memakai UDP 500, sedangkan jalur terbungkus biasanya memakai UDP 4500.
Itulah sebabnya aturan firewall yang hanya mengizinkan protokol 50 tidak cukup pada jalur yang diterjemahkan. Memblokir 4500 merusak kasus yang menjadi alasan pembungkus itu ada, dan memblokir 500 menghentikan negosiasi sebelum terowongan apa pun terbentuk. Kedua arah penting, karena router yang melacak status biasanya baru mengizinkan balasan setelah melihat permintaan. Mencapai port tidak sama dengan menyelesaikan autentikasi, dan juga tidak sama dengan meneruskan lalu lintas yang dilindungi.
Susunan lama cukup berbeda sehingga panduan yang ditulis untuknya bisa menyesatkan. Saat klien menawarkan kedua mode, uji yang didokumentasikan peer Anda, bukan yang punya lebih banyak hasil pencarian.
Temukan tahap yang gagal
Pecah masalah menjadi negosiasi, autentikasi, perlindungan anak dan penerusan dalam, lalu kumpulkan bukti untuk satu tahap setiap kali. Mulai ulang yang mengubah hasil sementara hanya membuktikan bahwa ada status yang terlibat.
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
ip xfrm state list
ip xfrm policy list
Rekaman menunjukkan apakah pertukaran mencapai peer dan apakah balasan kembali, yang memisahkan masalah penyaringan dari masalah kredensial. Daftar status menunjukkan asosiasi keamanan yang terbentuk, jadi daftar kosong setelah percobaan menunjuk ke negosiasi, bukan perutean. Daftar kebijakan menunjukkan selektor mana yang terpasang, dan di situlah tujuan di luar subnet dikecualikan. Baca kedua keluaran xfrm sebelum menyentuh router, karena keduanya menggambarkan apa yang diyakini host, bukan apa yang diizinkan router.
Jika paket keluar dan tidak ada yang kembali, pindahkan rekaman ke sisi WAN router. Membandingkan kedua rekaman melokalisasi pembuangan tanpa menebak.
Matikan yang tidak Anda butuhkan
Satu laptop yang bekerja tidak membuktikan router melayani beberapa klien sekaligus. Setiap klien membuat status terjemahan dan negosiasinya sendiri, dan sebagian pembantu hanya melacak satu aliran. Uji jumlah sesi bersamaan yang benar-benar Anda butuhkan, dari jaringan yang benar-benar Anda pakai. Jika klien kedua gagal sementara yang pertama berjalan baik, itulah temuannya, bukan terowongan yang goyah.
Biarkan opsi menyala hanya ketika rekaman menunjukkan itu perlu. Catat versi firmware di samping hasilnya, karena perilaku ini berubah antar rilis. Tujuannya adalah terowongan klien yang Anda verifikasi, bukan sakelar yang Anda nyalakan dengan harapan.