WireGuard-Hostpräfix: firwat eng Adress funktionéiert an déi aner net
Eng /32 op der Interface ass e gültege Hostpräfix a rout just déi eng Adress. Setz d'Route derbäi, déi AllowedIPs implizéiert, a kontrolléier duerno de Réckwee.
Den Tunnel steet, den Handshake geschitt all zwou Minutten, an genau eng Adress op der anerer Säit äntwert. Pinge fir d'Tunneladress vum Peer funktionéieren; näischt hannendrun. Een liest d'Interfacekonfiguratioun, gesäit en Hostpräfix a schléisst, datt d'Mask falsch ass. Se op eng /24 auszebreeden hëlt de Ping eng Zäitchen, a briecht duerno eppes anescht. De Präfix war ni d'Schold, an d'Route, déi gefehlt huet, ass net déi, déi d'Mask steiert.
Wat den Interfacepräfix tatsächlech uleet
Op Linux leet d'Zouweise vun enger Adress un eng Interface eng verbonnen Route fir dee Präfix un. Weis du en Hostpräfix zou, da deckt déi verbonnen Route eng Adress of. Weis du eng /24 zou, da deckt se 256 of, a jiddwereen dovunner gëllt elo als iwwert dee Link erreechbar.
ip -4 addr show dev wg0
ip -4 route show dev wg0
ip route get 10.80.7.1
En Hostpräfix ass fir en Punkt-zu-Punkt-Tunnel eng ganz normal Wiel, well et um aneren Enn genau ee Peer gëtt. Den drëtten Kommando ass deen, deen d'Fro vum Benotzer beäntwert: hie seet, wéi eng Interface de Kernel fir dat Zil benotze géif, an hie weist näischt Nëtzleches, wann keng Route passt.
Dat ass déi ganz Erklärung fir de Symptom. Eng Adress äntwert, well et eng verbonnen Route dofir gëtt, oder well d'erlabe Lëscht vum Peer se zoufälleg enthält. Fir alles anescht gëtt et keng Route an et gëtt verworf, ier WireGuard iwwerhaapt bedeelegt ass. Den Tunnel ass dobäi duerchgehend gesond, dofir gesäit den Handshakezieler weider berouegend aus.
AllowedIPs sinn zwou Reegelen ënner engem Numm
D'erlabe Lëscht pro Peer bei WireGuard mécht zwou Aufgabe gläichzäiteg, an d'Konfiguratiounssyntax léisst se wéi eng eenzeg ausgesinn. Erakommend bestëmmt se, wéi eng Quelladressen e Peer presentéiere kann. Erausgoend wielt se aus, u wéi ee Peer e Pakett geet, andeems se déi spezifëschst Iwwereneestëmmung sicht.
Keng vun deenen zwou Aufgabe ass Routing. De Kernel muss nach ëmmer entscheeden, datt e Pakett op d'Tunnelinterface gehéiert, ier WireGuard et iwwerhaapt ukuckt, an déi Entscheedung kënnt aus der Routingtabell. En Peer-Andrag mat enger breeder erlaber Lëscht installéiert net vu selwer eng Route.
Dofir kann eng Konfiguratioun komplett ausgesinn an sech asymmetresch behuelen. De Client schéckt op déi aner Säit, well et eng Route gëtt, an Äntwerten komme ni un, well d'erlabe Lëscht vun der anerer Säit d'Quell vum Client net erlaabt, oder well déi aner Säit kee Réckwee huet. Béid Richtunge sinn eenzel Entscheedungen mat eenzelne Feelerbilder. Opzeschreiwen, wéi eng een test, ass d'Halschent vun der Diagnos.
Wou d'Route hierkënnt
Wann du wg-quick benotzs, ginn d'Route fir dech aus der erlaber Lëscht vun all Peer generéiert, ausser du hues Table = off gesat an d'Kontroll selwer iwwerholl. Dat ass dat dokumentéiert Verhalen vum Tool, an et ass de Grond, firwat eng Konfiguratioun ouni explizit Routevirschrëften nach ëmmer funktionéiert.
sudo wg show wg0 allowed-ips
ip route show | grep wg0
sudo wg-quick strip wg0
Vergläich d'erlabe Lëscht mat de Route, déi tatsächlech do sinn. E Peer, deen e ganzt Subnetz erlaabt, awer nëmmen eng Hostroute ugeluecht huet, heescht, datt den Helfer ni gelaf ass, oder datt du d'Interface direkt mat wg an ip verwalt; dann generéiert näischt Route fir dech.
Wann du et vun Hand verwalt, ass d'Route eng Zeil an hir Form explizit: d'Zil duerch d'Interface, ouni Gateway, well de Link Punkt-zu-Punkt ass. Se derbäisetzen ass keng Noutléisung fir e schlechte Präfix; et ass déi fehlend Halschent vun engem Design, dat Routing bewosst selwer iwwerhëlt.
En breedere Präfix setzt den Peer-Andrag net derbäi
Déi verlockend Léisung ass, d'Adress op eng /24 z'änneren, sou datt déi verbonnen Route d'LAN vum Server deckt. Et schéngt ze funktionéieren, an de Grond, firwat et schéngt ze funktionéieren, ass datt déi verbonnen Route elo passt, net datt WireGuard eppes Neies geléiert huet.
Wat du och gemaach hues: du beuspruechs de ganze Beräich als direkt erreechbar iwwert dee Link, inklusiv Adressen, déi zu anere Peers oder zu engem LAN gehéieren, dat tatsächlech hannert dem Server läit. Verkéier op déi Adressen geet elo an den Tunnel, an ob en op der anerer Säit erauskënnt, hänkt vum Routing an den erlabe Lëschte vum Server of.
D'Kryptosäit ass a béid Richtungen onberéiert. WireGuard brauch nach ëmmer en Andrag an der erlaber Lëscht, deen d'Zil deckt, fir e Peer ze wielen, an déi aner Säit brauch nach ëmmer en Andrag, deen deng Quell deckt, fir se ze akzeptéieren. En breedere Interfacepräfix kann der vun deenen zwee näischt liwweren.
Bestätegt béid Richtunge ier s du eppes änderst
Schaff déi zwee Enner getrennt of a schreif op, wat jiddereen seet. Op dem Client d'Route an den Peer-Andrag; op dem Server d'Spigelbild plus säi eegene Réckwee:
ip route get 192.168.70.20
sudo wg show wg0 allowed-ips
sudo wg show wg0 latest-handshakes
sudo tcpdump -ni wg0 -c 10
De Mitschnëtt ass et, wat Sträit iwwer d'Richtung entscheet. Wann erausgoend Pakette op der Tunnelinterface erschéngen an de Server näischt loggt, verwërft déi aner Säit se, meeschtens well deng Quell baussent hirer erlaber Lëscht läit. Wann iwwerhaapt näischt erschéngt, fehlt d'Route oder se weist soss anzwousch hin.
Da reparéier déi schmuelst Enn. En Andrag an der erlaber Lëscht op Serversäit fir deng Clientadress an en Andrag op Clientsäit fir d'Zil-Subnetz ass déi normal Form, an se léisst den Interfacepräfix a Rou. Breet de Präfix nëmmen aus, wann den Adressplang wierklech en gedeelt Subnetz op deem Link wëll, a maach et als Plangännerung amplaz als Debugging-Schrëtt.