Ziel d'OpenVPN-Prozesser ier s du e Profil beréierst. En Pi, deen Roaming-Benotzer unhëlt an och eng Upstream-Servicer ufuerdert, bedreift zwou Daemonen, an all een liest eng Konfiguratiounsdatei, déi duerch den Instanznumm gewielt gëtt, deen s du agetippt hues. D'Verpakungstemplate ginn dann all Daemon säin eegene Aarbechtsverzeechnis, seng eegen Runtime-Statusdatei a seng eege Tunnelsapparat. Wann s de dës Deelung falsch méchs, verbréngs du en Owend domat, eng korrekt Astellung an enger Datei ze änneren, déi de lafende Prozess ni opmécht.

All Instanznumm wielt seng eegen Datei

An den Eenheetsdateien, déi mat OpenVPN 2.6 geliwwert ginn, droen d'Startargumenter en Instanz-Platzhalter, dee mam Text nom @-Zeechen ausgefüllt gëtt. Den Template vum Server leeft aus dem Server-Konfiguratiounsverzeechnis a léist säin Argument géint %i.conf do, wärend den Template vum Client datselwecht aus dem Client-Verzeechnis mécht. Also liest [email protected] admits.conf am Server-Verzeechnis an [email protected] liest uplink.conf am Client-Verzeechnis, an keen vun deenen Nimm huet eng Bedeitung am aneren Verzeechnis.

Bestäteg d'Zouuerdnung op der Maschinn, amplaz unzehuelen, datt de Paket d'Upstream-Standardwäerter behal huet. En Drop-in vun der Distributioun däerf d'Aarbechtsverzeechnis oder d'Konfiguratiounsargument komplett ersetzen.

systemctl cat [email protected]
systemctl cat [email protected]

Lies d'WorkingDirectory-Linn an d'Konfiguratiounsargument an deem Output, well déi ageschalt Eenheet dat eenzegt ass, wat decidéiert, wéi eng Datei geluede gëtt. En Drop-in, deen --config un ExecStart bäisetzt, gewënnt géint den Template och wann de Template-Wee richteg ausgesäit. Fro no de Fragment- an Drop-in-Weeër, wann s de wësse wëlls, ob eng lokal Iwwerschreiwung am Spill ass. Wann béid Rollen op eng eenzeg Datei opléisen, hues du ee Prozess, dee versicht Server a Client gläichzäiteg ze sinn, an déi méi spéit Optioun an där Datei gewënnt roueg.

Lokalen Transport a weidergeleete Payload treffe verschidde Haken

Déi verschlësselt Verbindung vum Server zu all Roaming-Benotzer gëtt um Pi selwer generéiert, also ginn seng baussenzeg Äntwerten duerch den lokalen Output-Haken eraus. D'Verbindung vum Client zu sengem Upstream-Peer ass och lokal generéierten Output, och wann se en entfernt Netzwierk erreecht. Weidergeleete Payload ass déi drëtt Kategorie, an de Kernel passt se eréischt un, nodeems hien schonn en Ausgabapparat fir de Paket gewielt huet.

FlowHook that sees itWhat to inspect
Roaming user handshakes to the serverLocal input and local outputListener socket, bind address, rule admitting the UDP port
User payload leaving through the upstream tunnelForwardIPv4 forwarding switch, selected route, permission rule, any translation
Pi's own connection to the upstream peerLocal outputUnderlay route to the provider endpoint, not the tunnel route

Eng Regel, déi eng Ausgabsschnittstell an enger Forward-Kette entsprécht, kann e Paket erlaben oder verwerfen, dat d'Routing schonn där Schnittstell zougewise huet, awer se wielt d'Schnittstell ni. Wann ee Host engem Tunnel en Enn setzt an en aneren ufänkt, sinn d'Politik, déi Benotzer-Payload an den Upstream-Tunnel schéckt, an d'Politik, déi dem Pi seng eegen verschlësselt Äntwerten schützt, zwou getrennt Entscheedungen. Se landen zoufälleg op der selwechter physescher NIC, dofir ginn se verwiesselt.

