Kāpēc VPN vienība startē pirms tīkla un pēc tam mirst
Vienība, kas startē pirms tam, kad savienojumam ir adrese, neizdodas tā, ka šķiet nejauši. Pierādiet secību žurnālā, tad pievienojiet gaidīšanu un atkārtojumu.
Ieslēdziet mašīnu, piesakieties un uzziniet, ka tunelis pacēlās un nomira dažas sekundes vēlāk. Profils bija kārtībā, sertifikāts bija kārtībā, un vienīgā palikusī pēda ir tās palaišanas žurnāls. Parasti notika sacensība: vienība startēja pirms tam, kad mašīnai bija adrese, un secība, ko tā deklarēja, nenozīmēja to, kā izskatās. Viss zemāk ir par šīs sacensības pierādīšanu no pierādījumiem un pareizu aizvēršanu.
Mērķis ir tikšanās vieta, nevis pārvaldnieks
network-online.target nav ne jausmas, kas ir tīkls. Tas ir koordinācijas punkts, kas savāc to pakalpojumu, kuram vajadzētu aizkavēt startu, līdz savienojums būs lietojams, un tas deleģē definīciju tam tīkla pārvaldniekam, kuram pieder mašīna. Lielākajā daļā galddatoru un serveru tas nozīmē gaidīšanas pakalpojumu, ko nodrošina NetworkManager vai systemd-networkd. Ja neieslēgsiet nevienu, mērķim nebūs ko gaidīt, tāpēc tas tiek pabeigts tajā brīdī, kad kaut kas to ievelk, un tas var notikt krietni pirms DHCP atbildes. Secības rinda jūsu vienībā bija godīga un tomēr bezjēdzīga.
Tātad pirmais jautājums nav, ko deklarē jūsu vienība. Bet vai šajā mašīnā kaut kas tiešām veic gaidīšanu.
Lasiet pēdējo palaišanu, nevis vienības failu
Vienības faili apraksta nodomu, un žurnāls apraksta to, kas notika. Pieprasiet tikai to palaišanu, ar monotoniem laika zīmogiem, lai katra ziņa sēdētu uz viena pulksteņa. Pēc tam atrodiet divas rindas: brīdi, kad tuneļa vienība sāka startēt, un brīdi, kad parādījās adrese vai beidzās gaidīšanas pakalpojums. Sakārtojiet šos divus skaitļus, un sacensība ir vai nu apstiprināta, vai izslēgta.
Atkarību skats to apstiprina. Ja tuneļa vienības kritiskajā ķēdē nav gaidīšanas pakalpojuma, nekas šajā ceļā neaizkavēja startu, un mērķis neveica to darbu, ko jūs pieņēmāt. Divi skati, viens secinājums.
systemctl list-units --type=service --state=running | grep wait-online
journalctl -b -o short-monotonic -u openvpn-client@office
Pievienojiet gaidīšanu, tad atkārtojumu
Izmantojiet drop-in, nevis rediģējiet iepakotu vienību, lai pakotnes atjauninājums klusi neizmestu izmaiņas. Svarīgas ir divas direktīvas: vienībai jābūt sakārtotai aiz mērķa, un tai ir jāievelk mērķis tajā pašā transakcijā. Tikai secība mērķi neizsauc; to dara vēlēšanās.
Iepakotā OpenVPN klienta vienība jau nes abus. Ar roku rakstītas vienības parasti nes vienu vai nevienu, ko ir vērts pārbaudīt pirms kaut kā pievienošanas.
[Service]
Restart=on-failure
RestartSec=15
Kāpēc fiksēts miegs ir slazds
Miegs ExecStartPre iekšienē šķiet kā secības labojums un uzvedas kā aizkavēšanās ar papildu soļiem. Tas palēnina katru palaišanu, tostarp tās, kas bija veselas, un tomēr zaudē, kad savienojums aizņem vairāk laika nekā jūsu izvēlētais skaitlis.
Vēl ļaunāk, tas slēpj, vai gaidīšanas pakalpojums darbojas, tāpēc nākamā kļūda parādās kā pilnīgi jauna problēma, nevis tā pati ar citu laiku. Īsa pārstartēšanas aizkave ir labāks instruments: veselā palaišanā tas neko nemaksā un zaudētu sacensību pārvērš vēl vienā mēģinājumā. Turiet intervālu pieticīgu un ļaujiet vienībai gūt panākumus. Ja tā pārstartējas mūžīgi, profils ir salauzts un nekāds atkārtojumu daudzums to nemainīs, tāpēc lasiet žurnālu, nevis ceļiet intervālu.
Kad secība ir pareiza un nosaukumi joprojām neizdodas
Aktīva vienība ar tuneļa maršrutu nozīmē, ka secība ir paveikusi savu darbu un atlikušā kļūda ir vienu slāni augstāk. Parastā forma ir atrisinātāja iestatījums, ko tuneļa up skripts piemēro pirms tam, kad savienojums vai atrisinātājs bija gatavs to noturēt. Salīdziniet atrisinātāja stāvokli kļūdas laikā ar stāvokli pēc tuneļa vienības pārstartēšanas.
Ja pārstartēšana salabo meklēšanu, jums ir palaišanas secības defekts, nevis nepareizs DNS serveris, un šiem diviem vajadzīgi atšķirīgi labojumi. Pēc tam pierādiet visu ar aukstu palaišanu, nevis pakalpojuma pārstartēšanu, jo pārstartēšana darbojas pret jau paceltu tīklu un paslēps tieši to defektu, ko jūs vajājat. Atkārtojiet to ar tīši lēnu savienojumu un uzskatiet vienību, kas strādā tikai tad, kad tīkls ir ātrs, joprojām salauztu.