Atkarīga pakalpojuma piesaistīšana tun0.device izskatās pēc tuneļa abonēšanas, un tā nav. Ierīces vienība atspoguļo to, ka saskarne pastāv, un tas var palikt patiess gan neveiksmīga savienojuma, gan tam sekojošās atkārtotās savienošanās laikā. Tad pakalpojums darbojas nepareizajā brīdī vai nekad, atkarībā no tā, vai saskarne starplaikā pazuda. Āķis, kas apraksta notikumu, kas jums patiešām rūp, ir tas, ko izsauc OpenVPN, nevis tas, ko secina systemd.

Pirms trigera izvēles izlemiet, kāds nosacījums pakalpojumam nepieciešams, jo trīs kandidāti nav savstarpēji aizvietojami.

Ko ierīces vienība patiešām seko

systemd izveido ierīces vienību no kodola skatījuma uz tīkla saskarni, tāpēc tun0.device kļūst aktīva, kad saskarne parādās, un neaktīva, kad tā tiek noņemta. Ar persist-tun maigs restarts saglabā saskarni vietā, tāpēc vienība nekad nemirgo un nekas tai piesaistītais netiek aktivizēts. Pat bez noturības vienība neko nesaka par maršrutiem, DNS vai to, vai attālais gals atbild.

Tas padara to par sliktu aizstājēju 'VPN ir gatavs'. Klausītājs, kuram nepieciešama tikai vietējā adrese, var būt apmierināts ar saskarnes pastāvēšanu, kamēr pakalpojumam, kas izsauc lietotni attālajā tīklā, nepieciešami maršruti un sasniedzamība, ko ierīces vienība nevar izteikt.

up, route-up un up-restart nozīmē dažādas lietas

up darbojas pēc tam, kad TUN/TAP ierīce ir atvērta un saskarne konfigurēta, kas ir īstais brīdis klausītājam, kurš piesaista piešķirto adresi. route-up darbojas pēc maršrutu instalēšanas, ievērojot jebkuru konfigurēto maršruta aizturi, un ir piemērots darbam, kam nepieciešams pabeigts maršrutu posms. Neviens no tiem nepierāda, ka attālā lietotne atbild. Izvēle starp tiem ir jautājums par to, kas pakalpojumam nepieciešams, nevis par to, kurš āķis izklausās pabeigtāks.

Ar persist-tun restarti atkārtoti izmanto ierīci, tāpēc up netiek palaists vēlreiz, ja vien nav iestatīts up-restart. Šī opcija iespējo up skriptu dokumentētajam restarta dzīves ciklam, un tā vide ir samazināta, salīdzinot ar pirmo palaišanu. Skripts, kas pieņem pilnu vidi, darbojas pirmajā savienojumā un neizdodas nākamajā.

Nosūtiet darbību, negaidot to

Āķis, kas sinhroni izsauc systemctl restart, var nonākt strupceļā ar vienību, kuras secība gaida tuneli. systemctl --no-block try-restart vpn-dependent.service ievieto darbu rindā un atgriežas, kas neļauj āķim bloķēt savienojumu, uz kuru tas reaģēja. try-restart iedarbojas tikai uz darbojošos vienību, kamēr restart palaiž arī neaktīvu; izvēlieties apzināti, nevis ieraduma dēļ.

Ievietošana rindā nav pārbaude. Āķis atgriež panākumus, tiklīdz darbs ir pieņemts, tāpēc pārbaudei jānotiek mērķa vienības žurnālā vai tās faktiskajā klausītāja stāvoklī.

Restarta politika dzīvo vienībā, nevis āķī

oneshot vienība ar RemainAfterExit=yes paliek aktīva pēc tās komandas izpildes, un otrs palaišanas pieprasījums neko nedara, jo systemd to uzskata par jau palaistu. Tā ir īpašība, ap kuru jāprojektē, nevis defekts, ko apiet ar atkārtotiem palaišanas izsaukumiem. Ja darbībai jānotiek katram savienojumam, vienībai nepieciešama forma, kas to atļauj.

After= kārto vienības, un BindsTo= saista dzīves ilgumus, bet neviens no tiem nenozīmē 'restartē šo katru reizi, kad VPN atkārtoti pievienojas'. Vienība, kas piesaistīta tunelim, apstājas, kad tunelis apstājas; tā pati sevi nerestartē, kad tunelis atgriežas, ja vien kaut kas to neatpalaiž.

Pārbaudiet trīs atkārtotas savienošanās, nevis vienu

Aukstā palaišana, pilnīgs klienta restarts un maiga atkārtota savienošanās katra praktizē citu ceļu. Maigā atkārtotā savienošanās ir tā, kas atklāj trūkstošo up-restart, samazināto vidi vai ierīces vienību, kas nekad nav kļuvusi neaktīva. Palaidiet visas trīs un apstipriniet abus virzienus: pakalpojums darbojas, kad tunelis paceļas, un tas netiek restartēts nesaistītās saites izmaiņās, piemēram, Wi-Fi viesabonēšanā.

Saglabājiet neatkarīgu atkopšanas ceļu, kad atkarīgais pakalpojums nes jūsu pašu administratīvo piekļuvi. Āķis, kas restartē to, pa ko esat savienots, ir izmaiņas, kas var jūs izslēgt.

Saistītie raksti