Dauguma sugedusių WireGuard konfigūracijų nesuklysta dėl reikšmės; jos padeda teisingą reikšmę ne toje pusėje. Privatus raktas priklauso šiai mašinai, peer neša kitos mašinos viešą raktą, o adresas yra interface bloke, nors aprašo, kur gyvena tunelis. Skaitykite failą kaip dvi susitinkančias kryptis, tada patikrinkite, ką pagalbinis scenarijus pridėjo viršuje. Pats protokolas turi mažiau laukų nei failas, o papildomus verta žinoti atskirai.

Interface raktai apibūdina šią mašiną

interface blokas laiko šio galo tapatybę. PrivateKey yra ta tapatybė ir niekada nepalieka hosto; iš jos išvedamas atitinkamas viešas raktas ir būtent jį išvardija kiti peers. ListenPort yra vieta, kur ši pusė priima rankos paspaudimus, todėl du klientai už vieno adreso turi naudoti skirtingus portus.

Address yra tunelio adresas, į kurį atsako šis hostas, parašytas su prefikso ilgiu, nes jis bus ir šaltinis, kurį naudos. Neteisingas prefiksas čia pakeičia, kuriuos tikslus hostas laiko tiesiogiai prijungtais, ir tai sukelia gedimus, kurie atrodo kaip maršrutizavimas, o ne konfigūracija.

Visą kitą [Interface] bloke su tikru klientu paprastai prideda wg-quick: DNS, MTU, Table, ir kablio eilutės. Tai nėra protokolo laukai, ir plika wg sąranka jų visiškai nepaiso.

Kiekvienas peer įrašas aprašo vieną kitą pusę

[Peer] blokas yra tolimoji pusė. PublicKey yra tos pusės išvestas raktas, niekada ne jų privatus raktas, o PresharedKey yra pasirenkama papildoma paslaptis, kurią abi pusės turi turėti vienodai. Endpoint yra kur siųsti, o PersistentKeepalive prašo šio hosto po intervalo siųsti paketą, kai nieko kito neišeina.

Dvi klaidos paaiškina didžiąją dalį painiavos čia. Nukopijavus savo privatų raktą į peer bloką, abu galai dalijasi viena tapatybe, ir rankos paspaudimas nepavyksta taip, kad blogai registruojamas. Endpoint palikimas kliente paprastai yra tyčinis, nes serveris adresą sužino iš įeinančio rankos paspaudimo; palikimas serveryje, kuris turi inicijuoti, toks nėra. Taip pat atminkite, kad keepalive palaiko atvirą NAT susiejimą ir negerina pralaidumo bei nesumažina delsos, tad trisdešimt sekundžių papildomų paketų nieko neperka, kai srautas jau teka.

AllowedIPs yra maršrutizavimas, o ne leidimų sąrašas

AllowedIPs yra WireGuard kriptorakto maršrutizavimas. Išeinant, jis pagal paskirties vietą nusprendžia, kuris peer gaus paketą. Įeinant, jis pagal šaltinį nusprendžia, ar paketas iš to peer bus priimtas. Tas pats laukas atlieka abu darbus, todėl tai nėra prieigos kontrolės sąrašas ir nėra leidžiamų svetainių sąrašas.

Siauras AllowedIPs serveryje klientui reiškia, kad serveris priims tik paketus, kurie teigia esą iš tų šaltinių, ir siųs tik tuos tikslus tam klientui. Išplėskite vieną pusę neišplėtę kitos, ir gausite tunelį, kuris pakyla ir nieko nepraleidžia.

Ką wg-quick prideda aplink protokolą

wg-quick skaito tą patį failą ir atlieka tinklo veiksmus, kuriuos protokolas palieka operacinei sistemai. Jis priskiria interface adresą, prideda maršrutus, išvestus iš AllowedIPs, įrašo sprendėjo nustatymus ir iš eilės vykdo kablio komandas.

Tas sluoksnis paaiškina klasikinę asimetriją. Failas su 0.0.0.0/0 ir DNS eilute duoda klientui numatytąjį maršrutą ir sprendėją, ir jis visiškai nieko nedaro serverio persiuntimo ar NAT taisyklėms. Tos priklauso paties serverio konfigūracijai, ir joks kliento failas negali jų pateikti.

Laikykite vieną failo savininką. Rankinis redagavimas, kol SaveConfig įjungtas, reiškia, kad jūsų pakeitimas dings kitą kartą, kai interface nusileis, ir interface nepasakys, kad taip nutiko.

Tikrinkite taikomą būseną, o ne failą

Failas yra ketinimas. Taikoma būsena yra tai, ką laiko branduolys, ir jie išsiskiria kiekvieną kartą, kai pagalbininkas, drop-in ar kablys ką nors pakeitė po aktyvavimo.

Skaitykite gyvą būseną ir adresavimą kartu, tada palyginkite abu su tuo, ką parašėte:

sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.conf

Jei peer sąrašas tuščias, interface sukurtas nepritaikius jo konfigūracijos. Jei adresai ir maršrutai yra, bet skaitikliai lieka nulyje, failas įkeltas ir rankos paspaudimas nepavyksta, o tai yra rakto ar galo problema, ne skyrių tvarkos. Palyginkite du vaizdus prieš redaguodami, nes tarpas tarp jų paprastai ir yra tikroji klaida.

Susiję straipsniai