Hepgor VPN y cartref gyda systemd ExecCondition
Mae hepgor bwriadol a gorchymyn paratoi wedi torri yn ganlyniadau gwahanol. Diffiniwch godau gadael yr helpwr, yna profwch y symud rhwng rhwydweithiau.
Nid oes gan VPN y rhwydwaith cartref ddim i'w wneud pan fydd y gliniadur eisoes ar y rhwydwaith hwnnw. Y llwybr byr deniadol yw gorchymyn paratoi sy'n gadael â chod nad yw'n sero; mae hynny'n methu'r uned ac yn gwneud pob danglenn i edrych yn doredig. Mae gan systemd gyfarwyddeb ar gyfer union y siâp hwn o benderfyniad, ac mae'n gwahanu hepgor bwriadol oddi wrth fai go iawn. Mae ei wneud yn iawn yn ymwneud yn bennaf â nodi beth mae pob cod gadael yn ei olygu.
Pam mai rhagofyniad sy'n methu yw'r siâp anghywir
Mae ExecStartPre yn trin cod gadael nad yw'n sero fel methiant cychwyn, sy'n gywir ar gyfer gorchymyn sy'n paratoi'r gwasanaeth. Mae ei ddefnyddio fel amod yn gwneud penderfyniad polisi yn anwahanadwy oddi wrth ddibyniaeth doredig. Mae ExecCondition yn bodoli fel y gall uned wrthod cychwyn heb gael ei nodi fel un wedi methu.
Mae'r gwahaniaeth hwnnw'n bwysig am dri o'r gloch y bore, pan nad oes neb eisiau dosbarthu uned goch a oedd yn ymddwyn fel y'i cynlluniwyd. Mae uned wedi methu hefyd yn cuddio'r methiannau go iawn ymhlith y rhai bwriadol.
Ysgrifennwch y contract codau gadael yn gyntaf
Ysgrifennwch y contract cyn y sgript. Mae gadael â sero yn golygu parhau, mae gadael ag un yn golygu hepgor y gorchmynion cychwyn sy'n weddill, ac mae gadael â 255 yn golygu na allai'r amod ei hun redeg. Mae codau rhwng dau a 254 fel arfer yn golygu hepgor hefyd, sy'n hawdd ei anghofio pan fydd helpwr yn dychwelyd cod gwall ar hap. Mae'r drop-in isod yn cysylltu'r helpwr â gwir enw'r uned.
[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpnGwiriwch yr uned effeithiol am osodiadau SuccessExitStatus neu stop-post a etifeddwyd cyn tybio'r semanteg diofyn. Yna profwch bob un o'r tri chanlyniad yn fwriadol.
Nid yw awgrym rhwydwaith yn brawf o leoliad
Gall cyfeiriad llwybrydd y gellir ei gyrraedd neu MAC hysbys awgrymu'r rhwydwaith cywir, ac nid yw'r naill na'r llall yn ei brofi. Gall rhwydwaith arall ailddefnyddio'r un cyfeiriad, gall data ARP fod yn hen, a gellir dynwared dynodwyr. Triniwch y prawf fel optimeiddiad sy'n gyson â pholisi, nid fel canlyniad dilysu.
Penderfynwch ymlaen llaw beth mae ansicrwydd yn ei olygu. Mae cychwyn y VPN pan ydych yn ansicr yn ddiogel i gleient a fyddai'n syml yn methu cysylltu; nid yw ei hepgor pan ydych yn ansicr yn ddiogel. Gwnewch y prawf yn gyfyngedig, a darllenwch y rhyngwyneb gweithredol yn hytrach na thybio'r cyntaf ar y rhestr. Mae prawf sy'n hongian yn waeth nag un sy'n ateb na, oherwydd mae'r uned yn aros amdano.
Cofnodwch y rhagdybiaethau hynny wrth ymyl ffeil yr uned fel y bydd y person nesaf yn gwybod beth mae'r helpwr yn ei gredu. Sylw ar frig y sgript yw'r lle rhataf i'w cadw.
Trafodwch y symud rhwng rhwydweithiau
Mae'r amod yn rhedeg pan fydd y gwasanaeth yn cychwyn, ac nid yw'n ailwerthuso yn ddiweddarach. Mae uned a hepgorwyd yn aros wedi'i hepgor ar ôl i'r gliniadur symud i siop goffi, ac mae tiwnel sy'n rhedeg yn aros i fyny ar ôl i'r gliniadur ddod adref. Cysylltwch gylch bywyd y newid rhwydwaith â'r penderfyniad cychwyn a stopio trwy fecanwaith ar wahân.
systemctl cat home-vpn.serviceProfwch bedwar achos: cychwyn gartref, cychwyn oddi cartref, prawf na all redeg, a symud rhwng rhwydweithiau tra bo'r uned yn weithredol. Cadwch y rheswm dros hepgor yn weladwy yn y cyfnodolyn fel na fydd penderfyniad bwriadol byth yn edrych fel methiant dilysu. Mae'r cyfeirlyfr gwasanaeth yn dogfennu semanteg y gadael a'r fersiwn lleiaf.