Virugeschaaften tun an OpenVPN: déi zwéi Besëtzmodeller vergläichen
Eng virugeschaaften tun-Schnittstell kann nei benotzt ginn, awer nëmmen eng Komponent soll hir Adressen an hir Route besetzen. Vergläicht déi zwéi Modeller, ier dir ifconfig-noexec bäifüügt.
Een huet tun1 virugeschaaf, de Profil seet dev tun1, an d’Verbindung verbënnt sech nach ëmmer net. D’Existenz vum Numm um Host seet bal näischt, well d’Verbannen dovunner ofhängt, wéi den Nummraum, den Typ vum Apparat, wien de Link besëtzt a wat dem Daemon erlaabt ass. En Apparat nei ze benotzen zwingt och eng Entscheedung, déi d’Standardkonfiguratioun verstoppt: wéi eng Komponent d’Adressen an d’Route schreift. D’Feelermodusen vun den zwéi Konfiguratioune sinn ëm vill méi verschidden wéi d’Konfiguratiounslinnen, also entscheet ier dir e Profil ännert.
En Numm ass keng Verbindung
dev tun1 freet OpenVPN no där genannter Schnittstell, an traditionell Benotzerraum-Builden probéieren se opzemaachen. Wann den Numm net dem gewéinleche tun- oder tap-Muster follegt, brauch de Profil och eng passend dev-type, well den Typ ni aus engem String ofgeleet gëtt. En TAP-Apparat ass keen TUN-Apparat mat engem aneren Etikett: de falschen unzehänken entweeder schléit direkt feel oder mécht e Link, deen Frame dréit, déi kee erwaart. Iwwerpréift den Typ virun allem aneren, well all spéider Iwwerpréiwung unhëlt, datt déi zwou Säiten doriwwer eens sinn. Duerno bestätegt, datt de Prozess den Apparat wierklech kann opmaachen, an net nëmme gesinn.
dev tun1
dev-type tun
D’Netzwierkschnittstell an /dev/net/tun si verschidden Objeten: eng ass e Link bannen an engem Nummraum, déi aner ass den Zeechenapparat, deen e Benotzerraum-Programm fir d’Verbannen benotzt. D’Linux TUN/TAP-Dokumentatioun beschreift dee Verbannungswee an d’Besëtzregelen fir persistent Apparaten. Eng Root-Shell, déi ip link kann ausféieren, beweist nëmmen, datt d’Shell Privilegien huet, an net datt den Daemon se huet. De Besëtz vum Apparatknuet, de Fäegkeetsset vum Service an de Benotzer, ënner deem en leeft mussen alleguer iwwerenee stëmmen, ier d’Opmaache geléngt.
En Apparat, deen existéiert an net kann opgemaach ginn, ass e Besëtzproblem, keen Routingproblem. Behandelt en esou beim Debuggen, soss geet den Nomëtteg a Routingtabellen ze liesen, déi ni de Problem waren.
Wien de Link konfiguréiert: zwéi Besëtzmodeller
Am éischte Modell konfiguréiert OpenVPN Adressen a Route beim Verbindung opbauen. Dat ass dat standardmäßegt Verhalen an dat einfachst ze begrënnen, well eng eenzeg Komponent den Zoustand schaaft an en erëm ewech hëlt. Am zweete Modell besëtzt en externen Manager d’Schnittstell, an ifconfig-noexec verhënnert, datt OpenVPN seng Adresskonfiguratiounsbefehler ausféiert, a gëtt d’Parameter un Skripter weider. Dann muss de Manager d’korrekt lokal an d’Peer-Konfiguratioun selwer u-wenden, wat méi Aarbecht ass wéi den Numm vun der Optioun suggeréiert. Tëschent deenen zwéi wielen ass eng Fro doriwwer, wien de Link däerf änneren, während en uewen ass.
ifconfig-noexec deckt nëmmen Adressen of: d’Routingtabell bleift onberéiert, an d’Routekonfiguratioun gehéiert zu route-noexec. Behandelt déi zwou Direktiven als getrennt Kontrollen mat getrennte Besëtzer, well eng ze setzen an déi aner unzehuelen eng heefeg Quell vun hallef konfiguréierte Linke ass. Wielt genau ee Besëtzer pro Schicht, Adressen op enger Plaz an Route op enger Plaz. En Netzwierkmanager an en VPN-Hëllef, déi allebéid Adressen schreiwen, ass de Wee, wéi eng Trennung e Zoustand läscht, op deen déi aner Säit nach ëmmer sech verléisst.
Inspektéiert den Apparat aus dem Nummraum, deen zielt
Inspektéiert den Apparat aus dem Nummraum, an deem de VPN-Prozess leeft, an net aus deem, an deem är Shell just zoufälleg ass. Déi zwou Kommandoen hei drënner beäntweren verschidde Froen, an den Ënnerscheed weist sech, wann en Host eng Schnittstell gesäit, déi e Container net gesäit. Féiert se an der ugegebener Reiefolleg aus, well déi zweet nëmme Sënn huet, wann dir wësst, ob de Link iwwerhaapt existéiert.
ip -details link show dev tun1
ip tuntap show
Den éischte Kommando dréckt de Link esou, wéi de Kernel en gesäit, inklusiv Fändelen an den Typ vun der Schnittstell, an esou bestätegt dir, datt dëst den Apparat ass, deen dir gemengt hutt. Den zweete lëscht persistent tun/tap-Andräg op, déi existéieren, ouni datt ee Prozess se hält. Eng Schnittstell, déi op hire virgesinne Besëtzer waart, ass eng aner Situatioun wéi en liewegen Tunnel, deen un eng aner VPN ugehänkt ass, an nëmmen déi zweet erkläert, firwat är eege Verbannung feel schléit. Fannt de Prozess, deen den Apparat hält, ier dir eppes ännert, well e persistenten Andrag an eng besat Schnittstell verschidde Léisungen hunn.
Ënnerstëtzung fir méi Queueën ass eng spezifesch Driveropstellung mat hiren eegenen Ufuerderungen, keng Erlaabnes fir onbezunn Prozesser, eng Schnittstell ze deelen. Eng lieweg Sessioun vun engem anere Besëtzer ass e Koordinatiounsproblem, an keng Profilännerung léist et.
Zwou Zorte vu Persistenz
D’Kernelpersistenz an persist-tun beschreiwen Liewensdaueren, déi liicht ze verwiesselen an deier ze verwiesselen sinn. En persistenten Apparat existéiert onofhängeg vun engem Prozess, also iwwerlieft en en Stopp a kann vum nächste Start erëm benotzt ginn. persist-tun hält Ressourcen iwwer ënnerstëtzte mëll Resets bannen an engem OpenVPN-Prozess, e vill méi kuerzen Horizont. Keng vun deenen zwou versprécht, datt d’Stoppe vum Service Route an Adressen op der Plaz léisst, an eng Schnittstell, déi sichtbar bleift, ass keen Beweis fir eng funktionéierend verschlësselt Sessioun.
Bestätegt och den Backend, well eng virugeschaaften Schnittstell seet näischt doriwwer, wéi eng Implementatioun se opmécht. Communautéitsbuilden, déi de direkten Datapad droen, probéieren en ze benotzen, ausser den Design seet anescht. Wou d’Versioun de Schalter ënnerstëtzt, wielt disable-dco amplaz de Benotzerraumwee; méi al Motoren an aner Clienten hunn esou eng Direktiv net, also halt d’Versiounsbedingung nieft der Optioun, amplaz unzehuelen, datt se gëllt.
Wat briecht, wann nëmmen de Start getest gëtt
Eng Besëtzofmachung kann den éischten Test bestoen an am leschten feel schloen, wat de Start eleng zu enger schlechter Iwwerpréiwung mécht. Observéiert amplaz zwou Iwwergäng: e mëllen Reset, an e komplett Stopp, deem e Start follegt.
systemctl status openvpn-client@lab
ip -details link show dev tun1
De Start ass dee liichten Fall: d’Unitéit kënnt erop, de Link erschéngt, an d’Statusausgab nennt de Profil, deen geluede gouf. D’Verbannen ass de Moment, an deem den Daemon den Apparat opmécht, also féiert d’Link-Iwwerpréiwung aus, nodeems d’Unitéit mëllt, datt se aktiv ass, an net virdrun. Wann de Link existéiert, während den Zoustand nach aktivéiert, kuckt dir en persistenten Apparat, un deen nach keen ugehänkt ass, an net en funktionéierende Tunnel. Schéckt richtegen Trafic duerch de Link, ier dir weidergitt, well eng ugehänkten Schnittstell ouni brauchbar Route nach ëmmer e Feeler ass.
kill -SIGHUP $(pidof openvpn)
journalctl -u openvpn-client@lab -n 40
systemctl stop openvpn-client@lab
ip -details link show dev tun1
E mëllen Reset soll d’Sessioun brauchbar an d’Ressourcen intakt loossen, an dat ass d’Aarbecht, déi persist-tun mécht. E komplett Stopp ass d’Plaz, wou en externen Manager sech weist: wann de Link oder seng Adressen de Stopp iwwerliewen, besëtzt en een aneren, an dat ass entweder den Zoustand, deen dir dokumentéiert hutt, oder de Bug, deen dir just fonnt hutt. Notéiert béid Observatiounen nieft dem Profil, sou datt déi nächst Ännerung aus Beweiser ufänkt an net aus engem Diagramm.