Anda menghubungkan terowongan, menjalankan ip route, dan gateway default asli masih ada di sana. Pikiran berikutnya adalah klien gagal mengambil alih rute, jadi Anda menghapus rute default secara manual dan kehilangan konektivitas sepenuhnya. Entri itu memang seharusnya tetap ada. Dengan redirect-gateway def1, OpenVPN memasang dua rute yang lebih spesifik yang mengalahkan rute default biasa alih-alih menggantikannya. Gateway lama tetap ada dan berhenti membawa lalu lintas yang Anda uji.

Apa yang sebenarnya dilakukan def1

Flag itu menambahkan 0.0.0.0/1 dan 128.0.0.0/1, keduanya mengarah ke terowongan. 0.0.0.0/1 mencakup setiap alamat yang oktet pertamanya 0 sampai 127, dan 128.0.0.0/1 mencakup 128 sampai 255, sehingga setiap tujuan IPv4 punya kecocokan yang lebih spesifik daripada rute default lama. Panjang prefiks, bukan metrik, yang menentukan rute mana yang menang.

Membiarkan rute default asli di tempatnya adalah hal yang disengaja. Klien tidak perlu mengingat apa yang digantikannya, dan klien tidak menulis ulang rute yang membawa koneksinya sendiri ke server VPN. Saat memutus koneksi, klien menghapus dua setengah rute itu dan tabel kembali seperti semula.

Mengapa /1 dan bukan /0

Perutean memilih prefiks cocok terpanjang, bukan metrik terendah, jadi /1 mengalahkan /0 apa pun kata metrik rute default. Kedua bagian ada karena satu /1 hanya menutupi separuh ruang; bila hanya 0.0.0.0/1 yang ada, semua dari 128.0.0.0 ke atas tetap mengikuti rute default lama, yang menghasilkan gejala membingungkan ketika sebagian situs berfungsi dan sebagian lain tidak.

Menaikkan atau menurunkan metrik rute default lama tidak mengubah apa pun, dan rute default dengan metrik lebih rendah di antarmuka lain juga tidak mencuri lalu lintas. Panjang prefiks yang menentukan lebih dulu, dan hanya prefiks yang sama yang beralih ke metrik.

Baca tabel perutean yang sebenarnya

Host yang terhubung dapat menampilkan ketiga entri sekaligus, dengan terowongan membawa kedua bagian dan gateway asli masih terdaftar. Alamat-alamat itu contoh, bukan konfigurasi untuk disalin, karena nama antarmuka, topologi terowongan, dan rute tambahan berbeda menurut platform dan klien.

default via 192.168.50.1 dev wlan0
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0

Yang penting adalah hubungannya: dua bagian spesifik di atas satu rute default umum. Baris gateway lama tetap ada karena tidak ada yang menggantikannya.

Periksa rute mana yang benar-benar diambil paket

Rute yang lebih spesifik tetap bisa menang: rute untuk rentang privat, subnet lokal atau alamat server VPN itu sendiri lebih panjang daripada /1. Terowongan memerlukan jalur luar ke servernya, dan mengirim koneksi itu kembali ke terowongan akan langsung memutusnya. Di Linux, tanyakan ke kernel alih-alih membaca tabel dengan mata: ip route get dengan tujuan yang Anda minati mencetak rute yang dipilih, antarmuka, dan sumbernya. Jika perutean berbasis kebijakan dikonfigurasi, periksa juga aturannya, karena sebuah aturan dapat memilih tabel lain sebelum tabel utama dilihat.

Jika hanya sebagian IPv4 yang berperilaku salah, pastikan kedua bagian sudah terpasang lalu cari pengecualian yang cocok dengan tujuan yang gagal. Menghapus rute default lama bukan solusi, dan itu menghilangkan rute yang dibutuhkan klien untuk membongkar terowongan dengan bersih.

Apa yang tidak dicakup def1

Dua entri IPv4 tidak mengatakan apa pun tentang IPv6: host dengan konektivitas IPv6 tetap memakai rute defaultnya sendiri sampai sesuatu mengalihkan keluarga itu secara terpisah, itulah sebabnya di jaringan dual-stack sebagian lalu lintas tampak melewati terowongan. Klien dan pengelola jaringan lain menerapkan perutean terowongan penuh secara berbeda, dan tabel mereka tidak akan cocok. Perilaku def1 yang dijelaskan di sini milik flag terdokumentasi OpenVPN, bukan setiap VPN di mesin.

Kill switch menjawab pertanyaan lain: apa yang dilakukan mesin saat terowongan putus. Prioritas rute menentukan ke mana lalu lintas pergi selama terowongan aktif; itu tidak menentukan apa yang dilakukan firewall sesudahnya. Urutan kerja: baca tabel, pastikan kedua bagian ada, jalankan ip route get untuk tujuan yang gagal, periksa aturan kebijakan, lalu lihat IPv6 secara terpisah. Biarkan rute default lama di tempatnya.

Artikel terkait