Neste WireGuard: de middenhob kin net op syn eigen poarte antwurdzje
Wannear’t de middenhob alles yn ien tunnel stjoert, ferlitte antwurden op syn ynkommende tsjinst it ferkearde paad. In boarnepoarte-regel op it ynterface makket dat goed.
Trije WireGuard-hobs berikke in netwurk sûnder iepenbier adres, en dan hâldt de middenmasine op mei antwurdzjen op ’e poarte dêr’t er op harkje moast. De tunnel fierderop wurket noch, de fiere host antwurdet noch, en allinnich de midden-tsjinner sels is fan bûten stil wurden. Dy kombinaasje is betiizjend krekt om’t er sels feroarsake is: de middenhob heart syn eigen routingtabel, en de tabel stjoert syn antwurden de ferkearde kant út.
In keatling dy’t wurket oant do mei de middenbak prate
Nim in yllustrative keatling: kliïnt A berikt tsjinner B op UDP 500, en B giet fierder nei tsjinner C op UDP 500. C akseptearret ferkear allinnich fan it adres fan syn iennichste partner, wat it in blêd makket en syn gedrach ienfâldich hâldt. B is gjin blêd, en alles nijsgjirrich oan dizze storing bart dêr.
It ûnderskie is wichtich om’t de blêd- en middenrollen yn tsjinoerstelde rjochtingen lûke. In blêd kin alles yn ien tunnel stjoere sûnder gefolch, om’t neat oars dêrfan ôfhinklik is. In middenhob is tagelyk in einpunt foar kliïnten en in kliïnt nei de fiere kant, en dy twa taken wolle ferskate routing.
Wêrom’t it antwurd troch de tunnel fuortgiet
Op B draacht it ynterface nei C AllowedIPs = 0.0.0.0/0 tegearre mei de byhearrende standertrûte. Dêrom giet elk pakket dat B oanmakket yn dy tunnel, útsein as eat spesifyker foarrang krijt.
In pakket fan A rjochte op B komt oan en wurdt akseptearre, om’t B it bestimming is en pleatslike levering earst bart. It antwurd is in gloednij pleatslik oanmakke pakket rjochte op it iepenbiere adres fan A, en dy bestimming past by de standertrûte yn ’e tunnel. C ûntfangt it, hat dat adres net, en smyt it fuort.
It symptoom lêst as in firewallprobleem of in kaai-misbryk, en gjin fan beide is hjir wier. In opname op ’e tunnel nei C lit sjen dat de antwurden de ferkearde kant út geane. Dy iene waarnimming besparret mear tiid as hokker hoemannichte lêzen fan konfiguraasje dan ek, skriuw it dus del foardat do kaaien begjinst te feroarjen. Elkenien dy’t de opname net sjoen hat, sil tinke dat de tunnel sels stikken is.
De smelle reparaasje: beliedsregels dy’t by in boarnepoarte passe
Antwurden fan B syn harkjende socket geane fuort mei boarnepoarte 500. In beliedsregel kin dêrby passe en dy pakketten werom stjoere nei de gewoane tabel:
ip rule add sport 500 table main priority 100
ip rule add sport 8080 table main priority 101
Beliedsregels wurde yn priorigensoarder rieplachte, en de haadtabel sit op 32766, dus in regel op 100 wurdt frege foardat de standertrûte fan ’e tunnel eat te sizzen hat. Foegje ien ynskriuwing ta foar elke poarte dy’t fan bûten berikber bliuwe moat en neat mear, sadat trochstjoerd ferkear de tunnel bliuwt brûken dêr’t it foar boud is.
Kinst de grins fan dizze trúk. De selektor sport past by pleatslik oanmakke pakketten, wat krekt it antwurdgefal dekt en bewust gjin ferkear dekt dat B allinnich foar in oar trochstjoert. In tsjinst host efter B hat noch altyd syn eigen antwurd nedich, en it tsjinoerstelde beweare jout in reparaasje dy’t foar de earste tsjinst wurket en foar de twadde mislearret.
Jou de regel in eigner
In regel dy’t yn in prompt typt is, ferdwynt de folgjende kear as it ynterface wer opboud wurdt. Set him by in WireGuard-opsetsje dêr’t it ynterface makke en fuortsmiten wurdt:
PostUp = ip rule add sport 500 table main priority 100
PostDown = ip rule del sport 500 table main priority 100
As NetworkManager, in distribúsjeheak of in kontener-ynstappunt it ynterface hat, heart it pear by dy eigner ynstee fan yn in mei de hân bewurke bestân. Kontrolearje de effektive regels nei in werferbining, net allinnich nei de earste start, om’t de earste start it gefal is dat altyd wurket.
Fergelykje de alternativen earlik
De boarnepoarte-regel is ien fan fjouwer útwegen, en it is de smelste fan har. It hat it foardiel dat it de tunnelbelied hielendal net oanrekket, en dêrom oerlibbet it meastentiids lettere feroarings. Smelle reparaasjes mislearje ek lûd as se ophâlde te jilden, wylst in brede útsûndering stil trochwurket lang nei’t de reden derfoar ferdwûn is. Dat ferskil jildt mear as elegance as in oar oer twa jier de bak hat.
| Approach | What it costs | Where it breaks |
|---|---|---|
| Source-port policy rule | One rule per exposed port | Anything B forwards rather than originates |
| Destination exception route | A route pinned to specific client addresses | Clients whose address changes |
| Stop full-tunnelling on B | Loses the catch-all path toward C | Designs that depend on it |
| Split into two tunnels | More interfaces and more policy | Nothing, at the cost of complexity |
Ferifiearje fan beide kanten as do keazen hast. Fan A ôf, begjin in ferbining nei B syn poarte en hâld dy in skoft dwaande. Op B, lit de kearn it antwurdpaad rjochtfeardigje mei eat as ip route get <address-of-A> sport 500, en befêstigje dat it it WAN-ynterface neamt en net de tunnel. Kontrolearje dêrnei dat eat efter C noch troch de keatling antwurdet, wat bewiist dat de útsûndering smel bleau ynstee fan in omwei te wurden. Ta beslút, skriuw de poarten yn ’e ûntwerpnotysjes, oars ûntdekt de folgjende operator dit op in oare tsjinst.