Och e Laptop hannert dem NAT vum Provider ka engem Kolleg déngen, soulaang de VPN-Server als Treffpunkt funktionéiert. Zwee Mechanisme féieren dohinner: de Client wielt no baussen a freet de Server, en lauschende Port ze halen, oder de Server publizéiert e Port an iwwersetzt en an den Tunnel. Béid léisen déi selwecht Erreechbarkeetsproblem a verhalen sech ënnerschiddlech bei Feeler, Iwwerwaachung a Logging. Dräi Konditiounen entscheeden, wéi eng an Är Konfiguratioun gehéiert.

Zwee Formen, ee Treffpunkt

An der éischter Form mécht de Client eng SSH-Sessioun no baussen op a freet de Server, op engem gewielte Port ze lauschen, an deen all Verbindung duerch déi Sessioun zréckschéckt. Um Server gëtt näischt weiderginn an et geschitt keng PaketIwwersetzung, dofir sinn déi eenzeg Ufuerderungen en SSH-Kont, eng erlaabte Weidergabe an eng Firewallregel fir de Port. Den Deenscht bleift un d'Loopback um Client gebonnen, wat meeschtens dat ass, wat een wëll.

ssh -N -R 8081:127.0.0.1:8080 -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 [email protected]

An der zweeter Form gehéiert dee öffentleche Port dem Server an hie schreift all Verbindung op d'Tunneladress vum Client ëm. Dat erfuerdert ageschalt IP-Weidergabe, eng Ziliwwersetzung beim Erauskommen an eng QuellIwwersetzung beim Erahaus, an et funktionéiert nach ëmmer, wann et keng SSH-Sessioun gëtt. De Port gehéiert dem Server an net enger Sessioun, an dat ass d'Eegeschaft, déi déi meescht reell Fäll entscheet.

Keng vun deenen zwou Formen ass vu sech aus méi sécher. Béid stelle sech mat engem Deenschtport all deenen aus, déi d'ëffentlech Adress vum Server erreeche kënnen, a béid hänke weider vun der eegener Authentifizéierung vum Deenscht of.

Konditioun ee: muss de Port méi laang wéi d'Sessioun liewen

Eng ëmgedréint Weidergabe lieft genee sou laang wéi d'SSH-Sessioun, déi se gemaach huet. Wann d'Verbindung fält, verschwënnt de Lauscher an de Kolleg gesäit eng verworf Verbindung amplaz vun engem luesen Wee. D'Iwwerwaachung vum Kommando mat enger systemd-Eenheet an enger Restartpolitik léist dat, an ExitOnForwardFailure=yes mécht eng feelgeschloen Bindung direkt sichtbar, amplaz eng Sessioun ouni Weidergabe lafen ze loossen.

En iwwersetzte Port iwwerlieft Neistarts, wann d'Regele persistéiert sinn, awer et hänkt dovun of, datt de Client déiselwecht Tunneladress behält. En dynamesche Pool, deen dem Laptop no enger Neiverbindung eng aner Adress gëtt, weist d'Regel roueg op näischt. Reservéiert fir d'éischt d'Tunneladress, schreift duerno d'Regel, a behandelt déi zwee als eng Ännerung.

Wann den Deenscht ëm dräi Auer nuets ouni een deen nokuckt äntwere muss, ass d'Form mam vum Server publizéierte Port déi mat manner beweeglechen Deeler, well deen eenzege Prozess, deen uechter misst bleiwen, den Tunnel selwer ass.

Konditioun zwee: wiem gehéiert d'Firewall an d'Loggen

D'ëmgedréit Form hält déi ganz Politik op zwou Plazen. sshd entscheet iwwer AllowTcpForwarding, ob remote Weidergaben iwwerhaapt erlaabt sinn, an GatewayPorts entscheet, ob de Lauscher un d'Loopback oder un all Adress bindt. Mam Standard no kann en Kolleg baussen dem Server de Port net erreechen, obwuel d'Weidergabe gelungen ass, an dat gesäit aus wéi en futti Tunnel, woubäi et tatsächlech eng Bindungsadress ass.

sudo ss -ltn '( sport = :8081 )'
sudo grep -E '^(GatewayPorts|AllowTcpForwarding)' /etc/ssh/sshd_config

