Rydych chi'n dychmygu bod y gweinydd VPN yn darllen cyfeiriad eich gliniadur o'r pecyn ac yn ei ysgrifennu i gofnod. Yr hyn y mae'n ei ddarllen yw'r hyn y gosododd y naid NAT olaf yn y pennawd allanol, ac ar ffôn wedi'i thetheru mae hynny'n aml yn gyfeiriad a rennir â channoedd o danysgrifwyr eraill. Nid yw cyfeiriad eich peiriant eich hun 192.168.x.x byth yn croesi'r rhyngrwyd yn y pennawd hwnnw, ac mae'r gweinydd yn dyrannu cyfeiriad y twmnel ar ôl i'r cysylltiad fod i fyny'n barod. Felly pan fo cofnod y gweinydd a ip addr ar y gliniadur yn anghytuno, nid yw'r naill na'r llall yn anghywir; maen nhw'n disgrifio haenau gwahanol o un sesiwn.

Tri chyfeiriad, a dim ond un sydd yn y cofnod

Mae'r dryswch yn dod o grebachu tri chyfeiriad yn un. Mae gan bob un berchennog gwahanol, mae'n byw mewn pennawd gwahanol, ac mae'n cyrraedd y gweinydd ar lwybr gwahanol.

AddressWho assigns itWhere it sitsVisible to the VPN server
Device address, e.g. 192.168.1.24Your router via DHCPOuter header, before translationNo, rewritten in place
Translated address and portRouter, ISP CGNAT, or bothOuter header, after translationYes, this is the tuple it logs
Tunnel address, e.g. 10.8.0.6The VPN server itselfInner header, after decapsulationYes, but it chose it

Dim ond y rhes ganol sy'n anhysbys ar adeg cysylltu. Mae'r gweinydd yn ei hysgrifennu i'w dabl cymheiriaid, ei ffeil statws neu ei gofnod llifoedd yn dibynnu ar y daemon: mae WireGuard yn ei alw'n bwynt terfyn, mae ffeil statws OpenVPN yn ei labelu'n Real Address, ac mae strongSwan yn ei adrodd fel gwesteiwr pell IKE_SA. Mae'r gwerth hwnnw'n cael ei adnewyddu pryd bynnag y daw pecyn o ffynhonnell wahanol, felly mae'n newid heb i neb ailgychwyn unrhyw beth.

Y rhes waelod yw'r hyn y mae pobl yn ei chamddarllen fel hawliad hunaniaeth. Mae'n nodi slot yn ffurfweddiad y gweinydd, nid person, oherwydd i'r gweinydd ei ddewis o'i bwll ei hun. Gall dau ddefnyddiwr gael yr un cyfeiriad twmnel ar ddyddiau gwahanol, a gall un ddal dau ohonynt o ddau ddyfais.

Pam mae'r twpl a gofnodir yn newid tra bo'r twmnel yn aros i fyny

Mae cyfieithu cyfeiriadau'n dabl ag amserydd, nid yn rwymiad parhaol. Mae llwybrydd cartref yn cadw ei fapio UDP am gyfnod ar ôl y pecyn olaf, mae porth cludwr yn ailgylchu pyrth ar ei amserlen ei hun, ac mae ffôn sy'n neidio o Wi-Fi i LTE yn dychwelyd ag ffynhonnell hollol wahanol. Mae diofyniadau conntrack Linux yn feincnod defnyddiol yma: nf_conntrack_udp_timeout yw 30 eiliad a'r amrywiolyn ffrydio yw 120, felly gall twmnel tawel golli ei fapio ymhell cyn i'r defnyddiwr sylwi.

Mae'r twmnel yn goroesi oherwydd bod y protocol yn dilysu'r cymheiriaid, nid y cyfeiriad. Mae WireGuard yn ddi-statws ar ôl y handshake, felly mae unrhyw becyn dilys yn diweddaru'r pwynt terfyn a storiwyd ac mae aildrwymo yn gwella ar y pecyn nesaf; dyna pam mae persistent-keepalive = 25 yn bodoli, i gadw'r mapio'n gynnes tra bo'n segur. Mae --float OpenVPN yn gwneud yr un gwaith, gan adael i gleient dilys ailgydio o gyfeiriad a phorth newydd. Ar gomisiynau 2.4 a 2.5 lle mae float i ffwrdd yn ddiofyn, mae aildrwymo yn ailosod y sesiwn ac mae'r cleient yn ailgysylltu.

Mae IPsec yn cyrraedd yno gyda mwy o rannau symudol. Mae IKEv2 yn sylwi ar gyfieithu drwy gymharu hashes y ffynhonnell a'r cyrchfan yn y llwythi canfod NAT, yn newid i encapswleiddio UDP 4500, ac yn dilyn keepalives i'r twpl newydd. Pan fo keepalives wedi'u blocio, mae'r SA yn aros i fyny ar bapur tra bo traffig i un cyfeiriad yn stopio'n dawel.

Beth all y gweinydd ei briodoli, a beth na all

