Čítajte konfiguráciu WireGuard riadok po riadku, od Interface po Peer
Kľúče Interface patria tomuto koncu, kľúče peer druhej strane. Čítajte každý riadok ako jeden smer a potom overte, čo wg-quick okolo protokolu pridal.
Väčšina pokazených konfigurácií WireGuard sa nemýli v hodnote; dávajú správnu hodnotu na nesprávnu stranu. Privátny kľúč patrí tomuto stroju, peer nesie verejný kľúč druhého stroja a adresa sedí v bloku interface, hoci opisuje, kde tunel žije. Čítajte súbor ako dva smery, ktoré sa stretávajú, a potom skontrolujte, čo pomocný skript pridal navrch. Samotný protokol má menej polí než súbor a tie navyše stojí za to poznať zvlášť.
Kľúče interface opisujú tento stroj
Blok interface drží vlastnú identitu tohto konca. PrivateKey je tá identita a nikdy neopustí host; zodpovedajúci verejný kľúč sa z nej odvodzuje a práve ten uvádzajú ostatné peery. ListenPort je miesto, kde táto strana prijíma podania rúk, takže dvaja klienti za jednou adresou potrebujú rôzne porty.
Address je adresa tunela, na ktorú tento host odpovedá, zapísaná s dĺžkou prefixu, pretože bude aj zdrojom, ktorý použije. Nesprávny prefix tu mení, ktoré ciele host považuje za priamo prepojené, a to dáva poruchy, ktoré vyzerajú ako smerovanie, nie ako konfigurácia.
Všetko ostatné v [Interface] bloku s reálnym klientom zvyčajne pridáva wg-quick: DNS, MTU, Table, a riadky hákov. Nie sú to polia protokolu a holé wg nastavenie ich úplne ignoruje.
Každá položka peer opisuje jednu druhú stranu
Blok [Peer] je vzdialená strana. PublicKey je odvodený kľúč tejto strany, nikdy jej privátny kľúč, a PresharedKey je voliteľné ďalšie tajomstvo, ktoré obe strany musia mať rovnaké. Endpoint je kam posielať a PersistentKeepalive žiada tento host, aby po intervale poslal paket, keď nič iné nevychádza.
Väčšinu zmätku tu vysvetľujú dve chyby. Skopírovanie vlastného privátneho kľúča do bloku peer spôsobí, že oba konce zdieľajú jednu identitu, a podanie rúk zlyhá spôsobom, ktorý sa zle loguje. Endpoint vynechanie u klienta je zvyčajne zámerné, pretože server sa adresu učí z prichádzajúceho podania rúk; vynechanie na serveri, ktorý musí iniciovať, zámerné nie je. Pamätajte tiež, že keepalive drží mapovanie NAT otvorené a nezlepšuje priepustnosť ani neznižuje latenciu, takže tridsať sekúnd paketov navyše nič nekúpi, keď prevádzka už tečie.
AllowedIPs je smerovanie, nie zoznam povolení
AllowedIPs je kryptokľúčové smerovanie WireGuardu. Odchádzajúco rozhoduje, ktorý peer dostane paket podľa cieľa. Prichádzajúco rozhoduje, či sa paket od tohto peera prijme podľa zdroja. To isté pole robí obidve práce, preto to nie je zoznam riadenia prístupu a nie je to zoznam povolených webov.
Úzky AllowedIPs na serveri pre klienta znamená, že server prijme iba pakety tvrdiace tieto zdroje a pošle iba tie ciele tomuto klientovi. Rozšírte jednu stranu bez rozšírenia druhej a dostanete tunel, ktorý naskočí a nič neprepustí.
Čo wg-quick pridáva okolo protokolu
wg-quick číta ten istý súbor a vykonáva sieťové kroky, ktoré protokol necháva operačnému systému. Priradí adresu interface, pridá trasy odvodené z AllowedIPs, zapíše nastavenia resolvera a spustí príkazy hákov v poradí.
Táto vrstva vysvetľuje klasickú asymetriu. Súbor s 0.0.0.0/0 a riadkom DNS dá klientovi predvolenú trasu a resolver a so serverovými pravidlami preposielania či NAT neurobí vôbec nič. Tie patria vlastnej konfigurácii servera a žiadny klientsky súbor ich nemôže dodať.
Majte jedného vlastníka súboru. Ručná úprava, kým je SaveConfig zapnutý, znamená, že vaša úprava zmizne pri najbližšom páde interface, a interface vám nepovie, že sa to stalo.
Kontrolujte aplikovaný stav, nie súbor
Súbor je zámer. Aplikovaný stav je to, čo drží jadro, a rozchádzajú sa vždy, keď pomocník, drop-in alebo hák po aktivácii niečo upravil.
Čítajte živý stav a adresovanie spolu a potom obidva porovnajte s tým, čo ste napísali:
sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.confAk je zoznam peerov prázdny, interface vznikol bez toho, aby sa jeho konfigurácia aplikovala. Ak adresy a trasy existujú, ale počítadlá zostávajú na nule, súbor sa načítal a podanie rúk zlyháva, čo je problém kľúča alebo konca, nie poradia sekcií. Porovnajte obidve zobrazenia pred úpravou, pretože rozdiel medzi nimi je zvyčajne skutočná závada.