App an engem VPN-Namraum ass aus dem LAN net erreechbar
E Netzwierk-Namraum gëtt engem Programm säin eegene Tunnel a säin eegene Loopback. Verëffentlecht just säi Port mat engem socat-Sprong oder engem veth-Puer amplaz vum Host.
Ären Service schafft op der Maschinn, den Tunnel steet, an den Browser op Ärem Schreifdësch waart nach ëmmer op eng Äntwert. Näischt ass am übleche Sënn futti: d’Applikatioun lauschtert bannen engem Netzwierk-Namraum, an dee Stack ass fir d’LAN onsiichtbar. Säi Loopback gehéiert zum Namraum, dofir huet e Client op enger anerer Maschinn keng Adress, déi de Port erreecht. Een absichtleche Sprong, oder ee veth-Puer, mécht dat fäerdeg, ouni de Rescht vum Host ze beweegen.
Firwat näischt op der LAN-Adress äntwert
Een Namraum ass e kompletten Netzwierk-Stack: Interfaces, Route, Firewall-Reegelen an e private Loopback. E Prozess, deen duerch ip netns exec gestart gëtt, gesäit dee Stack an näischt anescht, dofir gëtt d’Adress, un déi en sech bënnt, just bannen dem Namraum opgeléist. Dem Host seng eege 127.0.0.1 ass eng ganz aner Loopback.
Dofir schléit curl um Host fehl, während dee selwechte Befehl bannen dem Namraum geléngt. D’Applikatioun ass gesond; d’Adress existéiert einfach net am Stack vum Host.
Verëffentlecht een Port mat engem socat-Sprong
socat bréckt déi zwou Stäck am Benotzerraum, an dat duerft, wann een eenzegen TCP-Port muss iwwergoen. D’Hostsäit lauschtert an der LAN a start fir all ugeholl Verbindung en zweete socat bannen dem Namraum, dee sech mam Loopback vun der App verbënnt. Den bannenzege Prozess erreecht d’Applikatioun genee wéi et e lokale Client géif maachen. Näischt un der Routing vum Namraum ännert sech, dofir benotzt d’App den Tunnel weider als eenzegen Ausgang.
socat TCP-LISTEN:9100,reuseaddr,fork EXEC:'ip netns exec vpn socat STDIO tcp-connect:127.0.0.1:9100',nofork
Den externen Prozess brauch root oder d’Fäegkeet, an den Namraum ze goen. Wann d’VPN fält, verléiert d’App hire Wee an de verëffentlechte Port schléit zouen fehl, an dat ass d’Verhalen, dat Dir vun engem Prisong wëllt.
Benotzt e veth-Puer, wann méi wéi een Port iwwergeet
E veth-Puer ass déi richteg Äntwert, wann e puer Porte oder Protokoller mussen iwwergoen, oder wann aner Hosten Verbindungen ufänke mussen. Een Enn bleift am Host, dat anert geet an den Namraum, an e klengt /30 gëtt béide Säiten eng stabil Adress. Dunn schéckt eng Host-Route d’Adress vum Namraum iwwer d’Puer.
ip link add veth0 type veth peer name veth1
ip link set veth1 netns vpn
ip addr add 10.77.0.1/30 dev veth0
ip link set veth0 up
ip netns exec vpn ip addr add 10.77.0.2/30 dev veth1
ip netns exec vpn ip link set veth1 up
Füügt keng Standardroute iwwer den Host dobäi, ausser Dir wëllt de Prisong briechen. Den Tunnel soll den Ausgang bleiwen, dofir ass iwwer d’Puer just déi verëffentlecht Servicëadress erreechbar. Gitt dem Namraum och seng eege Resolver-Datei, well ip netns exec liest /etc/netns/vpn/resolv.conf a just ouni si ass d’Nimmopléisung bannen dem Prisong eidel.
Test vun enger anerer Maschinn, net vum Host
Fëmmt den Test vun enger zweeter Maschinn aus, well den Host en lokale Lauschterer iwwer Weeër erreeche kann, déi näischt iwwer d’LAN soen. Kuckt fir d’éischt, un wat d’Applikatioun bannen dem Namraum wierklech gebonnen ass, a verbënnt Iech du vun dobaussen mat der verëffentlechter Adress. Sech do un all Adress ze bannen, mécht de Prisong net méi breet, well de Wildcard weider zum Namraum gehéiert an d’LAN en net ka gesinn.
ip netns exec vpn ss -lntp
Wann d’Verbindung vum Host funktionéiert an déi aus der LAN net, dann feelt de Sprong oder d’Route, net d’Bindeadress. Start OpenVPN bannen dem Namraum, amplaz en aktiivt tun-Apparat eranzebréngen, well d’Interface ze réckelen et ausschalt an d’Routen ewechhuele kann, déi Dir du vun dobaussen net ka reparéieren. Haalt d’Erhuelungsbefehler op der Konsole, net bannen dem Prisong.