Een eenzegen ëffentlechen Host fir VPN a Web: wéi een d'Rollen deelt
Eng eenzeg ëffentlech IP kann Tunnellen terminéieren, HTTPS déngen an zwou privat LAN erreechen. Entscheed als éischt, wiem d'Adress, all Port an d'Viruleedungspolitik gehéiert.
Eng eenzeg Maschinn kann déi dräi Bedierfnesser op eemol erfëllen: Tunnellen terminéieren, op HTTPS äntweren an tëschent zwou private LAN viruleeden. Ob dat sënnvoll ass, hänkt vun dräi Saachen of, déi een um Pabeier decidéiere kann: wiem déi ëffentlech Adress gehéiert, wiem all Port- a Protokollpaar gehéiert an a wéien Prozess d'Paketen duerf viruleeden. Wann dat richteg ass, ass den gedeelten Host näischt Besonnesches. Wann et falsch ass, verbréngt Dir e Weekend mat engem Service, deen propper ufänkt an ni äntwert.
Wat duerno kënnt, ass eng Entscheedungsprozedur, kee Baublat. All Schrëtt endegt mat der Prüfung, déi beweist, datt d'Roll, déi Dir just bäigefüügt hutt, wierklech isoléiert ass.
Wielt den Besëtzer vun der Adress virun de Porten
En Tunnel-Endpunkt an e Webserver kënnen e Kernel deelen; eng Adress, e Port an e Protokoll gläichzäiteg ze deelen, dat ass wat feelt. WireGuard hëlt normalerweis UDP 51820, OpenVPN hëlt UDP 1194 oder TCP 443, an e Webserver hëlt TCP 443. Dat schmierzhaft Paar ass OpenVPN iwwer TCP 443 niewent HTTPS, well béid dee selwechte Socket wëllen an de Kernel en deem gëtt, deen sech als éischten gebonnen huet. Nëmmen en Demultiplexer dovir, wéi sslh oder e Proxy, dee TLS versteet, léisst se dee Port deelen, an hien bäisetzt eng Komponent, där hire Feeler genee wéi e Firewallproblem ausgesäit.
Kuckt d'Besëtzer, ier Dir eppes ännert: ss -lntup dréckt d'lokal Adress, de Port an de Prozess vun all Socket of, deen lauschtert. Zwou Zeilen, déi 0.0.0.0:443 weisen, heeschen, datt den zweeten Service sech ni gebonnen huet, sou frou wéi säin Init-Skript och war. D'Bréck verréckelt och den Besëtzer. Wann eth0 sech mat br0 verbënnt, geet d'IP op br0 an all Firewallregel, déi eth0 nennt, entsprécht net méi, also bannt d'Servicer op der Bréck a bestätegt mat ip -br addr.
Déiselwecht Besëtzersregel erkläert eng Iwwerraschung, déi bei virtuellen Maschinnen opkënnt. En Tunnelserver, dee bannen an engem Gaascht um selwechten LAN leeft, behält d'Adress vum Gaascht, also Verbindungen, déi op d'Adress vum Host selwer zielen, bleiwen um Host an den Tunnel vum Gaascht gesäit se ni, wat och ëmmer de Clientprofil seet.
Rout tëschent den zwou LAN oder NAT eng Säit
Zwou LAN, déi sech net gesinn, kënnen alleng deen ëffentlechen Host uruffen, deen dann tëschent den Tunnellen viruleet. Dee gerouteten Design brauch dräi Saachen: Viruleedung ageschalt, eng Rout op all wäit Präfix an eng Viruleedungspolitik, déi den Transit duerchléisst. sysctl -w net.ipv4.ip_forward=1 deckt déi éischt of, ip route add 10.20.0.0/24 dev wg1 déi zweet, an eng nftables-Linn wéi nft add rule inet filter forward iifname "wg0" oifname "wg1" accept déi drëtt.
Quell-NAT ass méi einfach bäizesetzen a méi schwéier ze debuggen. Masquerading schreift d'Adress vum Client ëm, also gesäit déi wäit Säit den Hub amplaz vum richtege Host, an seng Zougangsregelen a seng Loge sinn net méi nëtzlech fir d'Attributioun. Wann zwou Netzwierker Är sinn, rout. Wann eng Säit engem Drëtten gehéiert, deen eng Retourrout net bäisetzt, ass NAT déi Optioun, déi dës Woch erausgeet. Op alle Fall schreift de Adressplang op, well zwou iwwerlappend /24 kann een duerch keng Konfiguratioun routeieren.
Näischt dru, datt d'Këscht als Internetausgang fir en Laptop déngt, verhënnert net, datt déiselwecht Këscht ankommend Tunnellen terminéiert. Nëmmen iwwerlappend Adressen verhënneren et, an dofir ass den Adressplang dat Dokument, op dat et ukënnt.
Test d'Deelung, wärend zwou Rolle gestoppt sinn
Den nëtzlechen Test ass eng Subtraktioun: stopp zwou Rollen a bestätegt, datt déi drëtt nach äntwert. Eng Webufro soll ofschléisse mam Tunnelservice erof, an en Tunnelshandshake soll ofschléisse mam Webserver gestoppt. Wa béid nëmmen dann funktionéieren, wann alles leeft, hutt Dir eng zoufälleg Ofhängegkeet, wéi eng gedeelte Firewalltabell, eng verierrt Rout oder en Numm, deen op déi falsch Adress weist.
Dräi Kommandoe maachen deen Test konkret. curl -sk --resolve example.test:443:203.0.113.10 https://example.test/ beweist, datt de lokale Lauschterer ouni externen DNS äntwert, wg show um Client beweist, datt den Handshake fäerdeg ass, an tcpdump -ni any port 51820 um Hub trennt e Routingproblem vun engem Schlësselproblem. En Handshake, deen ni an der Opnam erschéngt, ass virum Host gestuerwen: Firewall vum Provider, falsch ëffentlech Adress oder eng NAT-Regel um Wee.
Widderhieft d'Subtraktioun fir déi virugeleet LAN. Mat engem Peer ofgekoppelt, soll e Ping iwwer den Hub feelen; mat him erëm verbonnen, soll de Ping sech erkënnen ouni eng Regel unzegräifen. E Ping, deen sech nëmmen nom Neistart vum Tunnel erhëlt, weist op Politik amplaz op Erreechbarkeet, an dat ass eng aner Korrektur.
Halt de Reegelsatz liesbar, wärend Dir Rollen subtrahéiert. nft list ruleset soll eng Akzeptanzregel pro Richtung weisen, déi Dir wierklech braucht, an eng Viruleedungskette, déi alles akzeptéiert, ass keng Trennung, et ass eng funktionéierend Demo.
Nëmme IPv6-Zougangslinnen an IPv4-Servicer
Verschidde Zougangslinnen ginn nëmmen IPv6-Erreechbarkeet, an d'Servicer musse nach ëmmer iwwer IPv4 publizéiert ginn. Den Tunnel selwer geet iwwer déi Famill, déi nach Verkéier duerchléisst, wärend de publizéierte Service op enger Adress bannen am Tunnel sëtzt. Dat dréint déi gewéinlech Unhuelung ëm an zerbriecht d'Monitoring stëll: eng Firewallregel oder eng Uptime-Prüfung, déi fir de IPv4-Wee geschriwwe gouf, iwwerwaacht elo eng Interface, déi näischt dréit.
Test all Famill eenzel mat curl -4 an curl -6, well eng erfollegräich Ufro näischt iwwer de Wee seet, deen Dir net probéiert hutt. D'Besëtzerschaft vun de Porten ännert sech net tëschent de Familljen, awer de Lauschterer schonn: ss -lntup listet IPv4- an IPv6-Sockelen an getrennten Zeilen, an 0.0.0.0:443 deckt [::]:443 net of, ausser de Prozess huet en Dual-Stack-Socket gefrot.
E Service, deen op enger Famill äntwert an op der anerer refuséiert, ass normalerweis e Lauschtererproblem, keen Routingproblem. Ier Dir den Design fäerdeg nennt, bestätegt, datt all Roll hir eege Adress oder hire eegene Port huet, datt d'Viruleedung ageschalt an erlaabt ass, an datt all Roll nach äntwert, wann déi aner zwee gestoppt sinn.