Kial VPN-unuo startas antaŭ la reto kaj poste mortas
Unuo, kiu startas antaŭ ol la ligilo havas adreson, malsukcesas tiel, ke ŝajnas hazarde. Pruvu la ordon el la ĵurnalo, poste aldonu la atendadon kaj reprovon.
Bootu la maŝinon, ensalutu, kaj eksciu, ke la tunelo ekfunkciis kaj mortis kelkajn sekundojn poste. La profilo estis en ordo, la atestilo estis en ordo, kaj la sola restinta spuro estas la ĵurnalo el tiu booto. Kio kutime okazis estas vetkuro: la unuo startis antaŭ ol la maŝino havis adreson, kaj la ordo, kiun ĝi deklaris, ne signifis tion, kion ĝi ŝajnas signifi. Ĉio sube temas pri pruvi tiun vetkuron el pruvoj kaj ĝuste fermi ĝin.
La celo estas renkontiĝejo, ne administranto
network-online.target tute ne scias, kio estas reto. Ĝi estas kunordiga punkto, kiu kolektas tiun servon, kiu devas prokrasti la starton ĝis la ligilo estos uzebla, kaj ĝi delegas la difinon al tiu retadministranto, kiu posedas la maŝinon. Sur plej multaj labortabloj kaj serviloj tio signifas atendan servon liveratan de NetworkManager aŭ de systemd-networkd. Se vi ebligas neniun, la celo havas nenion atendi, do ĝi kompletiĝas en la momento, kiam io tiras ĝin enen, kio povas esti longe antaŭ ol DHCP respondas. La orda linio en via unuo estis honesta kaj tamen senutila.
La unua demando do ne estas, kion via unuo deklaras. Sed ĉu io sur ĉi tiu maŝino efektive faras la atendadon.
Legu la lastan booton anstataŭ la dosiero de la unuo
Dosieroj de unuoj priskribas intencon, kaj la ĵurnalo priskribas, kio okazis. Petu nur tiun booton, kun monotonaj tempaj markoj, por ke ĉiu mesaĝo sidu sur unu horloĝo. Poste trovu du liniojn: la momenton, kiam la tunela unuo komencis starti, kaj la momenton, kiam la adreso aperis aŭ la atenda servo finiĝis. Ordigi tiujn du nombrojn kaj la vetkuro estas aŭ konfirmita aŭ ekskludita.
La dependeca vido konfirmas tion. Se kritika ĉeno por la tunela unuo enhavas neniun atendantan servon, nenio sur tiu vojo prokrastis la starton, kaj la celo ne faris la laboron, kiun vi supozis. Du vidoj, unu konkludo.
systemctl list-units --type=service --state=running | grep wait-online
journalctl -b -o short-monotonic -u openvpn-client@office
Aldoni la atendadon, poste la reprovon
Uzu drop-in anstataŭ redakti pakitan unuon, por ke pakaĵa ĝisdatigo ne silentu forĵetu la ŝanĝon. Du direktivoj gravas: la unuo devas esti ordigita post la celo, kaj ĝi devas tiri la celon en la saman transakcion. Ordo sola ne alvokas la celon; la deziro faras tion.
La pakita unuo de la OpenVPN-kliento jam portas ambaŭ. Mane skribitaj unuoj kutime portas unu aŭ neniun, kio indas kontroli antaŭ ol aldoni ion.
[Service]
Restart=on-failure
RestartSec=15
Kial fiksa dormo estas kaptilo
Dormo en ExecStartPre sentiĝas kiel orda ripeto kaj kondutas kiel prokrasto kun pliaj paŝoj. Ĝi malrapidigas ĉiun booton, inkluzive de tiuj, kiuj estis sanaj, kaj ĝi ankoraŭ malgajnas, kiam la ligilo daŭras pli longe ol la nombro, kiun vi elektis.
Pli malbone, ĝi kaŝas, ĉu la atenda servo funkcias, do la sekva malsukceso prezentiĝas kiel tute nova problemo anstataŭ la sama kun alia tempo. Mallonga prokrasto de restartigo estas la pli bona instrumento: ĝi kostas nenion ĉe sana booto kaj transformas perditan vetkuron en plian provon. Tenu la intervalon modesta kaj lasu la unuon sukcesi. Se ĝi restartigas eterne, la profilo estas rompita kaj neniu kvanto de reprovado tion ŝanĝos, do legu la protokolon anstataŭ altigi la intervalon.
Kiam la ordo estas ĝusta kaj nomoj ankoraŭ malsukcesas
Aktiva unuo kun tunela vojo signifas, ke la ordo faris sian laboron kaj la restanta difekto sidas unu tavolon pli alte. La kutima formo estas agordo de solvilo aplikata de la up-skripto de la tunelo antaŭ ol la ligilo aŭ la solvilo estis preta teni ĝin. Komparu la staton de la solvilo dum la malsukceso kun la stato post restartigo de la tunela unuo.
Se la restartigo riparas serĉojn, vi havas difekton de starta ordo, ne malĝustan DNS-servilon, kaj tiuj du bezonas malsamajn riparojn. Poste pruvu la tutan aferon per malvarma booto anstataŭ per serva restartigo, ĉar restartigo kuras kontraŭ reto, kiu jam staras, kaj kaŝos ĝuste la difekton, kiun vi ĉasas. Ripetu ĝin kun la ligilo intence malrapida, kaj traktu unuon, kiu funkcias nur kiam la reto estas rapida, kiel ankoraŭ rompita.