Server oder Client: wéi eng OpenVPN-Uniti op engem Pi mat Duebelroll
Zwou OpenVPN-Instanze deelen sech en Pi: déi eng hëlt Roaming-Benotzer un, déi aner wielt sech beim Upstream-Ubidder an. Liest den Numm vun der Uniti an den Dossier, ier Dir eng vun deenen zwee nei start.
Zwou OpenVPN-Prozesser lafen op engem Pi, deen zur selwechter Zäit Roaming-Benotzer unhëlt an en Upstream-Ubidder erreecht, an si deelen bal näischt ausser der Hardware. Dee engen lauschtert op erakommend Tunnelen, während deen aneren no baussen wielt. Jiddwereen liest säin eegenen Dossier, an jiddwereen huet säin eegene Fehlermodus. Déi falsch Uniti nei starten ass de geleefegste Wee, wéi eng Client-Korrektur amplaz de Lauschterer aus dem Gläichgewiicht bréngt.
Stëmmt den Numm vun der Uniti op den Dossier of, deen se lued
Upstream 2.6 liwwert zwou Schabloun-Unitien, [email protected] an [email protected]. D'Server-Schabloun fänkt an /etc/openvpn/server un a lued %i.conf vun do. D'Client-Schabloun fänkt an /etc/openvpn/client un. Eng Instanz mam Numm roaming kann op béide Plaze gläichzäiteg existéieren, als Server an als Client, mat zwou onofhängege Konfiguratiounen an ouni Verbindung tëscht hinnen ausser dem String.
Frot systemd amplaz vum Dateisystem, well d'Packer Drop-ins dobäisetzen, déi den Aarbechtsdossier oder d'Argumenter kënnen änneren, déi de Binär kritt.
systemctl list-units --type=service 'openvpn-*@*' systemctl cat [email protected] systemctl show -p WorkingDirectory -p ExecStart [email protected]
Den éischte Kommando lëscht all instanziéiert Uniti op, och déi, déi feelgeschloen an geluede bliwwen sinn. Den zweete dréckt d'Uniti-Datei zesumme mat enger Iwwerschreiwung aus. Den drëtten ass de schnellste Wee, déi zwou Tatsaachen ze gesinn, déi d'Fro entscheeden: den Dossier, an deem de Prozess ufänkt, an den Konfiguratiounspad, deen him ginn ass.
Entscheet no der Richtung vun de Paketen, net nom Numm vum Interface
Eng Server-Instanz huet e lauschterende Socket a hëlt Verbindungen un. Hire verschlësselten Transport ass lokal Input a lokal Output op dem Pi, während den Traffic, deen si fir Benotzer weiderleet, dem Weiderleitungswee follegt an engem anere Reegelset gehorcht. Eng Client-Instanz huet an deem Sënn keen Ecoutant: si wielt sech bei engem Peer an, dofir ass hire verschlësselten Transport lokalen Output a Richtung Ënnerschicht.
Dee Virschiid seet Iech, wou eng Regel gehéiert. Eng Regel, déi zu engem Interface bannent enger Weiderleitungskette passt, erlaabt nëmmen den Traffic, deen d'Routing schonn ausgewielt huet; si wielt ni de Wee. Wann d'Pakete vun engem Roaming-Benotzer duerch de falsche Wee erausgoen, ass d'Kette fir ze préiwen forward, net output.
Kuckt d'Sockelen un, ier Dir theoriséiert. En Server, deen un udp/1194 gebonnen ass, weist e lauschterende Socket. De Client weist eng Associatioun mat der Adress vum Ubidder an näischt, wat lauschtert.
ss -lunp | grep openvpn ss -unp state established '( dport = :1194 or sport = :1194 )'
D'Standardroute vun enger Instanz kann d'Äntwerten vun der anerer fänken
E redirect-gateway, deen den Upstream-Client dréckt, installéiert eng Standardroute, déi mat allem aneren op der Maschinn konkurréiert, och mat den Äntwerten, déi de Server de Roaming-Benotzer schéckt. OpenVPN mécht eng Ausnam fir seng eegen Peer-Adress, sou datt den Tunnel erreechbar bleift, awer déi Ausnam seet näischt iwwer en Telefon an engem Hotelle-Netzwierk.
D'Symptom ass meeschtens asymmetresch. Den Handshake gëtt fäerdeg, de Client mellt sech verbonnen, an den Traffic stierft no dem éischten Äntwertpaket. Quellbaséiert Policy-Routing oder eng Paketsmark, déi mat --mark op der Server-Instanz gesat gëtt, hält déi zwou Stréim getrennt; keng vun deenen zwou ass eleng e komplette Reegelset, a béid brauchen gülteg Routen an der Tabell, déi si auswielen.
Test d'lokal Entscheedung amplaz vum Zoustand vum Tunnel, well de Kernel d'Quell an d'Interface auswielt, ier OpenVPN de Paket gesäit.
ip route get 203.0.113.44 ip rule show
Start eng Roll nei a bewäist, datt déi aner iwwerlieft huet
D'Reiefolleg zielt, wann déi zwou Rolle vun der selwechter Ënnerschicht ofhänken. Start de Client fir d'éischt nei, wann d'Upstream-Route muss existéieren, ier Benotzer-Traffic ka weidergeleet ginn, a start de Server fir d'éischt nei, wann Dir nëmmen säin Ecoutant oder säi Pool ännert. Confirméiert op alle Fall duerno béid Unitien, well eng feelgeschloe Neistart déi aner Roll mat veraltem Zoustand ka weiderlafe loossen.
Schreift d'Stoppbedingung virun der Ännerung op: blockéiert de Verloscht vum Upstream-Tunnel d'Roaming-Benotzer, oder fällt en op den eegenen Uplink vum Pi zréck? DNS an IPv6 brauchen och eng kloer Äntwert, well en gedréckte Resolver dacks méi laang lieft wéi d'Route, déi en nëtzlech gemaach huet.
systemctl restart [email protected] systemctl is-active [email protected] journalctl -u [email protected] -n 20 --no-pager
Akzeptéiert d'Ännerung nëmmen, wann dräi Saachen gläichzäiteg gëllen: eng nei erakommend Verbindung gëtt fäerdeg, eng weidergeleet Applikatioun erreecht hiert Zil duerch den intendéierten Ausgang, a béid Prozesser mellen nach hirem erwaarten Peer. Wann eng vun den dräi feelgeet, hutt Dir déi falsch Instanz oder déi falsch Route geännert, an den nächste Schrëtt ass d'Uniti nach eng Kéier ze liesen amplaz eppes anescht nei ze starten.