Ang hook ng pagtulog lamang ay hindi magbabalik ng VPN
Ang hook na lumalabas na may zero ay nagpapatunay lamang na tumakbo ang script. Ilagay ito pagkatapos ng network, gamitin ang tamang pagkakakilanlan, at tingnan kung karapat-dapat ang profile.
Maglagay ng utos ng muling pagkonekta sa hook ng pagtulog at mukhang nalutas ang problema. Nalutas lamang ito kung tumakbo ang hook pagkatapos na umiral ang network, bilang pagkakakilanlan na kinikilala ng kliyente, sa daang aktwal na ipinapatupad ng kliyente. Karamihan sa mga pagkabigo pagkatapos ng paggising ay isa sa tatlong iyon, at wala sa kanila ang lumilitaw bilang error sa hook mismo. Nagbabalik pa rin ng tagumpay ang hook.
Ang script na lumalabas na may zero ay walang sinabi sa iyo tungkol sa kung bumalik ang isang tunnel.
Tumakbo ang hook, at ano ang kasunod?
#!/bin/sh
case "$1" in
pre)
vpn-client disconnect
;;
post)
vpn-client connect
;;
esac
Tinatawag ng bawat kaganapan ang hook nang dalawang beses, bago at pagkatapos ng paglipat, na ibinibigay dito ang yugto at pangalan ng kaganapan. Tumakbo ito bilang root na may kaunting kapaligiran, kaya kailangan ang mga ganap na landas at walang variable ng desktop session ang dapat asahan. Ang mabilis na pagbabalik ng dalawang tawag ay nagsasabi lamang na tumakbo ang script. Kung umakyat ang profile pagkatapos ay hiwalay na obserbasyon at kailangan ng sarili nitong ebidensiya sa log.
Ituring ang argumento ng yugto bilang bahagi ng disenyo. Ang pagtatangkang muling kumonekta sa yugtong pre ay nangyayari habang malapit nang mawala ang lahat sa makina, at hindi ito maaaring magtagumpay.
Root, kaunting kapaligiran, maling gumagamit
Kung itinatago ng kliyente ang token ng pag-login sa bawat gumagamit, kapag pinatakbo ang hook bilang root ay wala itong maipakita. Suriin ang kalagayan sa ilalim ng pagkakakilanlang aktwal na ginagamit ng hook, hindi ang sinubukan mo mula sa terminal ng desktop. May mga build na nag-iiwan din ng daemon na humahawak sa interface pagkatapos ng pagkadiskonekta, kaya napupunta ang muling pagkonekta sa lumang kalagayan, at ang paglilinis ng proseso muna ay nagpapanumbalik nito sa halaga ng maruming pagsasara. Wala sa dalawang pag-uugali ang nakikita kung masaya lamang na landas ang sinusubukan mo.
Isulat ang hook na may ganap na landas, panatilihin itong pagmamay-ari ng root at maipapatupad, at i-log ang ginawa nito. Kung wala ang log na iyon, magsisimula sa zero ang susunod na pagsisiyasat.
Ang awtomatikong pagkonekta ay hindi daan ng VPN
Nag-aalok ang NetworkManager ng dalawang mekanismo ng pag-activate: isang bandila ng awtomatikong pagkonekta sa profile, at mga pangalawang koneksiyon na nagsisimula kapag na-activate ang pangunahing profile. Ipinapatupad ng mga katutubong uri ng device ang una; ang mga plugin ng VPN ay aktwal na nagpatupad lamang ng pangalawa, kaya ang pag-tick ng awtomatikong pagkonekta sa isang profile ng OpenVPN ay maaaring walang epekto. Suriin ang dalawang katangian, pagkatapos ay ikabit ang VPN bilang pangalawa ng profile ng Wi-Fi o Ethernet.
[Unit] PartOf=NetworkManager.service Requires=NetworkManager-wait-online.service After=NetworkManager-wait-online.service
Ang interface ng WireGuard na pinamamahalaan ng isang unit ng systemd ay nangangailangan ng drop-in na iyon sa halip na hook, na inayos pagkatapos na maging online ang network.
Hintayin ang network, na may takip
timer=1 while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do sleep 1; timer=$((timer+1)) [ $timer -ge 300 ] && exit 0 done nmcli connection up "work-vpn"
Sa paggising, maaaring hilingin ang tunnel habang nagre-reconnect pa ang Wi-Fi, na ginagawang hula ang anumang fixed na pagtulog. Hintayin ang maabot na address, pagkatapos ay itaas ang profile, at limitahan ang paghihintay upang hindi maipitin ng hook ang daan ng paggising nang walang hanggan. Mas piliin ang pangalan ng profile kaysa numeric na index, at kung nag-iiba ang tamang profile ayon sa network, hayaang i-record ng malusog na tunnel ang pinili nito sa isang file nang maaga.
Protektahan din laban sa mga bagyo ng restart, sa pamamagitan ng pagbilang ng mga pagtatangka at paghinto. Ang watchdog na tumutugon sa bawat nabigong pagsusuri ay ginagawang loop ang isang pagkawala.
I-suspend nang isang beses, pagkatapos ay basahin ang journal para sa output mismo ng hook. Iyon lang ang tanging pagsubok na nagpapatunay ng pagkakasunod-sunod.