D'iwwersat Form brauch ageschalt Weidergabe an zwou Reegelen, an déi zweet Regel ass där, wou déi meescht Rezepter falsch leien. D'QuellIwwersetzung op den conntrack-Zoustand DNAT ze beschränken heescht, datt nëmmen déi Verbindungen ëmgeschriwwe ginn, déi d'Zilregel gemaach huet, amplaz vun all Paket, deen de Server an den Tunnel schéckt.

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8081 -j DNAT --to-destination 10.88.0.6:8080
sudo iptables -t nat -A POSTROUTING -o tun0 -m conntrack --ctstate DNAT -j SNAT --to-source 10.88.0.1

Déi Ëmschreiwung zerstéiert och d'Attributioun. Duerno gesäit de Client all Uruffer als Tunneladress vum Server, wat all Drossel pro Adress an een Eemer zesummebréngt an et verstoppt, wien wat geschéckt huet. Wann Attributioun wichteg ass, beend de Verbindung um Server oder behält d'Erlaabnesentscheedung do a gëff eng Identitéit an engem Header weider, deem den Deenscht vertraut. D'Wiel tëschent dësen zwou Korrekturen hänkt dovun of, ob den Deenscht iwwerhaapt en Proxy-Header liest.

Konditioun dräi: ee Port oder vill, a wiem gehéiert den Numm

Een eenzegen Deenscht op engem eenzegen Port ass de Fall, wou d'ëmgedréit Weidergabe am Opwand gewënnt. Dir braucht ee Kommando, ee Kont an eng Firewallregel, an d'Botzen ass d'Sessioun ëmzebréngen. Méi Deenschtleit op därselwechter ëffentlecher Adress drécken Iech op d'Form, déi de Server publizéiert, well all ëmgedréit Weidergabe säin eegenen Serverport brauch an de Set mat all Deenscht wiisst.

Nimm maachen et nach méi komplizéiert. Eng ëmgedréit Weidergabe kann hannert engem TCP-Proxy sëtzen, deen no SNI routet, während en iwwersetzte Port normalerweis ee Port pro Deenscht ass. Wann den Deenscht selwer TLS ofléisst an den ursprénglechen Hostnumm brauch, behält de Proxy-Usaz en, an den DNAT-Usaz behält en nëmmen, wann den Deenscht deen Numm op deem Port akzeptéiert.

Schreift op, wéi eng vun den dräi Konditiounen d'Form entscheet huet. Soss wäert déi nächst Persoun, déi en zweeten Deenscht bäisetzt, déiselwecht Vergläichung mat manner Kontext erëm opmaachen.

Entscheet, a test dann vun dobaussen

Test de Wee vun engem Netz aus, dat keng Route zum Laptop huet, an observéier d'Zieler um Server, während d'Ufro leeft. Vum Server op seng eegen ëffentlech Adress ze testen beweist hei näischt, well de Paket lokal entsteet an ni den agaangenen Iwwersetzungshaken erreecht, sou datt den Test ka passéieren, während de richtege Wee futti ass.

sudo iptables -t nat -L PREROUTING -n -v
sudo tcpdump -ni any 'tcp port 8081' -c 20

Zieler, déi flaach bleiwen, heeschen, datt de Paket ni bei d'Regel ukomm ass, wat op de Provider oder d'Firewall vum Host weist. Zieler, déi sech beweegen, während den Deenscht verworf, weisen op d'Firewall vum Client selwer oder op d'Adress, op déi den Deenscht lauscht. En Tunnel, deen de Paket dréit, awer näischt zréckgëtt, ass e Routing- oder Réckwee-Problem, an keen vun dësen dräi Resultater sollt duerch d'Editing vum Clientadapter debuggt ginn. Schreift op, wéi en Zieler sech beweegt huet, ier Dir eppes ännert, well den nächsten Test déi Basislinie brauch.

Soubal d'Form funktionéiert, notéiert de Port, den Eegentemer an d'Iwwerwaachungsmethod nieft der Tunnelkonfiguratioun. Eng Erreechbarkeetskorrektur, déi nëmmen an engem senger Shell-Geschicht existéiert, ass een Neistart ewech vun engem widderhuelte Virfall.

Ähnlech Artikelen