VPN rangkaian rumah anda tiada apa-apa untuk dilakukan apabila komputer riba sudah berada pada rangkaian itu. Jalan pintas yang menggoda ialah perintah penyediaan yang keluar dengan kod bukan sifar; itu menggagalkan unit dan menjadikan setiap papan pemuka kelihatan rosak. systemd mempunyai arahan untuk tepat jenis keputusan ini, dan ia memisahkan langkauan yang disengajakan daripada kerosakan sebenar. Melakukannya dengan betul kebanyakannya bermakna menulis apa maksud setiap kod keluar.

Mengapa prasyarat yang gagal ialah bentuk yang salah

ExecStartPre menganggap keluar bukan sifar sebagai kegagalan permulaan, yang betul untuk perintah yang menyediakan perkhidmatan. Menggunakannya sebagai syarat menjadikan keputusan dasar tidak dapat dibezakan daripada kebergantungan yang rosak. ExecCondition wujud supaya unit boleh menolak untuk bermula tanpa ditanda sebagai gagal.

Perbezaan itu penting pada pukul tiga pagi, apabila tiada siapa mahu menyiasat unit merah yang berkelakuan seperti direka. Unit yang gagal juga menyembunyikan kerosakan sebenar di antara yang disengajakan.

Tulis kontrak kod keluar dahulu

Tulis kontrak sebelum skrip. Keluar sifar bermakna teruskan, keluar satu bermakna langkau perintah permulaan yang tinggal, dan keluar 255 bermakna syarat itu sendiri tidak dapat berjalan. Kod antara dua dan 254 biasanya juga bermakna langkau, yang mudah dilupakan apabila pembantu memulangkan kod ralat rawak. Drop-in di bawah melampirkan pembantu kepada nama unit sebenar.

[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpn

Periksa unit berkesan untuk tetapan SuccessExitStatus atau stop-post warisan sebelum menganggap semantik lalai. Kemudian uji setiap satu daripada tiga hasil dengan sengaja.

Petunjuk rangkaian bukan bukti lokasi

Alamat penghala yang boleh dicapai atau MAC yang dikenali boleh mencadangkan rangkaian yang betul, dan kedua-duanya tidak membuktikannya. Rangkaian lain boleh menggunakan semula alamat yang sama, data ARP mungkin lapuk, dan pengecam boleh ditiru. Anggap siasatan sebagai pengoptimuman yang konsisten dengan dasar, bukan sebagai hasil pengesahan.

Tentukan lebih awal apa maksud ketidakpastian. Memulakan VPN apabila tidak pasti adalah selamat bagi klien yang hanya akan gagal menyambung; melangkaunya apabila tidak pasti tidak selamat. Jadikan siasatan terhad, dan baca antara muka aktif dan bukannya menganggap yang pertama dalam senarai. Siasatan yang tergantung lebih buruk daripada yang menjawab tidak, kerana unit menunggunya.

Catat andaian itu di sebelah fail unit supaya orang seterusnya tahu apa yang dipercayai oleh pembantu. Komen di bahagian atas skrip ialah tempat paling murah untuk menyimpannya.

Kendalikan peralihan antara rangkaian

Syarat berjalan apabila perkhidmatan bermula, dan ia tidak dinilai semula kemudian. Unit yang dilangkau kekal dilangkau selepas komputer riba berpindah ke kedai kopi, dan terowong yang berjalan kekal aktif selepas komputer riba pulang ke rumah. Hubungkan kitaran hayat perubahan rangkaian dengan keputusan mula dan henti melalui mekanisme berasingan.

systemctl cat home-vpn.service

Uji empat kes: permulaan di rumah, permulaan di luar, siasatan yang tidak dapat berjalan, dan peralihan antara rangkaian semasa unit aktif. Kekalkan sebab langkauan kelihatan dalam jurnal supaya keputusan yang disengajakan tidak pernah kelihatan seperti kegagalan pengesahan. Rujukan perkhidmatan mendokumentasikan semantik keluar dan versi minimum.

Artikel berkaitan