Linux-Netzwierk-Nummraim fir eng VPN: wat si net isoléieren
En Nummraum verréckelt Interface’en, Routen a Sockets, net Dateien oder Konten. Hei ass wat eng VPN an hirem eegenen netns deckt, a wou den Trafick nach ëmmer erauskënnt.
Start d’VPN an hirem eegenen Nummraum, fuer eng Applikatioun do, an den Trafick verléisst nach ëmmer iwwer d’Route vum Host. Nichts ass futti: den Nummraum regéiert just d’Prozesser, déi erakommen, an de Leck koum vun engem, deen dat ni gemaach huet. Interface’en, Adressen, Routen, Firewall-Reegelen a Sockets sinn dat, wat den Nummraum besëtzt. Dateien, Konten an déi schonn lafend Servicer sinn et net, an dohier kommen déi meescht Iwwerraschungen.
Wat den Nummraum besëtzt, a wou de Socket gebuer gëtt
Verreegel en Interface an en Nummraum an den Host verléiert en; bau en Tunnel dobannen an den Host kann en net gesinn. Dat ass de Mechanismus hannert enger VPN, déi un en Nummraum gebonnen ass: den Apparat an d’Routen drop liewen an engem Kontext, deen nëmmen déi ausgewielte Prozesser erreechen. Den Host behält seng Standardroute, sou datt alles dobausse onberéiert bleift.
Fir WireGuard zielt de Kontext vum Schafen esou vill wéi déi aktuell Plaz: de UDP-Socket gëtt an deem Nummraum gebonnen, an deem den Interface geschafe gouf, och nodeems den Apparat soss anzwousch geplënnert ass. Wéi eng Routingtabell d’verschlësselt Pakete verfollegen, hänkt vun där Gebuertsplaz of. Wa de Socket an engem Kontext bleift ouni Route zum Peer, da kuckt den Interface no an den Handshake geet ni eraus. Kontrolléier seng Gebuertsplaz, da seng aktuell Plaz.
Wat en Nummraum net isoléiert
Näischt hei trennt Dateisystemer, Konten oder Geheimnisser, an keng vun dëse Grenze kënnt dohier, datt dir en Nummraum geschaf hutt. D’Konfiguratioun vum Resolver ass eng Datei, dofir kann e Prozess dobannen nach ëmmer eng Astellung liesen, déi op den Host-Resolvéier weist, an seng Ufro iwwer déi Route schécken, déi dat implizéiert. Eng Applikatioun, déi d’Ufro un en schonn lafende Broker oder Systemservice weidergëtt, bedéngt e Prozess an engem ganz anere Kontext. Béides si Ufroen, déi d’Grenz ni geduecht war ze beäntweren.
D’Léisung ass eng Datei pro Nummraum ënner /etc/netns/<name>/resolv.conf, oder e bind mount vun enger preparéierter Datei, déi op en Resolvéier weist, deen dobannen erreechbar ass. /etc/resolv.conf um Host z’änneren ännert näischt vun deem, wat den Nummraum gesäit.
D’Plazéierung vun de Prozesser ass d’Kontroll
D’Isolatioun, déi dir kritt, ass genau d’Isolatioun vun de Prozesser, déi dir dobannen start. Eng Shell, déi iwwer den exec-Helfer vum Nummraum gestart gouf, an alles wat se entsteet, bleift dobannen; eng Desktop-Applikatioun, déi aus der Host-Sessioun gestart gëtt, net. Schaf de Kontext, verreegel den Apparat, da beweis béid Säiten:
ip netns add vpn1
ip link set wg0 netns vpn1
ip netns exec vpn1 wg show
wg show
Lies deen éischten wg show vun dobannen aus dem Nummraum an den zweeten vum Host, a reech mat, datt just een vun deenen zwee de Peer oplëscht. Wa béid et maachen, huet den Apparat sech ni geplënnert; wa kee vun deenen zwee, ass en soss anzwousch gaang. Wann de Startmotor e Servicemanager ass, ass d’Unit-Datei ze änneren, net d’Desktop-Ofkierzung. Eng Unit ouni d’Nummraum-Astellung startet den Daemon am Hostkontext an hieft den Design roueg op.
Test aus dem Kontext vun der Applikatioun
Fuer d’Kontroll mat der selwechter Binärdatei an dem selwechte Benotzer, déi d’Applikatioun benotzt, dobannen am Nummraum. Huet DNS a béid Adressfamillen dobäi, well eng IPv6-Route, un déi dir ni geduecht hutt, eng gewéinlech Auswee ass. En Test aus Ärer eegener Shell beweist just, datt Är Shell isoléiert ass.
Da fuer déiselwecht Kontroll um Host a bestäteg, datt d’Äntwerten ënnerschiddlech sinn: Tunneladress an déi virgesinn Ausgang dobannen, Host-Route an d’Büro-Ausgang dobaussen, an de Resolvéier mam Numm. Nenn d’Nummräim nom Deployment an net nom Protokoll, sou datt e Botzskript net zwee dovun duercherneen bréngt.
Weiterleitung, Fehlerpolitik a Botzen
Fir eng Gateway schalt d’Weiterleitung bewosst an a entscheed, wat soll geschéien, wann den Tunnel fällt. En Nummraum blockéiert net d’Routen, déi dir dobannen installéiert, dofir gëtt eng Auswäichroute zum Host benotzt, wann dir eng schaafst. Dat ass eng Politikentscheedung, an se sollt opgeschriwwe ginn, ier en Ausfall se test.
Schreif d’Nummraim, d’Interface’en an de Propriétaire vun der Konfiguratioun op, sou datt d’Botzen just ewechhëlt, wat d’Deployment geschaf huet. D’Netzwierk vum Host bei engem Rollback zrécksetzen mécht aus engem Botzen en Ausfall. D’Säit network_namespaces(7) ass kuerz a wäert et, se ze liesen, ier dir dee Wee designst.