Dräi WireGuard-Hops erreechen en Netz ouni ëffentlech Adress, an da stellt déi mëttel Maschinn op, op deem Port ze äntweren, op deem se sollt lauschteren. Den Tunnel weider funktionnéiert nach, den Distanzhost äntwert nach, an nëmmen de mëttlere Server selwer ass vun dobaussen stëll ginn. Dës Kombinatioun ass verwirrend, just well se sech selwer verursaacht huet: de mëttleren Hop follegt senger eegener Routingtabell, an d’Tabell schéckt seng Äntwerten an déi falsch Richtung.

Eng Kette, déi funktionnéiert, bis du mat der mëttlerer Këscht schwätz

Huelt eng illustrativ Kette: de Client A erreecht de Server B op UDP 500, an de B geet weider op de Server C op UDP 500. De C akzeptéiert just Verkéier vun der Adress vu sengem eenzegen Peer, wat en zu engem Blat mécht an säin Verhalen einfach hält. De B ass keen Blat, an alles Interessantes un dësem Feeler geschitt do.

Den Ënnerscheed ass wichteg, well d’Blat- an d’Mëttelrollen an entgéintgesate Richtunge zéien. En Blat kann alles an een Tunnel schécken ouni Konsequenzen, well näischt anescht dovun ofhänkt. E mëttleren Hop ass gläichzäiteg Ennpunkt fir Clienten a Client a Richtung vun der wäiter Säit, an déi zwou Aufgabe wëllen ënnerschiddlech Routing.

Firwat d’Äntwert duerch den Tunnel fortgeet

Op B dréit den Interface Richtung C AllowedIPs = 0.0.0.0/0 zesumme mat der passender Standardroute. Dofir geet all Pak, deen de B erstallt, an deen Tunnel, ausser eppes méi Spezifescht kritt Virrang.

E Pak vum A un de B kënnt un an gëtt akzeptéiert, well de B d’Zil ass an d’lokal Liwwerung fir d’éischt geschitt. D’Äntwert ass en ganz neie lokal generéierte Pak an d’ëffentlech Adress vum A, an dat Zil passt zur Standardroute an den Tunnel. De C kritt en, huet déi Adress net, an verwërft en.

D’Symptom liest sech wéi e Firewallproblem oder eng Schlësselofwäichung, an hei ass keng vun deenen zwee wouer. Eng Opnam um Tunnel Richtung C weist d’Äntwerten an déi falsch Richtung goen. Déi eenzeg Observatioun spuert méi Zäit wéi all Quantitéit Konfiguratioun ze liesen, also schreift se op ier dir ufänkt Schlësselen ze wiesselen. Wien d’Opnam net gesinn huet, wäert unhuelen, den Tunnel selwer sief futti.

Déi schmuel Reparatur: Politiksregele mat engem Quellport

Äntwerten aus dem B sengem lauschterende Socket verloossen en mat Quellport 500. Eng Politiksregel kann dat entspriechen an déi Päck zréck an déi gewéinlech Tabell schécken:

ip rule add sport 500 table main priority 100
ip rule add sport 8080 table main priority 101

Politiksregele ginn a Prioritéitsuerdnung konsultéiert, an d’Haapttabell steet op 32766, also gëtt eng Regel op 100 gefrot éier d’Standardroute vum Tunnel eppes ze soen huet. Füügt eng Entrée fir all Port dobäi, dee vu baussen erreechbar muss bleiwen, an näischt méi, sou datt dee weidergeleeten Verkéier dee Tunnel notzt, fir deen en gebaut gouf.

Kennt d’Grenz vun dësem Trick. De Selekter sport entsprécht lokal generéierte Päck, wat genee de Fall vun der Äntwert deckt an bewosst kee Verkéier deckt, deen de B just fir een aneren weiderleet. E Service, deen hannert dem B gehost gëtt, brauch nach ëmmer seng eegen Äntwert, an d’Géigendeel ze soen produzéiert eng Léisung, déi fir den éischte Service funktionnéiert an deen zweete versot.

Gitt der Regel en Eegentemer

Eng Regel, déi een an enger Ufro tippt, verschwënnt déi nächst Kéier, wann den Interface nei opgebaut gëtt. An enger WireGuard-Installatioun setzt se do, wou den Interface erstallt a geläscht gëtt:

PostUp = ip rule add sport 500 table main priority 100
PostDown = ip rule del sport 500 table main priority 100

Wann den NetworkManager, en Distributiounshook oder de Punkt vum Eintrëtt vun engem Container den Interface huet, gehéiert d’Puer deem Eegentemer amplaz enger handännerlech geännerter Datei. Iwwerpréift déi effektiv Reegelen no enger Neiverbindung, net just no dem éischte Start, well den éischte Start de Fall ass, deen ëmmer funktionnéiert.

Vergläicht d’Alternativen éierlech

D’Quellport-Regel ass ee vu véier Auswee, an et ass dee schmuelste vun hinnen. Se huet de Virdeel, d’Tunnelpolitik iwwerhaapt net ze beréieren, a well dowéinst iwwerlieft se meeschtens spéider Ännerungen. Schmuel Reparature scheitere och haart, wann se net méi gëllen, wärend eng breet Ausnam nach laang no verschiddene Grënn still weiderlaf. Dee Ënnerscheed ass méi wichteg wéi Eleganz, wann an zwee Joer een aneren d’Këscht huet.

ApproachWhat it costsWhere it breaks
Source-port policy ruleOne rule per exposed portAnything B forwards rather than originates
Destination exception routeA route pinned to specific client addressesClients whose address changes
Stop full-tunnelling on BLoses the catch-all path toward CDesigns that depend on it
Split into two tunnelsMore interfaces and more policyNothing, at the cost of complexity

Verifizéiert vun zwou Säiten, wann dir gewielt hutt. Vum A fänkt eng Verbindung op de Port vum B un an haalt se eng Zäit beschäftegt. Op B loos de Kernel de Wee vun der Äntwert mat eppes wéi ip route get <address-of-A> sport 500 justifizéieren, a bestätegt, datt en den WAN-Interface an net den Tunnel nennt. Duerno iwwerpréift, datt eppes hannert dem C nach ëmmer duerch d’Kette äntwert, wat beweist, datt d’Ausnam schmuel blouf amplaz en Ëmwee ze ginn. Schlussendlech schreift d’Porten an d’Designnotizen, soss entdeckt den nächsten Operateur dëst op engem aneren Service erëm.

Ähnlech Artikelen