Kodu-VPN-il pole midagi teha, kui sülearvuti on juba selles võrgus. Ahvatlev otsetee on ettevalmistuskäsk, mis väljub nullist erineva koodiga; see nurjab üksuse ja paneb iga juhtpaneeli katkisena näima. systemd-l on direktiiv täpselt sellise otsuse jaoks ja see eristab tahtlikku vahelejätmist tegelikust rikkest. Õigesti tegemine tähendab peamiselt kirja panemist, mida iga väljumiskood tähendab.

Miks nurjunud eeltingimus on vale kuju

ExecStartPre käsitleb nullist erinevat väljumist käivitusveana, mis on teenust ettevalmistava käsu puhul õige. Selle tingimusena kasutamine muudab poliitikaotsuse katkisest sõltuvusest eristamatuks. ExecCondition on olemas selleks, et üksus saaks keelduda käivitumast ilma nurjunuks märkimiseta.

See erinevus loeb kell kolm öösel, kui keegi ei taha triaažida punast üksust, mis käitus nii, nagu projekteeritud. Nurjunud üksus varjab ka tegelikke rikkeid tahtlike seas.

Kirjutage esmalt väljumiskoodide leping

Kirjutage leping enne skripti. Väljumine nulliga tähendab jätkamist, väljumine ühega tähendab ülejäänud käivituskäskude vahelejätmist ja väljumine 255 tähendab, et tingimus ise ei saanud töötada. Koodid kahe ja 254 vahel tähendavad tavaliselt samuti vahelejätmist, mida on lihtne unustada, kui abiline tagastab juhusliku veakoodi. Allolev drop-in seob abilise tegeliku üksuse nimega.

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

Enne vaikimisi semantika eeldamist kontrollige efektiivset üksust päritud SuccessExitStatusi või stop-posti seadete suhtes. Seejärel testige tahtlikult kõiki kolme tulemust.

Võrgu vihje ei ole asukoha tõestus

Kättesaadav ruuteri aadress või teadaolev MAC võib viidata õigele võrgule ja kumbki ei tõesta seda. Teine võrk võib sama aadressi uuesti kasutada, ARP-andmed võivad olla aegunud ja identifikaatoreid saab jäljendada. Käsitlege sondi poliitikaga kooskõlas oleva optimeerimisena, mitte autentimise tulemusena.

Otsustage ette, mida ebakindlus tähendab. VPN-i käivitamine ebakindluse korral on kliendi jaoks turvaline, kes lihtsalt ei saaks ühendust; selle vahelejätmine ebakindluse korral seda ei ole. Tehke sond piiratuks ja lugege aktiivset liidest, selle asemel et eeldada loendis esimest. Sond, mis jääb rippuma, on hullem kui see, mis vastab eitavalt, sest üksus ootab seda.

Kirjutage need eeldused üksusefaili kõrvale, et järgmine inimene teaks, mida abiline usub. Kommentaar skripti alguses on nende hoidmiseks kõige odavam koht.

Käsitlege võrkude vahel liikumist

Tingimus käivitub teenuse käivitamisel ja seda ei hinnata hiljem uuesti. Vahelejäetud üksus jääb vahelejäetuks ka pärast seda, kui sülearvuti viiakse kohvikusse, ja töötav tunnel jääb püsti ka pärast seda, kui sülearvuti koju jõuab. Ühendage võrguvahetuse elutsükkel eraldi mehhanismiga käivitamise ja peatamise otsusega.

systemctl cat home-vpn.service

Testige nelja juhtumit: käivitamine kodus, käivitamine väljaspool kodu, sond, mis ei saa töötada, ja võrkude vaheline liikumine üksuse aktiivsuse ajal. Hoidke vahelejätmise põhjus päevikus nähtav, et tahtlik otsus ei näeks kunagi autentimisveana. Teenuse viide dokumenteerib väljumise semantika ja miinimumversiooni.

Seotud artiklid