Den WireGuard-Handshake funktionéiert, awer den Büro-Subnetz äntwert net
WireGuard ass un a pingt de Server, awer näischt op sengem LAN äntwert. Iwwerpréift de Client-Präfix, d'Weiderleedung um Server an de Wee vun der Äntwert.
Den Handshake geet duerch, wg show mellt rezent Transfer, an d'Tunneladress vum Server äntwert op e Ping. En Host am LAN vum Server awer net. Dräi Konditioune mussen zur selwechter Zäit erfëllt sinn: de Client muss de LAN-Präfix an den Tunnel routeieren, de Server muss d'Paketen weiderleeden, an d'Äntwert brauch e Wee zréck. Wann eng vun den dräi feelt, ass de Symptom identesch.
AllowedIPs ass souwuel eng Zougangslëscht wéi och eng Routing-Tabell
Um Client entscheet d'Lëscht AllowedIPs souwuel wat un dëse Peer geschéckt ka ginn wéi och wéi eng Route WireGuard installéiert. En Peer-Andrag, deen nëmmen d'Tunneladress vum Server oplëscht, installéiert eng eenzeg Host-Route, dofir kommen LAN-Ziler ni an den Tunnel. De LAN-Präfix bäizefügen ass dat Éischt wat ze préiwen ass, an et ass och déi Ännerung, déi no enger kopéierter Konfiguratioun am dackste feelt. En Peer, deen op eng Standardroute erweidert gouf, ass en aneren Design, an en verréckelt och den Internetverkéier vum Client.
Halt d'Host-Route an de LAN-Präfix als getrennt Andräg. Wann de Büro zwee Subnetzer huet, gehéieren béid an d'Lëscht, an de fehlenden zweete Präfix produzéiert e Fehler, dee selektiv amplaz total ausgesäit.
[Peer] PublicKey = <server public key> Endpoint = vpn.example.net:51820 AllowedIPs = 10.66.0.1/32, 192.168.50.0/24
Weiderleedung an Iwwersetzung gehéieren op de Server
De Server brauch ageschalt IP-Weiderleedung, eng Weiderleedungsregel déi Verkéier aus dem Tunnel unhëlt, an eng Iwwersetzungsregel a Richtung vu senger LAN-Schnittstell. D'Iwwersetzung ass et, déi den Design funktionéiere léisst, ouni all Host am Büronetz ze beréieren. D'Äntwerten ginn dann zréck op de Server amplaz op eng Adress, vun där de LAN ni héieren huet. Ouni si brauch all Host eng Route fir den Tunnel-Subnetz an eng Firewallregel, déi et erlaabt, wat an engem Netz, dat een aneren administréiert, seele akzeptabel ass.
sysctl -w net.ipv4.ip_forward=1 iptables -A FORWARD -i wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Reegele vun Hand verschwannen beim Neistart, also bind se mat den Hook-Befehle vun der Serverkonfiguratioun un d'Schnittstell. En Reelesatz, deen seng Schnittstell iwwerlieft, ass de Wee wéi eng Maschinn am Schluss Verkéier fir en Tunnel iwwersetzt, deen net méi existéiert.
Wéi de LAN sech beweegt huet an d'Reegel net
Den Austausch vun engem Router, deen den Büro-Subnetz nei nummeréiert, ass déi klassesch Versioun vun dësem Fehler. Den Tunnel bleift un, den Handshake bleift frësch, an hannert dem Server äntwert näischt, well d'Iwwersetzungsregel nach ëmmer déi al Adress nennt. Installatiounsskripten backen d'LAN-Adress vum Server dacks an eng POSTROUTING-Regel, an no enger Neinummeréierung existéiert déi Adress op kenger Schnittstell. D'Pakete ginn dann op en Zil ëmgeschriwwen, dat net äntwere kann.
iptables -t nat -n -L POSTROUTING ip -br addr show
Vergläicht déi zwou Ausgaben. En Iwwersetzungszil, dat net an der Schnittstellëscht erschéngt, ass de Fehler, an en ze fixen ass eng Ännerung vun enger Zeil, soubal een en gesinn huet. D'Reegel kann an enger generéierter Unit liewen amplaz an der WireGuard-Konfiguratioun, also lued déi Unit no der Ännerung nei a bestätegt, datt den nächsten Start Är Ännerung net iwwerschreift.
Zwee Siten hannert NAT brauchen en Treffpunkt
Wann keng Säit erakommend Verbindungen unhëlt, ass déi praktesch Äntwert e klengen Host mat enger ëffentlecher Adress an zwou WireGuard-Schnittstellen. All Site verbënnt sech no baussen, de mëttleren Host lëscht de LAN vun all Peer a senger eegener AllowedIPs, an d'Weiderleedung dréit Paketen tëscht den zwéin Tunnelen. Näischt an der Firewall vun enger vun de Siten muss sech änneren, dofir verbreet sech dësen Design liicht.
D'Routing tëscht de Siten behält d'Originalsprongsadressen a mécht domat d'Logging pro Host sënnvoll. D'Iwwersetzung um mëttleren Host ass méi einfach, wann déi zwou LAN sech iwwerschneiden, awer op Käschte vum Verloscht vun der Sprongsidentitéit an de Loggen. Entscheet, wéi eng Eegenschaft zielt, ier Dir wielt.
Trennt d'Schichten mat véier Kontrollen
Maacht eng Kontroll pro Schicht amplaz dräi Saachen z'änneren an ze hoffen. Déi éischt weist den Alter vum Handshake an d'Zieler fir all Peer. Déi zweet weist, ob de Client dat Zil tatsächlech an den Tunnel routeiert. Déi drëtt an déi véiert soen Iech, ob d'Ufro ukomm ass an ob eng Politik se no der Arrivée verworf huet.
wg show ip route get 192.168.50.20 tcpdump -ni wg0 icmp iptables -vnL FORWARD --line-numbers
Eng Ufro, déi ukomm an keng Äntwert ausléist, weist op de Wee vun der Äntwert oder op den LAN-Host. Eng Ufro, déi ni ukomm, weist op AllowedIPs oder op d'Route vum Client. Déi zwou Resultater brauchen ënnerschiddlech Korrekturen, an d'Opnam ass et, déi se ënnerscheet.