Firwat Äre LAN e Service op engem VPN-Client net erreecht
E VPN-Client kann e Service hosten, deen de LAN net opmaache kann. Wat meeschtens feelt, ass de Wee zréck: eng Route, en DNAT-Puer oder d’SNAT-Zeil, déi kee bäisetzt.
Ären Tunnel steet, de Service lauschtert, an de Büro-LAN kritt nach ëmmer näischt zréck. Keen huet de VPN futti gemaach. Vum LAN aus gesinn existéiert d’Tunneladress vum Laptop net, bis eppes dem LAN seet, wéi een se erreecht, an d’Äntwert muss dee selwechte Wee zréckkommen, wéi d’Ufro erausgaang ass. Ech hu Leit gesinn, en duerchaus gesonden Tunnel dräimol nei opbauen, ier iergendeen de Wee zréck ugekuckt huet.
Net den Tunnel ass futti
Béid Enner sëtzen op private Beräicher, wat den normale Fall ass an net eng falsch Konfiguratioun. Eng Adress wéi 10.8.0.6 ass am Tunnel reell an et gëtt se soss néierens, dofir huet de LAN kee Grond, do eppes hinzeschécken. Ier Dir d’Routing ufässt, bestätegt, datt de Service iwwerhaapt am Tunnel erreechbar ass: um Client weist ss -ltn, ob de Lauschterer un 127.0.0.1, un de LAN-Interface oder un d’Tunneladress gebonnen ass. En Daemon, deen nëmmen un loopback gebonnen ass, äntwert keenem ausser sech selwer, an do ännert keng Route, keen DNAT an och keng Portweiderleitung eppes drun.
E Proxy um Port 80 oder 443 ass en anert Instrument mat enger anerer Visibilitéit. Et beweegt Ufroen, net Paketen, dofir ass et déi falsch Schicht fir eng roh Datebankverbindung, an et ass genau dee Grëff, duerch dee dëse Problem dräi Instrumenter déif land, ier iergendeen eppes misst.
Form vun der Route: sot dem LAN, wou de Pool ass
Eng statesch Route um LAN-Gateway ass déi propperst Äntwert, wann de LAN an de Pool vum Tunnel sech net iwwerschneiden. Richt de Pool op d’Maschinn, déi den Tunnel ofschléisst:
ip route add 10.8.0.0/24 via 192.168.1.12
route add -p 10.8.0.0 mask 255.255.255.0 192.168.1.12 # Windows, persistent
Dat fléckt just eng Richtung, dofir gesinn hallef fäerdeg Versioune vun dëser Ännerung aus wéi Fortschrëtt. D’Tunnelsäit brauch déi passend Hallschent, soss verléisst d’Äntwert de Client iwwer seng eegen Default-Route a stierft ënnerwee:
push "route 192.168.1.0 255.255.255.0"
Fir en Ënternetz, dat hannert engem Client steet an net hannert dem Server, brauch de Server souwuel eng Systemroute wéi och en iroute-Agedréi an der Datei vun deem Client ënner client-config-dir. Ouni iroute weess OpenVPN, datt de Prefix existéiert, an huet keng Ahnung, wéi e Client en hält: d’Pakete kommen un, an den Daemon huet näischt, fir se ze vergläichen.
Hei ass de Mythos, deen en Numm verdéngt. Eng Route mécht eng Adress erreechbar; se mécht déi aner Säit net prett ze äntweren. Site-zu-Site-Partner leeën nach eng Schicht driwwer, well de wäite Gateway nëmme Quellen innerhalb vun de Prefixe vu senger Politik akzeptéiert, an e Laptop, deen aus engem Heem-Pool kënnt, ass net dobannen.
Form vun NAT: DNAT eran, an d’SNAT-Zeil, déi jiddereen iwwerspréngt
Wann Dir de LAN-Gateway net ufässe kënnt, oder genee ee Port wëllt verëffentlechen, funktionéiert d’Iwwersetzung um VPN-Host ouni iergendeng Route um LAN. Verëffentlecht de Port, weidert en, an iwwersetzt d’Quell um Wee an den Tunnel:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.8.0.6:3000
iptables -A FORWARD -i eth0 -o tun0 -p tcp -d 10.8.0.6 --dport 3000 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -d 10.8.0.6 -p tcp --dport 3000 -j SNAT --to-source 10.8.0.1
Déi drëtt Zeil ass déi, déi feelt. Loosst se ewech a de Client gesäit déi ursprénglech LAN-Adress als Quell, äntwert iwwer seng eegen Default-Route, an déi Äntwert geet an den Tunnel amplaz zréck op de LAN. Ob d’Verbindung iwwerlieft, hänkt dann vun enger Routing of, déi Dir ni geplangt hutt. Mat SNAT gesäit de Client d’Tunneladress vum Server, dofir follegt d’Äntwert dem Tunnel zréck bis zum eenzegen Host, deen d’Iwwersetzung ka réckgängeg maachen.
Consumer-Firmware benotzt seng eege Kettennimm a generéiert déi Iwwersetzung net fir Iech. Op Tomato fält eng Inbound-Regel an WANPREROUTING an duerno an eng Filterkette wéi wanin, an e Reegelset, dat komplett ausgesäit, brauch nach ëmmer eng manuell POSTROUTING-Zeil. Dat ass kee Firmware-Fehler; et ass e Reegelset, dat nëmme fir erakommende Verkéier geschriwwe gouf.
Firwat eng Reegel, déi richteg ausgesäit, de Pak nach ëmmer fale léisst
Déi meescht vun dëse Feeler sinn net an der Reegel, op déi Dir stierrt. Préift véier Saachen an dëser Reihenfolg, a stoppt bei der éischter, déi net hält:
- Reiefolleg vun de Ketten.
iptables -Isetzt uewen an an-Ahänkt ënnen un, dofir entscheet eng fréier erlaabend oder blockéierend Reegel als éischt. - Falsch Kett. Verkéier, deen un de Router selwer adresséiert ass, geet duerch INPUT, an de weidergeleet Verkéier beréiert se ni. Een eenzege Service ze verëffentlechen kann a béiden Regele verlaangen.
- Richtungsfändelen.
-i tun0entsprécht dem Verkéier, dee vu Clientë kënnt, an-o tun0deem, dee Richtung hinnen erausgeet. En REJECT mam falsche Fändel blockéiert eppes, wat Dir net gemengt hutt. - Quellbeschränkung. Eng Weiderleitung, déi eng Clientadress akzeptéiert, funktionéiert vun deem Client a léisst all aner Quell ouni ee Wuert fale.
Eng Reegel mat engem Paketzähler vun null ass iwwerhaapt net um Wee, an d’Zähler ze liesen ass de séiersten Wee, e Problem mat enger falscher Kett vun engem Problem mat enger falscher Reegel ze trennen.
Déi lokal Weiderleitung, wann um LAN näischt ka geännert ginn
Eng lokal SSH-Weiderleitung ëmgeet déi ganz Fro. Se brauch keng Route um LAN, keng Matwierkung vun der Firewall vum Client a kee Port, deen iergendwou verëffentlecht ass:
ssh -N -f -L 3000:10.8.0.6:3000 user@vpn-host
De Service erschéngt dann op localhost:3000 vun der Maschinn, déi den Tunnel hält, a soss néierens. Dat ass d’Grenz: eng Aarbechtsstatioun, ee Port, an d’Weiderleitung stierft mat der Sessioun, wann net eppes se nei startet. Fir en Administrateur, deen eng Staging-Datebank préift, ass et dat richtegt Instrument. Fir eng Kamera oder e Scanner, deen aner Leit mussen erreechen, ass et dat net, well all Benotzer seng eege Weiderleitung bräicht.
Préift béid Richtungen, ier Dir nach eng Reegel bäisetzt
Iwwersetzung hannerléisst Spueren, an se ze liese schléit roden. Um VPN-Host weist conntrack -L, ob d’Iwwersetzung iwwerhaapt geschitt ass, iptables -t nat -L -n -v weist, ob d’Zähler sech beweegt hunn, an tcpdump -ni any port 3000 weist, wéi eng Quelladress tatsächlech ukomm ass. Um Client bestätegt ss -ltn, datt de Lauschterer op enger Adress ass, déi den Tunnel erreeche kann.
Dann wielt déi Form, déi Dir behält. Ee verëffentlechte Port, eng Route fir de ganze Pool an eng Weiderleitung fir een eenzegen Administrateur sinn dräi verschidde Verflichtungen, a se ze vermëschen ass de Wee, wéi aus enger funktionéierender Konfiguratioun eng gëtt, déi ee sechs Méint méi spéit keen erkläre kann. Schreift op, wéi eng Adress vu wou erreechbar ass, an déi nächst Persoun, déi dëst debuggt, fänkt bei der Äntwert un an net beim Tunnel.