Pi als VPN-Client: een Manager oder eegent Skript?
Vergläicht e NetworkManager-Profil mat engem handgeschriwwene Client-Skript op engem Raspberry Pi, inklusiv vollstännegen Tunnel, DNS, IPv6 a Verhalen, wann den Tunnel fällt.
E Raspberry Pi, deen nëmmen säin eegenen erausgoenden Trafic muss schützen, huet zwee realistesch Konzepter: den Netzwierkmanager den Tunnel besëtze loossen, oder e Skript halen, deen en besëtzt. Béid kënnen Trafic droen. Si schéitere op verschiddenen Plazen, an de Feeler, deen Dir um zwee Auer nuets aus der Distanz diagnostizéiere kënnt, ass deen, deen et wäert ass ze wielen. Vergläicht si no Eegentum, no deem wat en vollstännegen Tunnel bedeit, wa IPv6 an DNS dobäi sinn, an no deem wat geschitt an deem Moment, wou den Tunnel fällt.
Zwee Proprietären fir een Tunnel
Konzept A ass e Profil am Netzwierkmanager vum System: en importéierten OpenVPN-Profil oder eng native WireGuard-Verbindung, déi beim Start vun deem selwechte Service aktivéiert gëtt, deen Ethernet an Wi-Fi eropbréngt. Konzept B ass eng eege Eenheet, déi de Client direkt lafe léisst, d’Konfiguratioun vum Resolver ännert an hir eege Routen a Firewall-Regele installéiert. Béid si legitim Konzepter; si ënnerscheede sech doran, wien d’Routingtabell ännere darf.
D’Feeler si verschidden, well d’Proprietären verschidde sinn. Bei A léisst e Profil, deen net aktivéiert gëtt, d’Interface uewen an den Tunnel ënnen, an d’Loge vum Manager soen firwat. Bei B léisst e Skript, dat hallef geléngt, Routen hannerzeg, déi de Prozess iwwerliewen, deen se geschaf huet. Béid lafen ze loossen ass dat schlëmmt Resultat: zwee Prozesser schreiwen d’Standardroute, zwou Ännerungen um Resolver konkurréieren beim Start, an zwee Sätz Geheimnisser mussen rotéiert ginn.
Wielt ee Proprietär pro Tunnel a deaktivéiert deen aneren, ier Dir eppes testt. Zwee Proprietären heescht och zwou Plazen, wou een nogekuckt, wann den Tunnel uewen ass an näischt opgeléist gëtt. Déi eng eenzeg Regel verhënnert déi meescht vun de verwirrende Zustänn, déi an Pi-VPN-Diskussioune beschriwwe sinn.
Wat en Import schaaft, a wat net
Op Raspberry Pi OS Bookworm an duerno ass dat Standard-Netzwierkkonfiguratiounsinstrument NetworkManager, dofir ass e Profil d’natierlech Heem vun engem Client-Tunnel. Den Import brauch de passenden Plugin installéiert; ouni deen schléit den Import mat enger Noriicht iwwer en net ënnerstëtzten Verbindungstyp feel, wat dat éierlech Signal ass, opzehalen an de Plugin z’installéieren.
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
Den Import späichert e Profil. Hien beweist net, datt déi aner Säit erreechbar ass, an hien garantéiert net, datt all Direktiv an der Datei d’Konversioun iwwerlieft huet. Liest d’Verbindung, déi doraus entstanen ass, nach eng Kéier a kontrolléiert d’Deeler, déi Identitéit an Vertrauen droen: d’Zertifikat, den entfernten Host an de Port, an ob e Passwuert gefrot oder gespäichert gëtt.
D’Aktivéierung mat --ask hält eng Passphrase aus der Shell-Historie op enger gedeelter Maschinn eraus. Fir e Pi ouni Opsiicht wëllt Dir mat der Zäit, datt de Profil beim Start eropkënnt, wat eng separat Entscheedung vum eemolegen manuellen Ergoe ass.
Vollstännegen Tunnel, verglach iwwer béid Konzepter
En vollstännegen Tunnel ass eng Ausso iwwer Routen, net iwwer Absicht, an déi zwou Konzepter drécke se verschidde aus. De Profil-Approche freet de Manager, eng Standardroute an seng Resolver-Astellungen z’installéieren; de Skript-Approche mécht, wat de Skript seet, inklusiv näischt. Keent vun de Konzepter deckt IPv6 of, wann et net gesot gëtt, an eng onberéiert IPv6-Standardroute wäert frou Trafic baussent dem Tunnel droen, während IPv4 perfekt ausgesäit.
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
Benotzt eng Dokumentatiounsadress fir d’Route-Ofwro an ersetzt se duerch en Host, deen Dir däerft iwwerpréiwen. Déi éischt Kommando weist, wéi eng Interface de Pi fir en normale Bestëmmungsuert benotze géif; déi zweet weist, ob nach eng IPv6-Standardroute existéiert; déi drëtt beweist, wéi ee Resolver geäntwert huet. Liest all dräi, ier Dir enger Ausso iwwer e vollstännegen Tunnel gleeft.
Wann d’Instruktioune vum Provider e vollstännegen Tunnel verspriechen, awer d’IPv6-Standardroute iwwerlieft, da leckt de Pi. Deaktivéiert IPv6 um Uplink oder freet de Profil, et ze froen, an entscheet bewosst, amplaz et méi spéit z’entdecken.
Fail-open géint fail-closed
Wann den Tunnel fällt, fällt eng Routingtabell, déi hir Standardroute verléiert, einfach op den physeschen Uplink zréck, an den Trafic geet oppe weider. Dat ass fail-open, an et ass d’Standardverhalen vun deenen zwee Konzepter, wann net eppes et verhënnert. Déi meescht Leit entdecken et Wochen duerno, wann se e Firewall-Log liesen.
Fail-closed kascht Iech den Zougang aus der Distanz, wann den Tunnel ënnen ass, dofir brauch et eng bewosst Ausnam fir de Verwaltungswee. Eng Méiglechkeet ass eng Regel, déi nëmmen d’Adress vum VPN-Peer baussent dem Tunnel erlaabt:
sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject
Vergläicht d’Betribskäschte éierlech. E Profil kann dës Regel meeschtens net ausdrécken, dofir dréckt fail-closed Iech an de Skript-Konzept oder an eng kleng Eenheet, déi d’Regel onofhängeg vum Tunnel installéiert. Op alle Fall loggt d’Refusen eng Woch laang: en stille Refus gesäit genee aus wéi e gebrachenen Service, an Dir wäert de Compteur brauchen, wann e Benotzer mellt, datt eng Säit opgehalen huet ze lueden.
Wielen fir e Pi ouni Écran
Wann d’Image schonn NetworkManager lafen huet, den Tunnel näischt Exotesches brauch, an Dir wëllt, datt hien dem Uplink automatesch follegt, hëlt de Profil. Wann Dir Policy-Routing braucht, verschidden Tunnelen pro Bestëmmungsuert gewielt, oder eng fail-closed-Regel, déi muss existéieren, ier den Tunnel eropkënnt, hëlt de Skript a besëtzt all Deel dovun, inklusiv d’Startuerdnung an d’Botzen. Béid Konzepter ze mëschen kascht méi wéi jiddwerengem eleng.
Tëscht hinne migréieren ass virun allem eng Fro vun der Uerdnung: deaktivéiert den ale Proprietär, bestätegt, datt keng veraltete Route oder Resolver-Anträg iwwerlieft, aktivéiert dann deen neien a startt zweemol nei. Een eenzegen Neistart kann eng Course verstoppen, déi en zweete verroden. Fänkt un, andeems Dir de Pi testt an net den Tunnel: léist en Numm op, sicht eppes iwwer IPv4, sicht iwwer IPv6, wann Dir en behalen hutt, fällt dann den Tunnel a bestätegt, datt d’Verhalen, dat Dir gewielt hutt, wierklech geschitt. Eng Interface an ip link ass den Ufank vum Test, net d’Enn.