Mengecualikan satu host dari rute default VPN Windows
Profil tunnel penuh memiliki rute default. Satu host memerlukan prefiks yang lebih sempit pada antarmuka fisik, yang ditambahkan lagi setelah setiap koneksi.
Laptop terhubung ke VPN kantor dan semuanya mengikutinya, termasuk halaman web sebuah printer dan satu intranet yang hanya menjawab di jaringan lokal. Rute buatan tangan memperbaikinya selama satu jam, lalu koneksi terputus, kembali, dan pengecualiannya hilang. Tidak ada yang salah dengan tunnel: Windows menyimpan satu tabel perutean, dan adaptor VPN menulis ulang bagiannya dari tabel itu pada setiap koneksi. Yang bertahan adalah semua yang berada di luar entri milik adaptor itu sendiri.
Entri mana yang diambil alih tunnel
Catat tabelnya dua kali, sekali dengan tunnel mati dan sekali dengan tunnel hidup, lalu bandingkan baris default. Saat profil mengklaim prefiks default, entri adaptor adalah baris terlebar dalam tabel, jadi pengecualian apa pun harus lebih sempit darinya. Ini aritmetika tentang panjang prefiks, bukan pernyataan tentang kepercayaan atau kebijakan. Ini juga menetapkan antarmuka mana yang harus disebut pengecualian.
Catat indeks antarmuka dan gateway lokal sebelum melanjutkan, karena keduanya berubah saat mesin bergabung ke jaringan lain. Perintah di bawah membacanya dari mesin, bukan dari ingatan.
route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.30
Perintah kedua melaporkan antarmuka dan hop berikutnya yang akan dipakai satu alamat itu sekarang, yang lebih baik daripada membaca empat puluh baris dan menebak. Jalankan sebelum dan sesudah terhubung dan Anda memiliki pasangan yang layak dilampirkan ke catatan perubahan. Kedua keluarannya memasok angka yang dipakai di sisa halaman ini.
Rute host menang karena kekhususan
Kecocokan prefiks terpanjang menentukan pemenang, jadi /32 melalui gateway fisik mengalahkan default melalui tunnel tanpa menyentuh tunnel. Lalu lintas ke alamat itu keluar melalui antarmuka lokal sementara semua yang lain mempertahankan jalurnya. Tunnel tetap membawa default dan berhenti menjadi satu-satunya kandidat untuk tujuan itu. Panjang prefiks adalah satu-satunya tuas yang ditawarkan tabel, dan untuk tugas ini itu cukup.
Kekhususan juga menyingkirkan jalan pintas yang jelas untuk mengecualikan nama domain, karena tabel mencocokkan alamat dan satu nama bisa terurai menjadi beberapa. Uraikan hostnya dulu, lalu putuskan alamat mana yang layak mendapat pengecualian.
Untuk semua di bawah, anggap ada koneksi bernama Office, gateway lokal 10.0.0.1 pada antarmuka 7, dan tujuan di 198.51.100.30. Ini adalah placeholder, bukan default, dan perintah di atas menghasilkan nilai yang benar-benar dipakai mesin Anda. Simpan catatan penggantian itu bersama perubahan agar pembaca berikutnya tidak menyalin angkanya.
Buat rutenya bertahan melewati sambung ulang berikutnya
Windows tidak menawarkan instruksi pengecualian pada koneksi VPN, jadi pengecualian harus hidup di antarmuka fisik tempat adaptor tidak akan menulis ulangnya. Cmdlet yang tampak seperti jawabannya melakukan sebaliknya: Add-VpnConnectionRoute memindahkan prefiks ke dalam tunnel, dan itulah kasus cermin di mana profil terbelah harus membawa satu tujuan dan membiarkan sisanya lokal. Menjangkaunya di sini menjamin lalu lintas yang ingin Anda tahan di luar justru masuk.
Bentuk manualnya satu perintah. Kelemahannya adalah perubahan jaringan, bukan sambung ulang.
route -p add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7
Itu bertahan dari reboot berkat -p dan mengirim satu alamat keluar melalui antarmuka 7 sementara tunnel membawa semua yang lain. Pindahkan laptop ke jaringan lain dan gateway serta indeksnya menjadi basi, sehingga entrinya gagal diam-diam. Catat siapa pemiliknya dan kapan harus dihapus.
Skrip koneksi adalah versi yang lebih kokoh, karena menambahkan pengecualian lagi setelah setiap koneksi alih-alih berharap entrinya bertahan. Dua baris di bawah termasuk ke dalam apa pun yang memulai tunnel, bukan ke skrip logon.
rasdial Office
route add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7
Apa pun yang menaikkan tunnel adalah tempat yang tepat untuk baris kedua, dan rasdial baru kembali setelah koneksi terbentuk, jadi rutenya mendarat di belakang entri milik adaptor. Jalankan lagi setelah bangun dari tidur, karena suspend bisa menjatuhkan rute dan membiarkan tunnel tetap naik. Jika tugasnya yang terbalik, mendorong satu prefiks ke dalam tunnel sementara sisanya tetap lokal, maka Add-VpnConnectionRoute adalah alat yang tepat.
Perutean tidak bisa memilih proses
Kadang kebutuhannya lebih sempit daripada tujuan: satu program harus mengambil jalur lokal sementara semua yang lain tetap di dalam tunnel. Perutean tidak bisa mengungkapkan itu, karena ia mencocokkan alamat, bukan proses. Pola yang bisa dipakai mendorong masalahnya ke peluncur.
Jauhkan profil dari rute default dan jalankan satu program itu terikat ke alamat antarmuka lokal, sehingga pengecualiannya menjadi perintah peluncuran dan tunnel mempertahankan apa yang sudah ditanganinya. Tidak ada yang berubah di tabel perutean, dan itulah sebabnya ini bertahan dari sambung ulang. Ini juga berarti tunnel tidak boleh memiliki rute default sejak awal, jadi ini desain yang berbeda, bukan tambalan pada yang sebelumnya.
Kelemahannya operasional, bukan teknis. Program harus selalu start melalui pembungkus, dan jika pengikatan hilang setelah bangun, ia diam-diam mengambil jalur apa pun yang ditawarkan tabel. Itu bisa ditoleransi untuk peramban yang Anda buka dengan sengaja dan tidak bisa diterima untuk apa pun yang tidak boleh pernah keluar dari tunnel.
Koneksi per pengguna juga tidak menyelesaikannya. Windows bisa membatasi koneksi ke akun sementara tabel perutean tetap berlaku untuk seluruh mesin, jadi koneksi terbatas akun yang memegang rute default tetap mengalihkan setiap proses di mesin, termasuk sesi lain. Cakupannya baru menjadi nyata ketika cakupan rutenya cocok dengan akunnya. Karena itu dua orang yang berbagi satu laptop berbagi satu tabel, dan yang kedua mewarisi tunnel apa pun yang dimulai yang pertama.
Pastikan pengecualian bertahan dari sambung ulang
Uji perubahannya seperti ia akan gagal: putuskan, sambungkan lagi, buka aplikasi baru, lalu minta satu alamat yang harus tetap lokal dan satu yang harus memakai tunnel. Bandingkan keduanya dengan Find-NetRoute dalam keadaan terhubung.
Jika prefiksnya hilang dari tabel setelah sambung ulang, ia hidup di objek yang salah, bukan di format yang salah. Pindahkan ke antarmuka fisik dan ulangi ujinya. Simpan kedua keluaran perintah bersama catatan perubahan, karena cuplikan keadaan yang berfungsi menjawab lebih banyak pertanyaan nanti daripada satu paragraf penjelasan. Orang berikutnya ingin tahu apa yang dihasilkan koneksi itu, bukan apa yang Anda maksudkan untuk dihasilkannya.