Laluan VPN Mac tambahan perlukan pemilik, bukan skrip log masuk
Laluan yang ditambah sekali semasa log masuk bukan dasar sambungan semula. Beri awalan jauh seorang pemilik dan putuskan bagaimana ia muncul, berubah dan hilang bersama sambungan itu.
Mencapai awalan peribadi melalui VPN ialah keperluan yang mempunyai tempoh: ia kekal selagi sambungan itu boleh digunakan, dan ia berakhir apabila sambungan berakhir. Skrip log masuk tidak dapat menyatakan itu, kerana log masuk dan terangkatnya terowong ialah detik yang berbeza, dan terowong yang wujud semasa log masuk mungkin bukan yang membawa trafik seminit kemudian. Keputusan pertama bukanlah arahan mana yang hendak dijalankan. Ia ialah komponen mana yang memiliki awalan itu.
Awalan itu perlukan pemilik, bukan detik
Mulakan dengan menulis keperluan sebagai ayat bersubyek: capai 10.77.0.0/24 melalui VPN Pejabat selagi sambungan itu aktif. Ayat itu menamakan awalan, sambungan dan syarat, dan ia terus menolak dua pengganti popular: cangkuk log masuk dan nama antara muka seperti ppp0 atau utun2.
Nama antara muka diberikan semasa runtime dan tidak stabil antara sambungan semula. Cangkuk yang sepadan dengan nama yang dilihatnya minggu lalu sama ada tidak akan menyala atau menyala pada antara muka orang lain. Kedua-dua hasil kelihatan seperti pepijat penghalaan, bukan seperti andaian lapuk yang sebenarnya. Bantahan yang sama terpakai kepada mana-mana skrip yang bergantung pada nama yang hanya wujud selagi satu terowong tertentu aktif.
Gunakan sumber niat laluan yang disokong
Get laluan, profil terurus atau mekanisme laluan berdokumen milik klien pemilik ialah tempat yang betul, apabila mekanisme itu boleh menyatakan keperluan tersebut. Yang mana terpakai bergantung pada protokol dan pembekal, dan kunci tidak bergerak antara mereka, jadi nilai yang mengkonfigurasi profil OpenVPN tidak memberitahu anda apa-apa tentang klien L2TP atau IKEv2 asli.
| Mechanism | Can carry extra prefixes | Who owns the lifetime |
|---|---|---|
| Gateway-pushed routes | Often, if the gateway is configured for it | The connection |
| Managed profile settings | Depends on the client and profile format | The profile |
| Provider tunnel settings | Yes, as included and excluded routes | The provider process |
| Manual command | Yes, once | Nobody |
Bagi pembangun terowong paket, tetapan terowong IPv4 Apple mendedahkan laluan disertakan dan dikecualikan secara eksplisit, dan IPv6 mempunyai pasangannya. Ini ialah API yang digunakan oleh pembekal, bukan bukti bahawa setiap panel VPN asli menawarkan senarai laluan sewenang-wenangnya kepada pentadbir. Jika gabungan semasa tidak dapat menyatakan awalan yang anda perlukan, langkah seterusnya ialah laluan konfigurasi yang disokong oleh pengendali, bukan aplikasi lain yang dipasang dengan harapan ia berkelakuan lebih baik.
Jangka hayat termasuk pembersihan
Kadangkala pembantu luaran benar-benar diperlukan, dan ketika itulah «tambah laluan» ialah bahagian terkecil dalam tugasnya. Ia mesti tahu sambungan mana yang dilayaninya dan antara muka mana yang digunakan oleh sambungan itu, menunggu sehingga keadaan rangkaian yang berkaitan tenang, kekal idempoten apabila dijalankan dua kali berturut-turut, dan tidak membersihkan apa-apa yang tidak dipasangnya sendiri.
Fasal terakhir itulah yang menyakitkan. Pembantu yang memadam setiap laluan yang sepadan dengan awalan pejabat lambat laun akan memadam laluan yang tidak ditambahnya. Gangguan yang terhasil disalahkan pada klien VPN, kerana klien ialah bahagian yang dilihat oleh pengguna. Memutuskan apa yang dimiliki oleh pembantu sebelum menulisnya lebih murah daripada menjelaskan kemudian mengapa sesebuah subnet tempatan berhenti menjawab.
Perlumbaan sambungan semula
Bayangkan sambungan semula yang pantas. Sesi A jatuh, sesi B naik dan memasang laluannya, kemudian pembersihan tertangguh A akhirnya berjalan. Jika pembersihan itu membuang laluan mengikut awalan, ia turut membawa keadaan sah B, dan sambungan yang berfungsi sesaat lalu kini menghala ke tempat kosong.
Ini perlumbaan pemilikan, dan menambah tidur pada skrip hanya mengubah pihak mana yang menang. Penyelesaiannya ialah menjadikan pembersihan bersyarat kepada identiti: bandingkan antara muka dan sesi yang dipasang oleh pembantu dengan yang masih sah, dan buang hanya apabila sepadan.
Apa yang perlu diuji, dan apa yang laluan tidak boleh lakukan
Penerimaan mesti merangkumi empat peralihan: sambungan pertama, sambungan semula ke antara muka berbeza, percubaan sambungan yang gagal, dan pemutusan akhir. Selepas setiap satu, baca laluan yang benar-benar dipilih oleh sistem untuk alamat di sebelah jauh, bukan yang anda jangkakan.
route -n get 10.77.0.5
netstat -rn -f inet
Sertakan kes janggal dalam pusingan yang sama: IPv6 di tempat yang diperlukan, awalan tempatan yang bertindih dengan awalan jauh, dan laluan ke titik akhir VPN awam itu sendiri, yang mesti terus berfungsi selagi terowong aktif. Kemudian tuliskan apa yang bukan laluan. Ia memilih paket; ia tidak memberikan kebenaran di sebelah jauh dan tidak mencipta laluan balik, dan itu kekal sebagai keperluan berasingan dengan pemilik berasingan.
Hasil yang anda mahukan ialah awalan yang mengikut pemilik sambungan yang disokongnya melalui setiap peralihan, bukan arahan yang kebetulan berjaya sekali pada mesin tempat ia ditulis.