NAT ræður því hvaða upprunaveðfang VPN-þjónninn þinn sér í raun
Veðfang tölvunnar þinnar nær aldrei til VPN-þjónsins. NAT endurskrifar það á síðasta hoppinu og IP-tala göngsins er úthlutuð seinna. Hvernig á að bera saman báða enda.
Þú ímyndar þér að VPN-þjónninn lesi veðfang tölvunnar þinnar úr pakkanum og skrifi það í annál. Það sem hann les er það sem síðasta NAT-hoppið setti í ytri hausinn, og í síma sem er notaður sem aðgangspunktur er það oft veðfang sem deilt er með hundruðum annarra áskrifenda. Eigið veðfang vélarinnar þinnar 192.168.x.x fer aldrei yfir internetið í þeim haus, og gönguveðfangið er úthlutað af þjóninum eftir að tengingin er þegar komin upp. Þegar annáll þjónsins og ip addr á tölvunni stemma því ekki, er hvorugt rangt; þau lýsa mismunandi lögum eins setu.
Þrjú veðföng, og aðeins eitt er í annálnum
Ruglingurinn kemur af því að þrjú veðföng eru þjöppuð í eitt. Hvert hefur annan eiganda, býr í öðrum haus og nær til þjónsins eftir annarri leið.
| Address | Who assigns it | Where it sits | Visible to the VPN server |
|---|---|---|---|
Device address, e.g. 192.168.1.24 | Your router via DHCP | Outer header, before translation | No, rewritten in place |
| Translated address and port | Router, ISP CGNAT, or both | Outer header, after translation | Yes, this is the tuple it logs |
Tunnel address, e.g. 10.8.0.6 | The VPN server itself | Inner header, after decapsulation | Yes, but it chose it |
Aðeins miðröðin er óþekkt þegar tengt er. Þjónninn skrifar hana í jafningjatöfluna, stöðuskrána eða flæðisannál eftir dæmonnum: WireGuard kallar hana endapunkt, stöðuskrá OpenVPN merkir hana Real Address, og strongSwan tilkynnir hana sem fjartölvu IKE_SA. Þetta gildi er endurnýjað í hvert sinn sem pakki kemur frá öðrum uppruna, svo það breytist án þess að nokkur endurræsi nokkuð.
Neðri röðin er það sem fólk les rangt sem fullyrðingu um auðkenni. Hún merkir sæti í stillingum þjónsins, ekki manneskju, því þjónninn valdi hana úr eigin laug. Tveir notendur geta fengið sama gönguveðfang á mismunandi dögum, og einn getur haldið tveimur slíkum frá tveimur tækjum.
Hvers vegna skráða túplan breytist meðan gangið helst uppi
Veðfangaþýðing er tafla með tímastilli, ekki varanleg binding. Heimaleiðari heldur UDP-kortlagningunni í smástund eftir síðasta pakka, hlið símafyrirtækis endurnýtir gáttir samkvæmt eigin dagskrá, og sími sem fer af Wi-Fi yfir á LTE kemur aftur með gjörólíkan uppruna. Sjálfgefin gildi conntrack í Linux eru gagnlegur mælikvarði hér: nf_conntrack_udp_timeout er 30 sekúndur og streymisafbrigðið 120, svo hljótt gang getur tapað kortlagningunni löngu áður en notandinn tekur eftir því.
Gangið lifir af vegna þess að samskiptareglurnar sannreyna jafningjann, ekki veðfangið. WireGuard er án ástands eftir handabandið, svo sérhver sannreyndur pakki uppfærir geymda endapunktinn og endurtenging lagast við næsta pakka; þess vegna er persistent-keepalive = 25 til, til að halda kortlagningunni heitri meðan ekkert er gert. --float OpenVPN gerir sama gagn og leyfir sannreyndum biðlara að halda áfram frá nýju veðfangi og gátt. Í útgáfum 2.4 og 2.5 þar sem float er slökkt sjálfgefið endurstillir endurtenging setuna og biðlarinn tengist aftur.
IPsec nær þangað með fleiri hreyfanlegum hlutum. IKEv2 tekur eftir þýðingunni með því að bera saman tætlur uppruna og áfangastaðar í NAT-greiningarhlöðum, skiptir yfir í UDP 4500 hjúpun og fylgir keepalive til nýju túplunnar. Þegar keepalive er lokað stendur SA uppi á pappírnum á meðan umferð í aðra áttina stöðvast hljóðlaust.
Hvað þjónninn getur rakið og hvað ekki
Goðsögnin sem er þess virði að drepa er sú að þýðingin feli þig fyrir rekstraraðilanum. Hún breytir merkimiðanum, ekki athuguninni. Hlið bak við NAT rekstraraðilans sér 100.64.0.0/10 rými eða eitt opinbert veðfang sem mörgum áskrifendum er deilt, og getur samt tengt flæðið við efni skírteinis, opinberan lykil WireGuard, úthlutað gönguveðfang, bætateljara og tímaglugga. Ekkert af þessu þarf LAN-veðfangið þitt.
Mörkin ganga líka í hina áttina. Sameiginlegt veðfang í annáli bendir á hlið, ekki heimili; tvær setur frá sama þýdda veðfangi á mismunandi gáttum eru mismunandi tæki; sama veðfang á tveimur mismunandi dögum geta verið tveir óskyldir áskrifendur ef gáttin var endurnýtt. Þjónn sem skráir aðeins jafningjalykla getur ekki tengt einn við viðskiptavin án reikningagrunnsins, og þjónn sem skráir aðeins veðföng getur ekki greint fartölvu frá síma bak við sama leiðara.
Berðu saman báða enda í stað þess að giska
Til að komast að því hvað gerðist skaltu grípa sömu tengingu á báðum endum á sama augnabliki og bera saman túpluna, ekki veðfangið. Á biðlaranum, fyrir hvaða þýðingu sem er:
ss -uapn 'dport = :51820'
ip -4 route get 203.0.113.10
wg show wg0 endpoints
Lestu síðan þýðingarfærsluna á leiðaranum eða CGNAT-hliðinu, og það sem loks kemur að þjóninum:
conntrack -L -p udp --dport 51820
tcpdump -ni eth0 udp port 51820
Þrjú mynstur skýra flest misræmi. Upprunagátt þjónsins er frábrugðin staðbundinni gátt á meðan áfangastaður passar: venjuleg gáttarþýðing. Upprunaveðfang þjónsins tilheyrir ISP-blokki sem er ekki þitt: að minnsta kosti eitt auka NAT-lag. Pakkar stöðvast eftir aðgerðaleysi og halda áfram með nýrri gátt: kortlagningin er útrunnin, ekki leiðarvilla. Ef tímasetningarnar eru meira en sekúndu eða tvær í sundur ertu að bera saman tvær mismunandi tilraunir.
Hvar munurinn brýtur hluti
Stopp sem líta út eins og þjónvillur byrja venjulega hér. Aðgangsregla sem er fest við heimilsveðfangið þitt bregst eftir að leigusamningur ISP breytist. fail2ban-regla sem passar við þýtt veðfang bannar alla áskrifendur bak við það hlið í einu. Sít-til-sít jafningi með fast fjartengt veðfang hættir að endurnýja lykla eftir að farsímaleið breytist. Gangsamskiptareglurnar voru í lagi; forsenda um ytri túpluna var það ekki.
Sami ruglingur kemur fram á þjónshliðinni. Ef VPN-boxið sjálft er bak við NAT þarftu gáttarframsendingu og vinnandi framsendingarleið; framsendingarleiðarvísir strongSwan nær yfir það tilvik fyrir IPsec. Þjónn sem aðeins er aðgengilegur á einkaveðfangi sér aldrei þýddu túpluna sem biðlararnir hans leggja fram, og það er annað vandamál en að biðlarar séu þýddir.
Farðu í gegnum þessar fjórar athuganir í röð og stöðvaðu við þá fyrstu sem bregst:
- Gríptu á báðum endum á sama tíma; staðfestu að upprunagátt, áfangagátt og tímasetningar passi.
- Lestu jafningjalista þjónsins fyrir veðfangið sem hann heldur núna, ekki veðfangið sem þú bjóst við.
- Athugaðu conntrack- eða NAT-töfluna fyrir færsluna og eftirstöðvar líftíma hennar.
- Staðfestu að veðfang gangviðmótsins á biðlaranum passi við það sem þjónninn úthlutaði, ekki LAN-veðfangið.
Ef báðar grípur eru sammála um túpluna og gangið bregst samt, er þýðingin ekki þitt vandamál; haltu áfram að handabandinu og leiðartöflunni inni í ganginu.