Y myth sy'n werth ei ladd yw bod cyfieithu yn eich cuddio rhag y gweithredwr. Mae'n newid y label, nid yr arsylwi. Mae porth y tu ôl i NAT cludwr yn gweld gofod 100.64.0.0/10 neu un cyfeiriad cyhoeddus a rennir gan lawer o danysgrifwyr, ac yn dal i allu clymu'r llif i bwnc tystysgrif, allwedd gyhoeddus WireGuard, cyfeiriad twmnel a ddyrannwyd, cownteri beit a ffenestr amser. Nid oes angen eich cyfeiriad LAN ar unrhyw un o'r rhain.

Mae'r terfynau'n mynd y ffordd arall hefyd. Mae cyfeiriad a rennir mewn cofnod yn pwyntio at borth, nid at aelwyd; mae dwy sesiwn o'r un cyfeiriad cyfieithiedig ar byrth gwahanol yn ddyfeisiau gwahanol; gall yr un cyfeiriad ar ddau ddydd gwahanol fod yn ddau danysgrifiwr digyswllt os ailgylchwyd y porth. Ni all gweinydd sy'n cofnodi allweddi cymheiriaid yn unig fapio un i gwsmer heb y gronfa ddata cyfrifon, ac ni all gweinydd sy'n cofnodi cyfeiriadau yn unig wahaniaethu gliniadur oddi wrth ffôn y tu ôl i'r un llwybrydd.

Cymharwch y ddau ben yn lle dyfalu

I setlo beth ddigwyddodd, cofnodwch yr un cysylltiad ar y ddau ben ar yr un moment a chymharu'r twpl, nid y cyfeiriad. Ar y cleient, cyn unrhyw gyfieithu:

ss -uapn 'dport = :51820'
ip -4 route get 203.0.113.10
wg show wg0 endpoints

Yna darllenwch y cofnod cyfieithu ar y llwybrydd neu'r porth CGNAT, a'r hyn sy'n cyrraedd y gweinydd o'r diwedd:

conntrack -L -p udp --dport 51820
tcpdump -ni eth0 udp port 51820

Mae tri phatrwm yn esbonio'r rhan fwyaf o'r anghysondebau. Mae porth ffynhonnell y gweinydd yn wahanol i'r porth lleol tra bo'r cyrchfan yn cyfateb: cyfieithu porth cyffredin. Mae cyfeiriad ffynhonnell y gweinydd yn perthyn i floc ISP nad yw'n eiddo i chi: o leiaf un haen NAT ychwanegol. Mae pecynnau'n stopio ar ôl cyfnod segur ac yn ailgydio â phorth newydd: mae'r mapio wedi dod i ben, nid nam llwybro. Os yw'r stampiau amser fwy nag eiliad neu ddwy ar wahân, rydych chi'n cymharu dau ymgais wahanol.

Lle mae'r gwahaniaeth yn torri pethau

Mae methiannau sy'n edrych fel ffyltau gweinydd fel arfer yn dechrau yma. Mae rheol mynediad wedi'i phinio i'ch cyfeiriad cartref yn methu ar ôl i les yr ISP newid. Mae rheol fail2ban sy'n cyfateb i gyfeiriad cyfieithiedig yn gwahardd pob tanysgrifiwr y tu ôl i'r porth hwnnw ar unwaith. Mae cymheiriaid safle-i-safle â chyfeiriad pell sefydlog yn stopio adnewyddu allweddi ar ôl i gyswllt symudol newid. Roedd protocol y twmnel yn iawn; nid oedd y dybiaeth am y twpl allanol.

Mae'r un dryswch yn ymddangos ar ben y gweinydd. Os yw'r blwch VPN ei hun y tu ôl i NAT, mae angen porth cyfeirio a llwybr anfon gweithredol; mae canllaw anfon strongSwan yn ymdrin â'r achos hwnnw ar gyfer IPsec. Nid yw gweinydd sy'n gyraeddadwy ar gyfeiriad preifat yn unig byth yn gweld y twpl cyfieithiedig y mae ei gleientiaid yn ei gyflwyno, ac mae hynny'n broblem wahanol i gleientiaid gael eu cyfieithu.

Ewch drwy'r pedwar archwiliad hyn yn eu trefn a stopiwch ar yr un cyntaf sy'n methu:

  • Cofnodwch ar y ddau ben ar yr un pryd; cadarnhewch fod y porth ffynhonnell, y porth cyrchfan a'r stampiau amser yn cyfateb.
  • Darllenwch restr cymheiriaid y gweinydd am y cyfeiriad y mae'n ei ddal ar hyn o bryd, nid y cyfeiriad yr oeddech yn ei ddisgwyl.
  • Gwiriwch y tabl conntrack neu NAT am y cofnod a'i oes sy'n weddill.
  • Cadarnhewch fod cyfeiriad rhyngwyneb y twmnel ar y cleient yn cyfateb i'r hyn a ddyrannodd y gweinydd, nid y cyfeiriad LAN.

Os yw'r ddau gofnod yn cytuno ar y twpl ac mae'r twmnel yn dal i fethu, nid cyfieithu yw eich problem; ewch ymlaen at y handshake ac at y tabl llwybro y tu mewn i'r twmnel.

Erthyglau cysylltiedig