FreeBind yn erbyn After=: clymu soced systemd i gyfeiriad VPN
Mae FreeBind yn gadael i systemd feddu ar y gwrandäwr cyn bod cyfeiriad VPN yn bodoli; dim ond trefnu swyddi mae After= yn ei wneud. Cymharwch nhw, yna profwch y drefn a’r parodrwydd.
Wrth gychwyn, gall uned soced sy’n clymu cyfeiriad VPN sefydlog fethu cyn i’r twnnel ei ddyrannu, ac nid yw’r gwasanaeth y tu ôl iddo byth yn cychwyn. Mae dau switsh yn edrych fel datrysiadau ac yn datrys gwahanol haneri’r broblem honno. Mae FreeBind yn gadael i systemd greu’r gwrandäwr tra bo’r cyfeiriad yn dal ar goll. Dim ond trefnu swyddi mae After= yn ei wneud, felly mae’n newid pryd mae pethau’n cychwyn heb wneud i’r cyfeiriad gyrraedd yn gynt.
Dwy broblem wahanol, dau switsh gwahanol
Y broblem gyntaf yw methiant clymu: mae’r cnewyllyn yn gwrthod gwrando ar gyfeiriad nad yw’r gwesteiwr yn berchen arno, felly mae’r uned soced yn methu ar unwaith ac ni chaiff y gwasanaeth ei actifadu byth. Yr ail broblem yw methiant parodrwydd: mae’r cyfeiriad yn bodoli yn y pen draw, ond mae rhywbeth yn ceisio ei ddefnyddio cyn i’r twnnel gario traffig. Mae FreeBind yn datrys y gyntaf ac yn gwneud dim am yr ail. Nid yw cyfarwyddiadau trefnu yn datrys y naill na’r llall yn uniongyrchol, oherwydd dim ond penderfynu beth sy’n cychwyn ym mha drefn y maen nhw. Enwi’r methiant sydd gennych mewn gwirionedd yw’r penderfyniad cyfan.
Cadarnhewch pa un sydd gennych o’r cofnod, nid o ddisgrifiad y gwasanaeth. Mae methiant clymu yn enwi cyfeiriad ac yn adrodd na ellir ei ddyrannu. Mae methiant parodrwydd fel arfer yn ymddangos yn ddiweddarach, fel goramser neu gysylltiad a wrthodwyd o’r ochr bell, gydag uned soced hollol iach yn y cofnodion.
FreeBind: mae’r gwrandäwr yn bodoli cyn y cyfeiriad
Mae FreeBind yn dweud wrth y cnewyllyn i ganiatáu clymu i gyfeiriad nad yw’n lleol, fel y gall systemd greu’r soced gwrando wrth gychwyn a’i drosglwyddo i’r cymhwysiad pryd bynnag y bydd yn cychwyn. Dyna bwynt actifadu soced, a’r rheswm y gall y soced oroesi’r gwasanaeth y tu ôl iddo.
[Socket]
ListenStream=
ListenStream=10.8.0.1:8443
FreeBind=yes
Mae’r dyrannu gwag yn clirio’r cofnodion gwrando a etifeddwyd o uned y gwerthwr cyn i’r un newydd gael ei ychwanegu, sy’n atal gwrandäwr wildcard dros ben rhag ateb ar bob rhyngwyneb. Amnewidiwch y cyfeiriad a’r porthladd â’ch rhai eich hun, a gwirio’r uned effeithiol yn hytrach na’r ffeil drop-in yn unig. Defnyddiwch drop-in o dan enw’r uned yn lle golygu ffeil pecyn yn ei lle, oherwydd bydd y diweddariad pecyn nesaf yn trosysgrifo’r golygiad ac yn gadael dim ôl o’r bwriad. Yna ei gymhwyso drwy’r weithdrefn ail-lwytho ac ailgychwyn y mae’r uned soced yn ei disgwyl.
Mae cyfeirlyfr socedi systemd yn dogfennu’r ymddygiad IPv4 ac IPv6 y tu ôl i’r opsiwn, a’r manylyn pwysig yw ei fod yn berthnasol i’r clymu yn hytrach nag i lwybreiddio. Nid oes unrhyw beth ynddo yn dyrannu cyfeiriad nac yn cychwyn VPN. Caniatâd a roddir i’r gwrandäwr yw FreeBind, nid disodliad ar gyfer y rhyngwyneb.
After= a Wants=: nid yw trefn yn barodrwydd
Mae trefn a gofyn yn echelau ar wahân, ac mae eu drysu yn cynhyrchu unedau sy’n cychwyn yn y drefn iawn ac yn methu o hyd. Dim ond golygu y mae After=vpn-client.service os bydd y ddau swydd yn cychwyn, mae hwn yn aros i’r llall gychwyn. Nid yw’n tynnu’r VPN i mewn, ac nid yw’n aros i’r VPN orffen cysylltu.
Mae cyfarwyddiadau gofyn fel Wants= a Requires= yn trin actifadu, ac maen nhw’n wahanol yn yr hyn sy’n digwydd pan fydd y ddibyniaeth yn methu: mae un yn parhau, mae’r llall yn stopio. Nid yw’r naill na’r llall yn gwybod beth mae twnnel cysylltiedig yn ei olygu. Gall proses VPN fod yn weithredol heb gyfeiriad wedi’i ddyrannu, neu gyda chyfeiriad wedi’i ddyrannu a dim llwybr at y cymar, ac mae’r ddau gyflwr yn bodloni’r ddibyniaeth. Os oes angen i’r cymhwysiad i’r cyfeiriad fodoli, modelwch y cyflwr hwnnw’n benodol yn lle trin cychwyn y broses fel prawf o barodrwydd.
Gwiriwch beth mae’r uned yn ei ddatgan mewn gwirionedd gyda systemctl cat a systemctl show -p After -p Wants -p Requires. Gall drop-in o dri chyfeiriadur gwahanol ychwanegu cyfarwyddiadau na wnaethoch eu hysgrifennu erioed, a dim ond yr uned effeithiol y mae systemd yn ei darllen.
Beth nad yw network-online.target yn ei wneud
Mae uned a drefnwyd ar ôl network-online.target yn aros i’r rheolwr rhwydwaith ddatgan bod y rhwydwaith yn ddefnyddiadwy, sef pwynt cysoni wrth gychwyn yn hytrach na chyflwr parhaus. Nid yw’n dweud dim am a yw twnnel penodol i fyny, ac ni fydd yn tanio eto pan fydd VPN yn ailgysylltu yng nghanol y prynhawn. Trin hwn fel monitr ailgysylltu yw camddarlleniad mwyaf cyffredin y targed hwnnw.
Mae prosiect systemd yn dogfennu’r gwahaniaeth hwnnw’n uniongyrchol, a’r canlyniad ymarferol yw bod yn rhaid i unrhyw beth sy’n angerdd am gyfeiriad twnnel feddu ar y ddibyniaeth ei hun. Nid yw uned sy’n aros am network-online ac yna’n clymu cyfeiriad twnnel yn gywir oni bai bod y twnnel yn digwydd codi gyntaf, sy’n gyd-ddigwyddiad yn hytrach na chynllun.
Profwch y cylch bywyd a ddewisoch mewn gwirionedd
Profwch gychwyn glân, cais ar ôl i’r cyfeiriad ymddangos, a’r ymddygiad ar ôl i’r VPN ddisgyn a dychwelyd. Mae’r tri achos hynny’n gwahanu gwrandäwr gweithiol oddi wrth wasanaeth gweithiol.
systemd-analyze verify myapp.socket
systemctl cat myapp.socket
ss -ltn "sport = :8443"
Mae’r gorchymyn cyntaf yn dal gwallau ffeil uned cyn ailgychwyn, mae’r ail yn dangos yr uned unedig, ac mae’r trydydd yn profi a yw’r gwrandäwr yn bodoli ac ar ba gyfeiriad. Mae gwrandäwr ar gyfeiriad wildcard lle’r oeddech yn disgwyl cyfeiriad twnnel yn union y gweddill yr oedd y ListenStream gwag i fod i’w dynnu. Ailadroddwch y trydydd gorchymyn ar ôl i’r VPN ailgysylltu i weld a symudodd y cyfeiriad.
Dewiswch y cylch bywyd yn fwriadol: naill ai gwrandäwr wedi’i glymu’n rhydd sy’n aros i gyfeiriad sefydlog ddychwelyd, neu wasanaeth sy’n stopio gyda’r twnnel ac yn cychwyn eto ar adferiad. Mae’r rhain yn gynlluniau gwahanol ac maen nhw’n methu mewn ffyrdd gwahanol. Yna cadwch y polisi mynediad ynghlwm wrth y ffynonellau a’r llwybrau yr oeddech yn bwriadu, oherwydd nid yw clymu cyfeiriad cyrchfan yn gofyn bod pecynnau a dderbyniwyd wedi cyrraedd drwy ryngwyneb ymddiriedol.