Anda masuk lewat SSH ke host build, menjalankan klien VPN di sana, dan sesi berhenti menjawab. Tidak ada yang crash, dan tidak ada yang tampak salah konfigurasi dalam arti yang jelas. Klien memasang rute default, sehingga balasan ke workstation Anda kini keluar melalui tunnel, tempat alamat workstation Anda tidak dapat dirutekan. Bagian yang menarik adalah hasil ini dapat diprediksi, dan perbaikannya adalah satu rute yang ditulis sebelum klien dimulai. Misalkan sebuah server dengan satu kartu jaringan, gateway 192.0.2.254, dan administrator yang terhubung dari 203.0.113.9.

Catat jalurnya sebelum Anda mulai

ip route show default menyebut gateway dan antarmuka saat ini, sedangkan ip route get 203.0.113.9 menunjukkan antarmuka dan alamat sumber mana yang akan dipakai kernel untuk sesi Anda. Simpan kedua keluarannya. Setelah tunnel naik, kedua perintah itu seharusnya masih menggambarkan jalur fisik, dan jika keduanya menggambarkan tunnel, sesi sudah hidup dari waktu pinjaman.

Koneksi yang sudah terbentuk itulah yang penting, jadi jangan memvalidasi hanya dengan login baru. Sesi baru bisa berhasil sebentar melalui status yang tidak lagi dimiliki sesi lama.

Sematkan alamat di konfigurasi klien itu sendiri

Rute yang ditambahkan dengan tangan hilang saat reboot dan berlomba dengan pembaruan tabel klien itu sendiri, jadi letakkan pengecualian di tempat tabel dikelola. Di OpenVPN kata kunci net_gateway diselesaikan ke gateway yang ada sebelum tunnel, sehingga route 203.0.113.9 255.255.255.255 net_gateway menyimpan tepat satu alamat di luarnya. WireGuard memerlukan pendekatan berbeda karena wg-quick mengelola rute sendiri: setel Table = off dan tambahkan pengecualian di PostUp, dengan PostDown yang cocok untuk menghapusnya. Kedua bentuk menyatakan maksud yang sama, dan keduanya membatasi pengecualian pada satu alamat alih-alih melemahkan tunnel untuk semuanya.

Untuk IPv6 gagasan yang sama mengambil prefiks satu host, dan kasus transport yang dibungkus perlu diingat: jika koneksi luar tunnel itu sendiri berada di alamat tetap, alamat itu harus tetap di luar tunnel yang dibawanya, kalau tidak klien merutekan transportnya sendiri ke dalam dirinya.

Atau keluarkan tabel utama dari persamaan

Ketika beberapa layanan di host harus mempertahankan jalur normalnya, berhenti menyunting tabel utama dan beri klien tabelnya sendiri. Ruang nama jaringan dengan pasangan veth melakukannya dengan bersih: rute default klien berada di tumpukan lain dan hanya proses yang dijalankan di dalamnya yang memakai tunnel. Perutean kebijakan mencapai tempat serupa untuk satu tujuan, dengan mengirim lalu lintas yang cocok ke tabel khusus yang default-nya masih menunjuk ke gateway fisik. Salah satu pendekatan membuat tabel utama host tetap tanpa rute default baru, dan sifat itulah yang menjaga SSH tetap menjawab.

Keduanya lebih banyak mesin daripada satu rute host, dan keduanya layak ketika lebih dari satu hal di mesin harus bertahan melewati tunnel.

Anggap penyematan bisa gagal

Rute yang dikunci ke alamat publik Anda saat ini rusak pada saat penyedia Anda menetapkannya ulang. Server jarak jauh kemudian memerlukan jalur yang tidak bergantung pada alamat itu: konsol, antarmuka manajemen kedua, atau host lompat yang tetap di luar tunnel.

Dua pengaman memakan waktu sepuluh menit. Pengawas yang menghentikan klien jika login konfirmasi tidak muncul dalam beberapa menit mengubah penguncian menjadi keterlambatan, dan sesi SSH kedua yang dibiarkan terbuka selama perubahan membuktikan pengecualian bekerja saat tunnel naik. Keepalive saja tidak membantu di sini, karena jalurnya hilang bukan menganggur; itu hanya membuat kematian lebih mudah disadari.

Verifikasi dalam urutan yang penting

Hubungkan tunnel, pastikan rute ke alamat Anda masih keluar melalui gateway fisik, lalu buka sesi baru. Jika sesi baru berhasil dan sesi lama tetap mati, penyebabnya adalah pelacakan koneksi atau firewall stateful, bukan perutean, yang merupakan perbaikan berbeda.

Tulis alamat yang disematkan dan perintah yang membuktikannya ke catatan perubahan. Orang berikutnya yang menjalankan klien di host itu akan memerlukan keduanya, dan alamatnya mungkin sudah berubah saat itu.

Artikel terkait