Beim Start kann eng Socket-Eenheet, déi eng fest VPN-Adress bannt, feelen, ier den Tunnel se zougewisen huet, an de Service hannendrun start ni. Zwee Schaltere gesinn aus wéi Korrekturen a léisen verschidde Halschent vun deem Problem. FreeBind léisst systemd den Nolauschterer uleeën, wärend d’Adress nach feelt. After= ordnet just Aufgaben, also ännert et, wéini Saachen ufänken, ouni d’Adress méi fréi kommen ze loossen.

Zwee verschidde Problemer, zwee verschidde Schalteren

Dat éischt Problem ass e Bindungsfehler: de Kernel refuséiert ze lauschteren op enger Adress, déi den Host net besëtzt, also feelt d’Socket-Eenheet direkt an de Service gëtt ni aktivéiert. Dat zweet Problem ass e Bereetschaftsfehler: d’Adress existéiert schlussendlech, awer eppes probéiert se ze benotzen, ier den Tunnel Trafik dréit. FreeBind adresséiert dat éischt an dinn näischt fir dat zweet. D’Reiefolleg-Direktive adresséieren der keng direkt, well se just entscheeden, wat a wéi enger Reiefolleg ufänkt. De Fehler nennen, deen dir tatsächlech hutt, ass déi ganz Entscheedung.

Confirméiert am Journal, wéi een vun deenen zwee dir hutt, net an der Servicebeschreiwung. E Bindungsfehler nennt eng Adress a mellt, datt se net ka zougewisen ginn. E Bereetschaftsfehler erschéngt meeschtens méi spéit, als Zäitofleef oder als refuséiert Verbindung vun der anerer Säit gesinn, mat enger komplett gesonder Socket-Eenheet an de Loggen.

FreeBind: den Nolauschterer existéiert virun der Adress

FreeBind seet dem Kernel, eng Bindung un eng net-lokal Adress ze erlaben, sou datt systemd de lauschterende Socket beim Start uleeë kann an en der Applikatioun gëtt, wéini och ëmmer d’Applikatioun start. Dat ass de Sënn vun der Socket-Aktivéierung, an de Grond firwat de Socket de Service hannendrun iwwerliewe kann.

[Socket]
ListenStream=
ListenStream=10.8.0.1:8443
FreeBind=yes

Déi eidel Zousetzung läscht d’Lauschter-Andräg, déi vun der Verkeefer-Eenheet geierft goufen, ier déi nei bäigefüügt gëtt, wat verhënnert, datt en iwwerrescht wildcard-Nolauschterer op all Interface äntwert. Ersetzt d’Adress an de Port duerch Är eegen, a verifizéiert déi effektiv Eenheet an net just d’Drop-in-Datei. Benotzt en Drop-in ënner dem Numm vun der Eenheet, amplaz eng Package-Datei op der Plaz ze änneren, well den nächsten Package-Update d’Ännerung iwwerschreift an keng Spuer vun der Absicht hannerléisst. Da setzt en duerch d’Nei-Lueden an Neistart-Prozedur ëm, déi d’Socket-Eenheet erwaart.

D’systemd-Socket-Referenz dokumentéiert d’IPv4- an IPv6-Verhalen hannert dëser Optioun, an den wichtegen Detail ass, datt se fir d’Bindung a net fir d’Routing gëllt. Nëmme lächerlech weist eng Adress zou oder start en VPN. FreeBind ass eng Erlaabnes, déi den Nolauschterer kritt, keen Ersatz fir d’Interface.

After= an Wants=: Reiefolleg ass keng Bereetschaft

Reiefolleg a Fuerderung sinn getrennt Axen, an hire Verwiessele produzéiert Eenheeten, déi an der richteger Reiefolleg starten an trotzdeem feelen. After=vpn-client.service heescht just, datt wann déi zwou Aufgabe gestart ginn, dës op de Start vun der anerer waart. Et zitt den VPN net eran, an et waart net, bis den VPN d’Verbindung fäerdeg huet.

Fuerderungsdirektive wéi Wants= an Requires= këmmeren sech ëm d’Aktivéierung, an se ënnerscheede sech doran, wat geschitt, wann d’Ofhängegkeet feelt: eng fiert weider, déi aner stoppt. Keng vun hinnen weess, wat en ugeschlossenen Tunnel bedeit. E VPN-Prozess kann aktiv sinn ouni zougewisen Adress, oder mat zougewisener Adress an ouni Route zum Partner, an déi zwou Zoustänn erfëllen d’Ofhängegkeet. Wann d’Applikatioun d’Adress brauch, modelléiert déi Bedingung ausdrécklech, amplaz de Prozessstart als Beweis vun der Bereetschaft ze huelen.

Préift mat systemctl cat an systemctl show -p After -p Wants -p Requires, wat d’Eenheet tatsächlech deklaréiert. Drop-ins aus dräi verschiddenen Verzeechnisser kënnen Direktive bäisetzen, déi dir ni geschriwwen hutt, an systemd liest just déi effektiv Eenheet.

Wat network-online.target net mécht

Eng Eenheet, déi no network-online.target geordnet ass, waart, bis den Netzwierkmanager d’Netz als benotzbar deklaréiert, wat e Synchronisatiounspunkt beim Start ass an net eng dauerhaft Bedingung. Se seet näischt doriwwer, ob en bestëmmten Tunnel uewen ass, an se löst net nach eng Kéier aus, wann e VPN nomëttes erëm verbënnt. Se als Reconnect-Monitor ze behandelen ass déi heefegst falsch Liesung vun deem Zil.

D’systemd-Projet dokumentéiert deen Ënnerscheed direkt, an d’praktesch Konsequenz ass, datt alles, wat eng Tunneladress brauch, d’Ofhängegkeet selwer muss besëtzen. Eng Eenheet, déi op network-online waart an duerno eng Tunneladress bannt, ass just richteg, wann den Tunnel zoufälleg als éischten eropkënnt, an dat ass en Zoufall an net en Design.

Test de Liewenszyklus, deen dir tatsächlech gewielt hutt

Test e proppere Start, eng Ufro nodeems d’Adress erschéngt, an d’Verhalen nodeems den VPN fält an erëm zréckkënnt. Déi dräi Fäll trennen en funktionéierenden Nolauschterer vun engem funktionéierende Service.

systemd-analyze verify myapp.socket
systemctl cat myapp.socket
ss -ltn "sport = :8443"

Den éischte Befehl fänkt Feeler an der Eenheet-Datei virun engem Neistart, den zweete weist déi fusionéiert Eenheet, an den drëtten beweist, ob den Nolauschterer existéiert a op wéi enger Adress. En Nolauschterer op enger wildcard-Adress do, wou dir eng Tunneladress erwaart hutt, ass genee de Rescht, deen den eidele ListenStream sollt ewechhuelen. Widderholl den drëtten Befehl no enger VPN-Reconnectioun, fir ze gesinn, ob d’Adress sech geréckelt huet.

Wielt de Liewenszyklus bewosst: entweder en fräi gebonnenen Nolauschterer, deen op d’Réckkumme vun enger stabiler Adress waart, oder e Service, deen mam Tunnel stoppt an bei der Erhuelung erëm start. Dat sinn ënnerschiddlech Designen an se feelen op ënnerschiddlech Aart. Dann haalt d’Zougrëffspolitik un de Quellen a Weeër, déi dir virgesinn hutt, well d’Bannen vun enger Ziladress erfuerdert net, datt akzeptéiert Pakete vun enger vertrauenswürdeger Interface komm sinn.

Ähnlech Artikelen