Jūsu mājas tīkla VPN nav ko darīt, ja portatīvais dators jau atrodas šajā tīklā. Vilinošais īsceļš ir sagatavošanas komanda, kas beidzas ar kodu, kurš nav nulle; tas izraisa vienības kļūmi, un katrs vadības panelis izskatās salauzts. systemd ir direktīva tieši šāda veida lēmumam, un tā atdala apzinātu izlaišanu no reālas kļūdas. Pareizi to izdarīt galvenokārt nozīmē pierakstīt, ko nozīmē katrs iziešanas kods.

Kāpēc neizdevusies priekšnosacījums ir nepareizā forma

ExecStartPre uzskata iziešanu, kas nav nulle, par palaišanas kļūmi, kas ir pareizi komandai, kura sagatavo pakalpojumu. Tās izmantošana kā nosacījums padara politikas lēmumu neatšķiramu no bojātas atkarības. ExecCondition pastāv, lai vienība varētu atteikties startēt, netiekot atzīmēta kā neizdevusies.

Šī atšķirība ir svarīga trijos naktī, kad neviens negrib analizēt sarkanu vienību, kas uzvedās tā, kā projektēta. Neizdevusies vienība arī slēpj īstās kļūmes starp apzinātajām.

Vispirms uzrakstiet iziešanas kodu līgumu

Uzrakstiet līgumu pirms skripta. Iziešana ar nulli nozīmē turpināt, iziešana ar vienu nozīmē izlaist pārējās starta komandas, un iziešana ar 255 nozīmē, ka pats nosacījums nevarēja darboties. Kodi starp divi un 254 parasti arī nozīmē izlaist, ko viegli aizmirst, kad palīgs atgriež nejaušu kļūdas kodu. Zemāk esošais drop-in piesaista palīgu īstajam vienības nosaukumam.

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

Pirms pieņemat noklusējuma semantiku, pārbaudiet efektīvo vienību attiecībā uz mantotajiem SuccessExitStatus vai stop-post iestatījumiem. Pēc tam apzināti pārbaudiet katru no trim rezultātiem.

Tīkla norāde nav atrašanās vietas pierādījums

Sasniedzama maršrutētāja adrese vai zināms MAC var norādīt uz pareizo tīklu, un neviens no tiem to nepierāda. Cits tīkls var izmantot to pašu adresi, ARP dati var būt novecojuši, un identifikatorus var imitēt. Uztveriet pārbaudi kā ar politiku saskaņotu optimizāciju, nevis kā autentifikācijas rezultātu.

Iepriekš izlemiet, ko nozīmē nenoteiktība. VPN palaišana, ja neesat pārliecināts, ir droša klientam, kurš vienkārši nevarētu izveidot savienojumu; tā izlaišana, ja neesat pārliecināts, nav droša. Ierobežojiet pārbaudi un lasiet aktīvo saskarni, nevis pieņemiet pirmo sarakstā. Pārbaude, kas iestrēgst, ir sliktāka par to, kas atbild nē, jo vienība to gaida.

Pierakstiet šos pieņēmumus blakus vienības failam, lai nākamā persona zinātu, kam palīgs tic. Komentārs skripta augšdaļā ir lētākā vieta, kur tos glabāt.

Apstrādājiet pāreju starp tīkliem

Nosacījums darbojas, kad pakalpojums startē, un vēlāk to atkārtoti neizvērtē. Izlaista vienība paliek izlaista pēc tam, kad portatīvais dators pārceļas uz kafejnīcu, un darbojošs tunelis paliek uzcelts pēc tam, kad portatīvais dators atgriežas mājās. Saistiet tīkla maiņas dzīves ciklu ar starta un apturēšanas lēmumu, izmantojot atsevišķu mehānismu.

systemctl cat home-vpn.service

Pārbaudiet četrus gadījumus: startu mājās, startu ārpus mājām, pārbaudi, kas nevar darboties, un pāreju starp tīkliem, kamēr vienība ir aktīva. Turiet izlaišanas iemeslu redzamu žurnālā, lai apzināts lēmums nekad neizskatītos kā autentifikācijas kļūme. Pakalpojuma uzziņa dokumentē iziešanas semantiku un minimālo versiju.

Saistītie raksti