Jafnvel fartölva bak við NAT þjónustuveitandans getur þjónað kollega, svo framarlega sem VPN-þjónninn er fundarstaðurinn. Tvær aðferðir ná þangað: biðlarinn hringir út og biður þjóninn að halda hlustaðri porti, eða þjónninn birtir port og þýðir það inn í göngin. Báðar leysa sama aðgengisvandann og hegða sér öðruvísi við bilun, eftirlit og skráningu. Þrjú skilyrði ráða því hvor á við uppsetninguna þína.

Tvær myndir, einn fundarstaður

Í fyrri mynd opnar biðlarinn SSH-session út og biður þjóninn hlusta á valið port, og sendir hverja tengingu aftur um þá session. Ekkert er sent áfram á þjóninum og engin pakkabýðing á sér stað, svo einu kröfurnar eru SSH-reikningur, leyfð framsetning og eldveggjarregla fyrir portið. Þjónustan helst bundin við loopback á biðlaranum, sem er venjulega það sem óskað er.

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

Í seinni mynd á þjónninn hið opinbera port og endurskrifar hverja tengingu í átt að göngufangi biðlarans. Það krefst virkrar IP-framsetningar, þýðingar á áfangastað á innleið og þýðingar á uppruna á útleið, og heldur áfram að virka þegar engin SSH-session er til. Portið tilheyrir þjóninum en ekki session, og það er eiginleikinn sem ræður flestum raunverulegum tilvikum.

Hvorug myndin er öruggari að upplagi. Báðar enda á að afhjúpa eitt þjónustuport fyrir öllum sem ná í hið opinbera fang þjónsins, og báðar eru enn háðar eigin auðkenningu þjónustunnar.

Skilyrði eitt: verður portið að lifa lengur en sessionin

Öfug framsetning lifir nákvæmlega jafn lengi og SSH-sessionin sem bjó hana til. Þegar tengingin dettur út hverfur hlustandinn og kolleginn sér hafnaða tengingu í stað hægs slóðar. Eftirlit með skipuninni með systemd-einingu og endurræsingarstefnu lagar það, og ExitOnForwardFailure=yes gerir mislukta bindingu sýnilega samstundis í stað þess að skilja eftir session án framsetningar.

Þýtt port lifir endurræsingar ef reglurnar eru varðveittar, en það er háð því að biðlarinn haldi sama göngufangi. Kvótakerfi sem gefur fartölvunni annað fang eftir endurtengingu beinir reglunni hljóðlaust í tómið. Taktu göngufangið frá fyrst, skrifaðu svo regluna, og meðhöndlaðu hvort tveggja sem eina breytingu.

Ef þjónustan verður að svara klukkan þrjú að nóttu án þess að nokkur fylgist með, hefur myndin með portinu sem þjónninn birtir færri hreyfanlega hluta, því eina ferlið sem verður að vera á fótum er göngin sjálf.

Skilyrði tvö: hver á eldvegginn og skrárnar

Öfuga myndin heldur allri stefnunni á tveimur stöðum. sshd ákveður gegnum AllowTcpForwarding hvort fjög framsetning sé leyfð yfirhöfuð, og GatewayPorts ákveður hvort hlustandinn bindist loopback eða hverju fangi. Með sjálfgefnu no kemst kollegi utan þjónsins ekki að portinu þó framsetningin hafi tekist, og það lítur út eins og brotin göng þegar það er í raun bindifang.

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

Þýða myndin þarf virka framsetningu og tvær reglur, og seinni reglan er þar sem flest uppskriftir fara úrskeiðis. Að takmarka upprunabýðingu við conntrack-stöðuna DNAT þýðir að aðeins tengingar sem áfangastaðarreglan bjó til eru endurskrifaðar, í stað hvers pakka sem þjónninn sendir inn í göngin.

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

Sú endurskrifun eyðileggur líka rekjanleikann. Eftir hana sér biðlarinn hvern hringjanda sem göngufang þjónsins, sem fellir hverja hraðatakmörkun á hvert fang í eina fötu og felur hver sendi hvað. Ef rekjanleiki skiptir máli skaltu ljúka tengingunni á þjóninum eða halda leyfisákvörðuninni þar og miðla auðkenni í haus sem þjónustan treystir. Valið milli þessara tveggja lagfæringa fer eftir því hvort þjónustan les yfirhöfuð proxy-haus.

Skilyrði þrjú: eitt port eða mörg, og hver á nafnið

Ein þjónusta á einu porti er tilvikið þar sem öfug framsetning vinnur á álagi. Þú þarft eina skipun, einn reikning og eina eldveggjarreglu, og hreinsunin er að drepa sessionina. Margar þjónustur á sama opinberafangi ýta þér í átt að myndinni sem þjónninn birtir, því hver öfug framsetning þarf eigið þjónsport og mengið stækkar með hverri þjónustu.

Nöfn gera þetta flóknara. Öfug framsetning getur setið bak við TCP-proxy sem beinir eftir SNI, en þýtt port er venjulega eitt port á hverja þjónustu. Ef þjónustan lýkur TLS sjálf og þarf upprunalega hýsingarheitið varðveitir proxy-aðferðin það, og DNAT-aðferðin varðveitir það aðeins ef þjónustan samþykkir það heiti á því porti.

Skrifaðu niður hvaða af þremur skilyrðum réð myndinni. Annars mun næsta manneskja sem bætir við annarri þjónustu opna sömu samanburðinn með minna samhengi.

Ákveddu, prófaðu svo að utan

Prófaðu slóðina frá neti sem hefur enga leið að fartölvunni, og fylgstu með teljurunum á þjóninum meðan beiðnin gengur. Prófun frá þjóninum á hans eigið opinberafang sannar ekkert hér, því pakkinn verður til staðbundið og nær aldrei innkomna þýðingarkróknum, svo prófið getur staðist meðan raunverulega slóðin er brotin.

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

Teljurar sem standa í stað þýða að pakkinn náði aldrei reglunni, sem bendir á veitandann eða eldvegg hýsingarinnar. Teljurar sem hreyfast meðan þjónustan hafnar benda á eldvegg biðlarans sjálfs eða fangið sem þjónustan hlustar á. Göng sem bera pakkann en skila engu er slóðar- eða bakleiðarvandamál, og ekkert þessara þriggja útkoma ætti að vera kembifundið með því að breyta millistykki biðlarans. Skrifaðu niður hvaða teljari hreyfðist áður en þú breytir einhverju, því næsta próf þarf þá grunnlínu.

Þegar myndin virkar skaltu skrá portið, eigandann og eftirlitsaðferðina við hlið göngustillingarinnar. Aðgengislögun sem er aðeins til í skeljasögu einhvers er ein endurræsing frá endurteknu atviki.

Tengdir greinar