Rokovanje WireGuard deluje, a pisarniško podomrežje se ne odziva
WireGuard deluje in pinga strežnik, a nič v njegovem LAN se ne odziva. Preverite predpono odjemalca, posredovanje na strežniku in pot odgovora.
Rokovanje se zaključi, wg show poroča o nedavnem prenosu in naslov tunela strežnika se odziva na ping. Gostitelj v LAN strežnika pa ne. Trije pogoji morajo veljati hkrati: odjemalec mora usmeriti predpono LAN v tunel, strežnik mora posredovati pakete in odgovor potrebuje pot nazaj. Ko manjka eden od treh, je simptom enak.
AllowedIPs je seznam dostopa in usmerjevalna tabela hkrati
Na odjemalcu seznam AllowedIPs odloča, kaj se sme poslati temu peeru, in katere poti namesti WireGuard. Vnos peera, ki navaja samo naslov tunela strežnika, namesti eno pot gostitelja, zato cilji v LAN nikoli ne pridejo v tunel. Dodajanje predpone LAN je prva stvar, ki jo je treba preveriti, in je tudi sprememba, ki po kopirani konfiguraciji najpogosteje manjka. Peer, razširjen na privzeto pot, je drugačen načrt in bo premaknil tudi internetni promet odjemalca.
Pot gostitelja in predpono LAN imejte kot ločene vnose. Če ima pisarna dve podomrežji, obe spadata na seznam, manjkajoča druga predpona pa povzroči okvaro, ki je videti selektivna, ne popolna.
[Peer] PublicKey = <server public key> Endpoint = vpn.example.net:51820 AllowedIPs = 10.66.0.1/32, 192.168.50.0/24
Posredovanje in prevajanje spadata na strežnik
Strežnik potrebuje omogočeno posredovanje IP, pravilo posredovanja, ki sprejema promet iz tunela, in pravilo prevajanja proti njegovemu vmesniku LAN. Prav prevajanje omogoča, da načrt deluje brez dotika vsakega gostitelja v pisarniškem omrežju. Odgovori se nato vrnejo na strežnik in ne na naslov, o katerem LAN ni nikoli slišal. Brez tega vsak gostitelj potrebuje pot v podomrežje tunela in pravilo požarnega zidu, ki jo dovoljuje, kar je v omrežju, ki ga upravlja nekdo drug, redko sprejemljivo.
sysctl -w net.ipv4.ip_forward=1 iptables -A FORWARD -i wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Pravila, dodana ročno, ob ponovnem zagonu izginejo, zato jih privežite na vmesnik s hook ukazi v konfiguraciji strežnika. Nabor pravil, ki preživi svoj vmesnik, je način, kako stroj na koncu prevaja promet za tunel, ki ne obstaja več.
Ko se je LAN preselil, pravilo pa ne
Zamenjava usmerjevalnika, ki preštevilči pisarniško podomrežje, je klasična različica te okvare. Tunel ostane vzpostavljen, rokovanje ostane sveže in nič za strežnikom se ne odziva, ker pravilo prevajanja še vedno navaja stari naslov. Namestitvene skripte pogosto vgradijo naslov LAN strežnika v pravilo POSTROUTING, po preštevilčenju pa ta naslov ne obstaja na nobenem vmesniku. Paketi se nato prepišejo na cilj, ki ne more odgovoriti.
iptables -t nat -n -L POSTROUTING ip -br addr show
Primerjajte oba izhoda. Cilj prevajanja, ki se ne pojavi na seznamu vmesnikov, je napaka, in popraviti jo je sprememba ene vrstice, ko jo enkrat vidite. Pravilo lahko živi v ustvarjeni enoti in ne v konfiguraciji WireGuard, zato po urejanju to enoto znova naložite in potrdite, da naslednji zagon ne prepiše vaše spremembe.
Dve lokaciji za NAT potrebujeta kraj srečanja
Ko nobena stran ne sprejema dohodnih povezav, je praktični odgovor majhen gostitelj z javnim naslovom in dvema vmesnikoma WireGuard. Vsaka lokacija se poveže navzven, srednji gostitelj navede LAN vsakega peera v svojem AllowedIPs, posredovanje pa prenaša pakete med obema tuneloma. Nič na požarnem zidu nobene lokacije se ne mora spremeniti, zato se ta načrt zlahka širi.
Usmerjanje med lokacijami ohrani izvorne naslove in s tem ohrani smiselno beleženje po gostitelju. Prevajanje na srednjem gostitelju je preprostejše, ko se oba LAN prekrivata, a za ceno izgube identitete vira v dnevnikih. Odločite se, katera lastnost je pomembna, preden izberete.
Ločite plasti s štirimi preverjanji
Izvajajte eno preverjanje na plast, namesto da bi spreminjali tri stvari in upali. Prvo prikazuje starost rokovanja in števce za vsakega peera. Drugo prikazuje, ali odjemalec res usmeri ta cilj v tunel. Tretje in četrto povesta, ali je zahteva prispela in ali jo je kakšna politika po prihodu zavrgla.
wg show ip route get 192.168.50.20 tcpdump -ni wg0 icmp iptables -vnL FORWARD --line-numbers
Zahteva, ki prispe in ne sproži odgovora, kaže na pot odgovora ali na gostitelja v LAN. Zahteva, ki nikoli ne prispe, kaže na AllowedIPs ali na pot odjemalca. Ta izida zahtevata različne popravke, in zajem je tisto, kar ju loči.