Dës Ënnerscheedung erkläert en heefege hallefe Feeler. D'Benotzer verbannen sech, den Handshake geet duerch, an hiren Traffic geet trotzdem de falsche Wee eraus, well den Handshake lokal war an de Payload forward an nëmmen ee vun deenen zwee iwwerhaapt getest gouf.

Eng importéiert Route kann d'Äntwerten un deng Benotzer verschlécken

D'Sécherheetsastellung vum Client-Profil decidéiert, wat den Upstream an dem Pi seng Routing-Tabell drécke darf, an e breedt Redirect ass d'Optioun, déi en funktionéierenden Duebelrollen-Host an e kaputten ëmwandelt. Wann déi gedréckt Route d'ëffentlech Adresse vun de Roaming-Benotzer deckt, kënnen d'Äntwerten, déi de Server op si generéiert, der neier Route an den Upstream-Tunnel follegen, amplaz iwwer den Underlay erauszegoen. D'Leit bestätegen dacks, datt den Tunnel zum Provider nach funktionéiert, a halen do op, well deen Traffic den eegene Transport vum Tunnel ass an weider fléisst, während alles anescht sech falsch behält.

Eng Politik op Basis vun der Quell oder engem Mark ass de Wee, wéi déi zwou Stréim getrennt bleiwen. Dem OpenVPN seng Linux-mark-Optioun stempelt dem Daemon seng eegen verschlësselt Pakete mat engem Firewall-Mark, deen eng Routing-Regel dann an eng eege Tabell schécke kann. Quelladressen funktionéieren och gutt, wann dem Server seng baussenzeg Äntwerten ëmmer vun enger eenzeger Underlay-Adress erausginn. Béid Approche brauchen valabel Route an der Tabell, déi se auswielt, an eng Ausnam fir den Endpunkt vum Provider, soss kënnt den Tunnel selwer net méi erop.

Fro de Kernel no dem Wee, deen eng Äntwert tatsächlech huelen, ier s de eng Regel schrifts. D'Adressen hei drënner sinn Platzhalter fir eng Underlay-Adress vum Pi an d'ëffentlech Adress vun engem Roaming-Benotzer.

ip rule show
ip route get 198.51.100.7 from 192.0.2.10

Verifizéier d'Deelung, da stopp eng Roll no der anerer

Test déi dräi Stréim getrennt, well en Handshake, deen funktionéiert, näischt iwwer déi aner zwee beweist. Akzeptéier eng nei agehend Verbindung, schéck eng erlaabt Applikatioun duerch den Upstream-Ausgang a bestäteg, datt béid Prozesser nach hir eege Peeren erreechen.

Dann stopp d'Client-Roll a kuck, wat d'Server-Roll behält. Dëst ass dee bëllegste Wee, fir eng Route- oder Mark-Regel ze fannen, déi fir eng Instanz geduecht war an op béid ugewandt gouf.

systemctl stop [email protected]
systemctl status [email protected] --no-pager
ss -lunp | grep openvpn
journalctl -u [email protected] -n 20 --no-pager

Wat s de wëlls gesinn, ass de Listener nach gebonnen, den Tunnelsapparat nach do an de Log fräi vun neie Feeler, während d'Client-Roll ënnen ass. Wann d'Stoppe vum Client och dem Server seng Äntwerten un existéierend Benotzer ofschneit, deelen déi zwou Rollen eppes, wat op eng vun hinnen hätt solle begrenzt sinn. Halt fest, wéi eng Instanz, wéi eng Konfiguratiounsdatei a wéi enger Stréim säin Eegentümer all Ännerung beréiert huet, well déi nächst Persoun, déi dësen Host debuggen, soss déiselwecht Entdeckung vun Null un erëm mécht.

Ähnlech Artikelen