Jo thúsnetwurk-VPN hat neat te dwaan as de laptop al op dat netwurk sit. De ferliedende koarte manier is in tariedingsopdracht dy't mei in net-nul koade einiget; dat lit de unit mislearje en makket elk dashboard stikken. systemd hat in rjochtline foar krekt dizze foarm fan beslissing, en dy skiedt in bewuste oerslach fan in echte flater. It goed dwaan giet benammen oer it opskriuwen fan wat elke útgongskoade betsjut.

Wêrom't in mislearjende betingst de ferkearde foarm is

ExecStartPre behannelet in net-nul útgong as in startflater, wat korrekt is foar in opdracht dy't de tsjinst taret. It brûken as betingst makket in beliedsbeslissing net te ûnderskieden fan in stikken ôfhinklikens. ExecCondition bestiet sadat in unit wegerje kin om te starten sûnder as mislearre markearre te wurden.

Dat ûnderskie is wichtich om trije oere moarns, as nimmen in reade unit trijeagje wol dy't him neffens it ûntwerp gedroech. In mislearre unit ferstoppet ek de echte flaters tusken de bewuste.

Skriuw earst it útgongskoade-kontrakt

Skriuw it kontrakt foar it skript. Útgong nul betsjut trochgean, útgong ien betsjut de oerbliuwende startopdrachten oerslaan, en útgong 255 betsjut dat de betingst sels net draaie koe. Koaden tusken twa en 254 betsjutte normaal ek oerslaan, wat maklik te ferjitten is as in helper in tafallige flaterkoade weromjout. De drop-in hjirûnder ferbynt de helper oan 'e echte unitnamme.

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

Kontrolearje de effektive unit op erfd SuccessExitStatus- of stop-post-ynstellingen foardat jo de standertsemantyk oannimme. Test dan elk fan 'e trije útkomsten bewust.

In netwurkoanwizing is gjin bewiis fan lokaasje

In berikber routeradres of in bekend MAC kin it juste netwurk oantsjutte, en gjin fan beide bewiist it. In oar netwurk kin itselde adres opnij brûke, ARP-gegevens kinne ferâldere wêze, en identifiers kinne neibeard wurde. Behandel de probe as in optimalisaasje dy't oerienkomt mei belied, net as in autentikaasje-útkomst.

Beslis foarôf wat ûnwissichheid betsjut. It starten fan 'e VPN as jo ûnwis binne is feilich foar in klant dy't gewoan net ferbine kinne soe; it oerslaan as jo ûnwis binne is dat net. Meitsje de probe beheind, en lês de aktive interface ynstee fan de earste yn 'e list oan te nimmen. In probe dy't hinget is slimmer as ien dy't nee antwurdet, om't de unit der op wachtet.

Skriuw dy oannames njonken it unit-bestân sadat de folgjende persoan wit wat de helper leaut. In kommentaar boppe-oan it skript is it goedkeapste plak om se te hâlden.

Klear de oergong tusken netwurken

De betingst draait as de tsjinst start, en wurdt letter net opnij beoardiele. In oerslagen unit bliuwt oerslagen nei't de laptop nei in kafee ferhúzet, en in draaiende tunnel bliuwt oerein nei't de laptop thús komt. Ferbing it libbenssyklus fan netwurkferoaring oan 'e start- en stopbeslissing mei in apart meganisme.

systemctl cat home-vpn.service

Test fjouwer gefallen: start thús, start bûten, in probe dy't net draaie kin, en in oergong tusken netwurken wylst de unit aktyf is. Hâld de reden foar it oerslaan sichtber yn it sjoernaal sadat in bewuste beslissing nea as in autentikaasjeflater liket. De tsjinstferwizing dokumintearret de útgongssemantyk en de minimale ferzje.

Relatearre artikelen