Rute blackhole vs kill switch VPN: apa yang dilakukan masing-masing
Rute blackhole membuang lalu lintas yang cocok dan memaksakan jalur tertutup saat gagal. Bandingkan cakupan dan titik butanya dengan kill switch berbasis penyaringan paket.
Sebuah paket meninggalkan laptop, tidak pernah mencapai gateway VPN, dan tidak ada penghitung firewall yang bergerak. Tabel rute sudah menentukan nasib paket: entri blackhole cocok dengannya dan kernel membuangnya sebelum antarmuka mana pun melihatnya. Perilaku itu berguna ketika sebuah tujuan harus gagal tertutup, tetapi itu tindakan perutean dengan cakupan sempit. Memperlakukannya sebagai kill switch lengkap adalah tempat desain salah.
Apa yang sebenarnya dicocokkan oleh tindakan buang
Pencarian rute memilih tabel, lalu prefiks cocok terpanjang di dalamnya. Rute blackhole adalah entri biasa yang tindakannya membuang, jadi hanya memengaruhi paket yang akan memilih entri itu setelah seluruh keputusan. Ubah tabel dengan aturan kebijakan, atau tambahkan prefiks yang lebih spesifik, dan pembuangan tidak lagi berlaku.
Karena itu cakupan blackhole tepat dan mudah dinyatakan: ia mencakup prefiks, di tabel, untuk keluarga alamat itu. Ia tidak mencakup tujuan yang akan dimenangkan tabel lain, dan tidak mencakup IPv6 hanya karena prefiks IPv4 dibuang.
ip route get menunjukkan keputusan sebelum Anda menerapkan apa pun, termasuk tabel dan jenis rute. Membaca keluaran itu lebih cepat daripada menyimpulkan dari permintaan yang gagal aturan atau prefiks mana yang berlaku.
Blackhole tidak sama dengan unreachable atau prohibit
Linux menawarkan tiga jenis rute mirip buang, dan ketiganya berbeda dalam apa yang diamati pengirim. Blackhole menjatuhkan paket tanpa balasan, jadi klien melihat waktu habis. Rute unreachable mengembalikan pesan ICMP unreachable, jadi koneksi gagal cepat dengan kesalahan host atau jaringan. Rute prohibit mengembalikan kesalahan larangan administratif, yang lebih dekat ke penolakan kebijakan yang disengaja.
Pilih perilaku yang ingin dilihat aplikasi. Pembuangan senyap cocok bila Anda tidak ingin mengungkap kebijakan, dan kesalahan langsung lebih baik bila pengguna perlu memahami mengapa tujuan tidak tersedia. Mencampur jenis di seluruh jaringan menghasilkan tiket dukungan yang menggambarkan kebijakan yang sama sebagai tiga gangguan berbeda.
Jangan menganggap setiap entri buang dapat dipertukarkan saat mendiagnosis koneksi. Teks kesalahan, waktu, dan tangkapan paket berbeda, dan jenis rute di tabel memberi tahu Anda mana yang sedang dilihat. manual ip-route mencantumkan jenis dan perilaku kesalahannya.
Bagaimana perbandingannya dengan kill switch
Kill switch adalah penyaringan paket: aturan firewall yang membuang lalu lintas keluar yang akan meninggalkan di luar terowongan. Rute blackhole adalah keputusan penerusan yang dibuat lebih awal di tumpukan. Keduanya dapat menghentikan lalu lintas, tetapi keduanya melihat hal berbeda dan melewatkan kasus berbeda.
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No tunnel route, direct egress |
Cakupan adalah tempat perbandingan menjadi penting. Firewall dapat mencocokkan pemilik, port, atau antarmuka dan memblokir aplikasi sementara titik akhir tetap terjangkau; rute tidak bisa. Sebaliknya, rute dapat mengirim seluruh prefiks ke pembuangan tanpa filter paket dimuat, yang berguna pada sistem minimal.
AllowedIPs WireGuard adalah perutean kunci kripto, bukan firewall. Ia memutuskan prefiks tujuan mana yang diterima ke antarmuka, dan profil yang hanya mencantumkan subnet terowongan membiarkan tujuan lain ke rute default biasa. Karena itu profil terowongan penuh memakai 0.0.0.0/0 dan karena itu wg-quick juga memasang aturan firewall bila bisa.
Jaga titik akhir terowongan di luar pembuangan
Alamat luar titik akhir harus tetap terjangkau melalui antarmuka fisik. Pembuangan yang juga menangkap alamat itu mencegah jabat tangan keluar, dan terowongan tidak pernah naik, yang tampak seperti kegagalan VPN alih-alih kebijakan perutean. Periksa rute ke titik akhir sebelum dan sesudah perubahan.
Akses manajemen termasuk dalam tinjauan yang sama. Jika satu-satunya jalur ke router atau klien adalah terowongan, pembuangan yang terlalu luas dapat mengunci Anda dari mesin yang seharusnya memungkinkan Anda menghapusnya. Simpan rute out-of-band yang terdokumentasi, konsol, atau pembalikan berjangka waktu.
IPv6 memerlukan entri dan tinjauannya sendiri. Desain yang membuang IPv4 ke blackhole sambil membiarkan IPv6 pada rute default membocorkan tepat lalu lintas yang dimaksudkan kebijakan untuk dihentikan, dan kesalahan itu tidak terlihat dalam uji yang hanya IPv4.
Terapkan bertahap dengan pengatur waktu dan pembalikan
Terapkan rute dengan penghapusan otomatis singkat agar kesalahan tidak bertahan setelah reboot. Perintah di bawah memakai rentang dokumentasi; ganti dengan prefiks yang benar-benar dibuang desain Anda:
sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8Perintah kedua harus melaporkan rute blackhole dan tabel asalnya. Perintah ketiga menjadwalkan penghapusan dalam satu menit, yang cukup waktu untuk mengonfirmasi kebijakan dan cukup singkat untuk pulih dari kesalahan pada host jarak jauh. Setelah perilaku terkonfirmasi, jadikan entri permanen melalui manajemen konfigurasi yang sama yang memiliki rute lain.
Tutup perubahan dengan mencatat prefiks, tabel, keluarga alamat, dan metode pembalikan. Pembuangan adalah pengecualian yang disengaja dalam desain perutean, dan insinyur berikutnya perlu tahu lalu lintas mana yang dimaksudkan untuk dihentikan sebelum memutuskan apakah itu masih berlaku.