Rute yang diketik setelah setiap koneksi menyelesaikan momennya, bukan minggunya. Di macOS, pilihan tahan lama biasanya prefiks yang disimpan bersama layanan VPN, karena layanan memasangnya ulang pada setiap koneksi dan menghapusnya saat layanan mati. Alternatifnya adalah route add sementara untuk pengujian dan hook koneksi untuk alamat yang baru diketahui setelah negosiasi.

Putuskan apakah rute milik layanan atau sesi

Tanyakan pada apa prefiks bergantung. Jika itu jaringan privat tetap di balik layanan VPN asli, rute milik layanan itu. Jika bergantung pada alamat rekan yang berubah tiap koneksi, hook atau tugas yang digerakkan status bisa menjadi pemilik yang lebih baik. Jika Anda hanya memeriksa jalur untuk lima menit ke depan, rute sementara sudah cukup.

Rute yang terikat layanan memiliki siklus hidup paling bersih. Ia muncul bersama layanan dan hilang saat layanan tidak terhubung, sehingga tidak bisa hidup lebih lama dari terowongan yang ditunjuknya. Sifat itu lebih bernilai daripada kenyamanan perintah satu baris.

Rute yang terikat sesi milik antarmuka, dan nomor itu berubah tanpa pemberitahuan. Penyambungan ulang bisa memberi terowongan nama utun berbeda dari sesi sebelumnya, yang mengubah perintah berkode keras menjadi rute yang tidak menunjuk apa pun atau, lebih buruk, terowongan lain.

Baca status rute dan layanan saat ini

Mulailah dari nama yang benar-benar dipakai sistem. Nama layanan di Pengaturan Jaringan adalah pengenal untuk perintah di bawah, dan tabel rute saat ini menunjukkan apa yang dipasang klien yang terhubung. Baca keduanya selagi terowongan aktif.

scutil --nc list
networksetup -listnetworkserviceorder
netstat -rn | head -30
route get 10.20.5.5

Pencarian itu menunjukkan gateway dan antarmuka mana yang akan dipilih kernel untuk alamat ini saat ini. Jika ia sudah memilih terowongan, prefiks sudah tercakup dan rute baru akan berlebihan. Jika ia memilih router lokal, terowongan kekurangan prefiks itu.

Catat alamat rekan saat terhubung. Alamat itu menjadi nilai gateway pada rute yang terikat layanan, dan biasanya merupakan tujuan yang ditampilkan untuk rute bawaan terowongan di netstat -rn.

Simpan prefiks dengan networksetup

Alat networksetup memasang rute tambahan ke layanan jaringan. Untuk layanan bernama OfficeVPN dan prefiks privat yang dicapai melalui rekan terowongan, bentuknya:

sudo networksetup -setadditionalroutes OfficeVPN 10.20.0.0 255.255.0.0 10.8.0.6
networksetup -getadditionalroutes OfficeVPN

Setiap triplet setelah nama layanan memberi tujuan, mask jaringan, dan rekan terowongan sebagai gateway. Satu panggilan dapat membawa beberapa prefiks, dan panggilan kosong menghapus daftar yang tersimpan. Pembaca adalah langkah verifikasi; jika daftarnya kosong, penetapan tidak berlaku pada layanan yang Anda maksud.

Gateway harus rekan terowongan, bukan router fisik. Rute yang menyebut gateway lokal mengirim prefiks privat keluar melalui antarmuka fisik, yang merupakan kegagalan awal dengan langkah tambahan. Rekan yang basi adalah alasan paling umum rute yang tampak benar tidak pernah membawa lalu lintas. Baca ulang rekan dari status terhubung alih-alih menyalin alamat dari catatan lama.

Gunakan route add hanya untuk uji

Rute langsung berguna untuk membuktikan prefiks bekerja sebelum dijadikan permanen. Bentuk antarmuka menghindari pencarian gateway:

sudo route -n add -net 10.20.0.0/16 -interface utun4

Rute hilang pada penyambungan ulang berikutnya dan bergantung pada nomor antarmuka yang ada hari ini. Itu menjadikannya diagnostik, bukan penerapan. Jika uji berhasil dan rute yang terikat layanan tidak, bandingkan dulu nilai gateway; itulah bidang yang paling sering salah.

Berhati-hatilah dengan saran yang mengganti rute bawaan VPN untuk memaksa perilaku pemisahan. Klien yang menegakkan terowongan penuh dapat memasang ulang rutenya setelah penyambungan ulang atau penyegaran kebijakan, sehingga perubahan manual dibatalkan diam-diam. Beberapa prefiks privat adalah masalah perutean; menjaga seluruh lalu lintas internet tetap lokal melawan kebijakan terowongan penuh adalah keputusan di sisi server.

Pilih hook hanya ketika alamat dinegosiasikan

Untuk tautan berbasis PPP seperti L2TP, macOS menjalankan /etc/ppp/ip-up setelah tautan terbentuk. Skrip menerima nama antarmuka serta alamat lokal dan jarak jauh yang dinegosiasikan, sehingga dapat menambahkan rute yang bergantung pada rekan yang diberikan server. Itulah tepat kasus yang tidak dapat diungkapkan rute layanan tetap.

IKEv2 dan klien vendor mungkin tidak memakai jalur PPP itu sama sekali, yang berarti skrip dapat diam sepanjang sesi. Bila itu terjadi, tugas launchd yang menanyakan scutil --nc status dan bertindak atas perubahan status adalah mekanisme yang setara, dengan sedikit jeda.

Hook apa pun yang Anda pakai, jadikan idempoten dan buat ia hanya menghapus rute yang dibuatnya sendiri. Skrip yang menghapus setiap rute yang menyebut terowongan pada akhirnya akan menghapus rute yang menjaga server VPN tetap terjangkau, dan koneksi akan putus begitu berhasil.

Akhiri dengan memeriksa tujuan privat, penjelajahan biasa, dan siklus penyambungan ulang atau tidur. Lalu periksa scutil --dns, karena resolusi nama adalah kebijakan terpisah dan rute yang bekerja tidak membuktikan nama privat teresolusi.

Artikel terkait