Anashkalo VPN-në e shtëpisë me systemd ExecCondition
Anashkalimi i qëllimshëm dhe një komandë përgatitore e prishur janë rezultate të ndryshme. Përcaktoni kodet e daljes së ndihmësit dhe më pas testoni kalimin mes rrjeteve.
VPN-ja e rrjetit tuaj të shtëpisë nuk ka çfarë të bëjë kur laptopi ndodhet tashmë në atë rrjet. Shkurtesa joshëse është një komandë përgatitore që del me një kod jo zero; kjo dështon unit-in dhe bën çdo panel të duket i prishur. systemd ka një direktivë pikërisht për këtë lloj vendimi, dhe ajo ndan anashkalimin e qëllimshëm nga një defekt i vërtetë. Ta bësh si duhet në thelb do të thotë të shkruash çfarë do të thotë secili kod daljeje.
Pse një parakusht që dështon është forma e gabuar
ExecStartPre e trajton një dalje jo zero si dështim nisjeje, gjë që është e saktë për një komandë që përgatit shërbimin. Përdorimi i saj si kusht e bën një vendim politike të pandashëm nga një varësi e prishur. ExecCondition ekziston që një unit të mund të refuzojë të nisë pa u shenjuar si i dështuar.
Ky dallim ka rëndësi në orën tre të mëngjesit, kur askush nuk dëshiron të analizojë një unit të kuq që silltej sipas projektimit. Një unit i dështuar fsheh gjithashtu defektet e vërteta mes atyre të qëllimshme.
Fillimisht shkruani kontratën e kodeve të daljes
Shkruajeni kontratën para skriptit. Dalja zero do të thotë vazhdo, dalja një do të thotë anashkalo komandat e mbetura të nisjes, dhe dalja 255 do të thotë që vetë kushti nuk mundi të ekzekutohej. Kodet midis dy dhe 254 zakonisht nënkuptojnë gjithashtu anashkalim, gjë që harrohet lehtë kur ndihmësi kthen një kod gabimi të rastësishëm. Drop-in-i më poshtë e lidh ndihmësin me emrin e vërtetë të unit-it.
[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpnPërpara se të supozoni semantikën e paracaktuar, kontrolloni unit-in efektiv për cilësime SuccessExitStatus ose stop-post të trashëguara. Më pas testoni me qëllim secilin nga tre rezultatet.
Një aluzion rrjeti nuk është provë vendndodhjeje
Një adresë e arritshme e ruterit ose një MAC i njohur mund të sugjerojnë rrjetin e saktë, dhe asnjëra nuk e provon atë. Një rrjet tjetër mund të ripërdorë të njëjtën adresë, të dhënat ARP mund të jenë të vjetruara dhe identifikuesit mund të imitohen. Trajtojeni sondën si një optimizim në përputhje me politikën, jo si rezultat autentikimi.
Vendosni paraprakisht çfarë do të thotë pasiguria. Nisja e VPN-së kur jeni të pasigurt është e sigurt për një klient që thjesht nuk do të mund të lidhej; anashkalimi i saj kur jeni të pasigurt nuk është. Kufizojeni sondën dhe lexoni ndërfaqen aktive në vend që të supozoni të parën në listë. Një sondë që ngec është më e keqe se një që përgjigjet jo, sepse unit-i e pret atë.
Shënoni ato supozime pranë skedarit të unit-it, që personi tjetër të dijë çfarë beson ndihmësi. Një koment në krye të skriptit është vendi më i lirë për t'i mbajtur.
Trajtoni kalimin mes rrjeteve
Kushti ekzekutohet kur nis shërbimi dhe nuk rivlerësohet më vonë. Një unit i anashkaluar mbetet i anashkaluar pasi laptopi zhvendoset në një kafe, dhe një tunel aktiv mbetet i ngritur pasi laptopi kthehet në shtëpi. Lidhni ciklin e jetës së ndryshimit të rrjetit me vendimin e nisjes dhe ndalimit përmes një mekanizmi të veçantë.
systemctl cat home-vpn.serviceTestoni katër raste: nisje në shtëpi, nisje jashtë, një sondë që nuk mund të ekzekutohet dhe një kalim mes rrjeteve ndërsa unit-i është aktiv. Mbani arsyen e anashkalimit të dukshme në regjistër, që një vendim i qëllimshëm të mos duket kurrë si dështim autentikimi. Referenca e shërbimit dokumenton semantikën e daljes dhe versionin minimal.