Vafri biður um https://203.0.113.10:8443, milliþjónninn tekur við tengingunni og þjónustan á WireGuard-peer svarar aldrei. DNAT-reglan sinnir sínu hlutverki; svarið er sá hluti sem bregst. Fylgdu pakkanum í gegnum báðar þýðingarnar og reglan sem vantar verður augljós. Lagfæringin er ein frekari NAT-yfirlýsing í rétta hookinu, ekki ný göng.

Fylgdu einni beiðni frá upphafi til enda

Beiðnin kemur á opinbera tengið á milliþjóninum, með opinbert vistfang biðlarans sem upptök og vistfang milliþjónsins sem áfangastað. Í nat PREROUTING endurskrifar DNAT-reglan áfangastaðinn í vistfang ganganna hjá peer, 10.90.0.2. Leiðarákvörðunin sendir pakkann síðan út um wg0 og framsendingarleiðin er fullbúin.

Á peer ber pakkinn nú upprunalega opinbera upptökuvistfangið, því ekkert hefur endurskrifað það. Þjónustan tekur við tengingunni og sendir svarið á sinn eigin sjálfgefna gátt, sem er heimaleiðarinn fyrir framan peer. Sá leiðari hefur ekkert ástand fyrir flæði sem hann sá aldrei og annaðhvort hendir pakkanum eða þýðir hann á sitt eigið opinbera vistfang, sem biðlarinn mun ekki samþykkja.

Ósamhverfan er allt vandamálið: beiðnin fer í gegnum milliþjóninn og svarið reynir að fara beint. Rakning tenginga milliþjónsins hjálpar aðeins ef svarið kemur til baka í gegnum milliþjóninn, og það getur ekki komið þangað til baka á meðan upptökuvistfangið bendir enn á upprunalega biðlarann.

Bættu við bakþýðingunni

Endurskrifaðu upptök framsendu flæðisins í vistfang ganganna hjá milliþjóninum áður en það fer til peersins. Þá svarar þjónustan á 10.90.0.1, milliþjónninn tekur við því og rakning tenginga snýr við báðum þýðingunum áður en pakkinn fer aftur til biðlarans.

iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

POSTROUTING-reglan er viljandi þröng: hún passar við þýdda áfangastaðinn og tengi ganganna, svo hún endurskrifar ekki ótengda umferð sem fer fyrir tilviljun út um wg0. Breitt masquerade-regla myndi einnig fela vistfang biðlarans, en hún myndi gera það fyrir hvert flæði og gera NAT-töfluna erfiðari í úttekt.

Settu reglurnar þar sem göngin eru til

Reglur sem vísa á vistfang eða tengi ganganna verða að keyra eftir að wg-quick hefur stillt þau. Tengið er búið til fyrir PreUp, en vistföng, MTU, DNS og leiðir eru sett á eftir, og PostUp keyrir þegar allt það er á sínum stað. Setjið viðbæturnar í PostUp og eyðingarnar í PreDown.

PostUp = iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PostUp = iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1
PreDown = iptables -t nat -D PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PreDown = iptables -t nat -D POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

Eyðingarnar verða að passa við viðbæturnar tákn fyrir tákn, þar á meðal multiport- og tengipörun. Eyðing sem er frábrugðin í einni pörun fjarlægir ekkert og næsta endurenging bætir annarri eintöku reglunnar við. Eftir nokkrar endurengingar inniheldur taflan tvítekin sem erfitt er að rekja til stillingarlínu.

Athugaðu niðurstöðuna með iptables -t nat -S eftir endurengingu. Ef sama reglan birtist tvisvar passar PreDown-línan ekki og hreinsunin bregst hljóðlaust.

Framsending, síun og hitt NAT

Virkjaðu IPv4-framsendingu varanlega og leyfðu síðan framsenda flæðið í síutöflunni. DNAT á sér stað fyrir FORWARD-keðjuna, svo síureglan passar við þýdda áfangastaðinn en ekki opinbera vistfangið. Ef UFW stýrir eldveggnum, tjáðu leyfið sem leiðarreglu; venjuleg hýsilregla nær ekki yfir framsenda umferð.

Tvö önnur NAT-lög geta enn brotið leiðina þótt reglur milliþjónsins séu réttar. Á heimatengingu tilheyrir opinbera vistfangið leiðaranum og að opna portið í eldvegg hans er ekki það sama og að búa til portframsendingarfærslu sem sendir það port til milliþjónsins. Port sem virðist opið að utan á meðan ekkert svarar vantar oft einmitt þá vörpun.

Á NAT VPS varpar þjónustuveitandinn opinberu porti á einkavistfang. Vörpunin verður að passa við portið sem þú auglýsir og misræmi lítur nákvæmlega eins út og brotin göng. Staðfestu vörpun veitandans áður en þú breytir WireGuard-stillingunni.

Staðfestu bakleiðina og samþykktu kostnaðinn

Tengstu frá neti sem er ekki LAN milliþjónsins og skoðaðu síðan þýðingarparið á meðan tengingin er opin:

conntrack -L -p tcp --dport 8080
tcpdump -ni any tcp port 8080

conntrack-færslan ætti að sýna upprunalega tuple, þýdda tuple og stefnu svarsins. Ef svarið vantar er peer ekki að senda í gegnum göngin, sem þýðir venjulega að SNAT-reglan hafi ekki verið beitt eða að eigin eldveggur peersins hafi hent flæðinu.

Endurræstu einu sinni til að sanna að PostUp beiti reglunum aftur, stöðvaðu síðan göngin og staðfestu að PreDown hafi fjarlægt þær. Dauðar reglur sem lifa af aftenginguna eru ástæðan fyrir því að síðari breyting hegðar sér ófyrirsjáanlega.

Að lokum, samþykktu hvað SNAT kostar. Þjónustan sér hverja beiðni koma frá milliþjóninum, svo aðgangsskrár, hraðatakmarkanir á hvern biðlara og listar yfir leyfð vistföng greina ekki lengur notendur. Hairpin-tilfellið þarf sína eigin upptakaþýðingu fyrir biðlara á LAN milliþjónsins. Ef peer þarf raunveruleg vistföng biðlaranna er valkosturinn bakleið að neti biðlarans, sem er meiri vinna en varðveitir upplýsingarnar.

Tengdir greinar