FreeBind kontra After=: kif torbot socket ta’ systemd ma’ indirizz VPN
FreeBind iħalli lil systemd ikollu s-semmiegħ qabel ma jeżisti l-indirizz VPN; After= biss jordna l-kompiti. Qabbel it-tnejn, imbagħad ittestja l-ordni u l-abbiltà li jkun lest.
Fil-boot, unità socket li torbot indirizz VPN fiss tista’ tfalli qabel ma t-tunnell jassenjah, u s-servizz warajha qatt ma jibda. Żewġ swiċċijiet jidhru bħal tiswijiet u jsolvu nofsijiet differenti ta’ dik il-problema. FreeBind iħalli lil systemd joħloq is-semmiegħ waqt li l-indirizz għadu nieqes. After= biss jordna l-kompiti, allura jbiddel meta jibdew l-affarijiet mingħajr ma jġib l-indirizz eqreb.
Żewġ problemi differenti, żewġ swiċċijiet differenti
L-ewwel problema hija falliment fil-irbit: il-kernel jirrifjuta li jisma’ fuq indirizz li l-host ma jippossjedi, allura l-unità socket tfalli minnufih u s-servizz qatt ma jiġi attivat. It-tieni problema hija falliment fil-lest: l-indirizz fl-aħħar jeżisti, imma xi ħaġa tipprova tużah qabel ma t-tunnell iġorr it-traffiku. FreeBind jindirizza l-ewwel u ma jagħmel xejn għat-tieni. Id-direttivi tal-ordni ma jindirizzaw l-ebda waħda b’mod dirett, għax huma biss jiddeċiedu x’jibda u b’liema sekwenza. Li ssemmi l-falliment li tassew għandek hija d-deċiżjoni kollha.
Ikkonferma liema mill-żewġ għandek mill-journal, mhux mid-deskrizzjoni tas-servizz. Falliment fl-irbit isemmi indirizz u jirrapporta li ma jistax jiġi assenjat. Falliment fil-lest normalment jidher aktar tard, bħala timeout jew konnessjoni miċħuda li tidher mill-bqija, b’unità socket perfettament sana fil-logs.
FreeBind: is-semmiegħ jeżisti qabel l-indirizz
FreeBind jgħid lill-kernel biex jippermetti rbita ma’ indirizz mhux lokali, sabiex systemd ikun jista’ joħloq is-socket li jisma’ fil-boot u jgħaddih lill-applikazzjoni kull meta l-applikazzjoni tibda. Dan huwa l-għan tal-attivazzjoni bis-socket, u r-raġuni għaliex is-socket jista’ jgħix itwal mis-servizz warajh.
[Socket]
ListenStream=
ListenStream=10.8.0.1:8443
FreeBind=yes
L-assenjazzjoni vojta tħassar l-entrati tas-smigħ li ntirtu mill-unità tal-fornitur qabel ma tiżdied dik il-ġdida, u dan jipprevjeni lill-semmiegħ wildcard li jkun fadal milli jwieġeb fuq kull interface. Issostitwixxi l-indirizz u l-port bil-tiegħek u vverifika l-unità effettiva, mhux biss il-fajl drop-in. Uża drop-in taħt l-isem tal-unità minflok ma teditja fajl tal-pakkett fil-post tiegħu, għax l-aġġornament tal-pakkett li jmiss se jikteb mill-ġdid l-editjar u ma jħalli l-ebda traċċa tal-intenzjoni. Imbagħad applika permezz tal-proċedura ta’ tagħbija mill-ġdid u tibdil mill-ġdid li l-unità socket tistenna.
Ir-referenza tas-sockets ta’ systemd tiddokumenta l-imġiba IPv4 u IPv6 wara din l-għażla, u d-dettall importanti huwa li tapplika għall-irbit u mhux għall-ġbir ta’ rotot. Xejn fiha ma jassenja indirizz jew jibda VPN. FreeBind hija permess mogħti lis-semmiegħ, mhux sostitut għall-interface.
After= u Wants=: l-ordni mhix il-lest
L-ordni u l-ħtieġa huma assi separati, u li tħallathom iwassal għal unitajiet li jibdew fl-ordni t-tajba u xorta jfallu. After=vpn-client.service ifisser biss li, jekk iż-żewġ kompiti jinbdew, dan jistenna li l-ieħor jinbeda. Ma jiġbedx il-VPN u ma jistenniex li l-VPN jispiċċa jikkonnetti.
Id-direttivi tal-ħtieġa bħal Wants= u Requires= jieħdu ħsieb l-attivazzjoni, u jvarjaw f’dak li jiġri meta d-dipendenza tfalli: wieħed jissokta u l-ieħor jieqaf. L-ebda ma jaf xi jfisser tunnell konness. Proċess VPN jista’ jkun attiv mingħajr indirizz assenjat, jew b’indirizz assenjat u mingħajr rotta lejn sieħbu, u ż-żewġ stati jissodisfaw id-dipendenza. Jekk l-applikazzjoni teħtieġ li l-indirizz jeżisti, mudella dik il-kundizzjoni b’mod espliċitu minflok ma tqis il-bidu tal-proċess bħala prova tal-lest.
Iċċekkja x’tiddikjara tassew l-unità b’systemctl cat u systemctl show -p After -p Wants -p Requires. Drop-in minn tliet direttorji differenti jistgħu jżidu direttivi li qatt ma ktibt, u systemd jaqra biss l-unità effettiva.
X’ma jagħmilx network-online.target
Unità ordnata wara network-online.target tistenna li l-maniġer tan-netwerk jiddikjara n-netwerk użabbli, li hija punt ta’ sinkronizzazzjoni fil-boot u mhux kundizzjoni kontinwa. Ma tgħid xejn dwar jekk tunnell partikolari huwiex ’il fuq, u mhux se terġa’ tiskatta meta VPN jerġa’ jikkonnettja nofs wara nofsinhar. Li tqisha bħala monitor ta’ konnessjoni mill-ġdid hija l-aktar qari żbaljat komuni ta’ dak l-għan.
Il-proġett systemd jiddokumenta dik id-differenza direttament, u l-konsegwenza prattika hija li kull ma jeħtieġ indirizz ta’ tunnell irid ikollu d-dipendenza hu stess. Unità li tistenna network-online u mbagħad torbot indirizz ta’ tunnell hija tajba biss meta t-tunnell jiġri li jitla’ l-ewwel, u dik hija koinċidenza u mhux disinn.
Ittestja ċ-ċiklu tal-ħajja li tassew għażilt
Ittestja boot nadif, talba wara li jidher l-indirizz, u l-imġiba wara li l-VPN jaqa’ u jerġa’ lura. Dawk it-tliet każijiet jifirdu semmiegħ li jaħdem minn servizz li jaħdem.
systemd-analyze verify myapp.socket
systemctl cat myapp.socket
ss -ltn "sport = :8443"
L-ewwel kmand jaqbad l-iżbalji tal-fajl tal-unità qabel rebooting, it-tieni juri l-unità magħquda, u t-tielet jipprova jekk is-semmiegħ jeżistix u fuq liema indirizz. Semmiegħ fuq indirizz wildcard fejn kont tistenna indirizz ta’ tunnell huwa eżattament il-fdal li l-ListenStream vojt kellu jneħħi. Erġa’ għamel it-tielet kmand wara konnessjoni mill-ġdid tal-VPN biex tara jekk l-indirizz marrux.
Agħżel iċ-ċiklu tal-ħajja b’mod deliberat: jew semmiegħ marbut b’mod liberu li jistenna li jerġa’ lura indirizz stabbli, jew servizz li jieqaf mat-tunnell u jerġa’ jibda fil-irkupru. Dawn huma disinji differenti u jfallu b’modi differenti. Imbagħad żomm il-politika tal-aċċess marbuta mas-sorsi u l-mogħdijiet li kellek fi ħsibek, għax l-irbit ta’ indirizz tad-destinazzjoni ma jeħtieġx li l-pakketti aċċettati waslu minn interface fdatt.