Lasiet WireGuard konfigurāciju rindu pa rindai, no Interface līdz Peer
Interface atslēgas pieder šim galam, peer atslēgas otrai pusei. Lasiet katru rindu kā vienu virzienu, pēc tam pārbaudiet, ko wg-quick pievienoja ap protokolu.
Lielākā daļa bojātu WireGuard konfigurāciju nekļūdās vērtībā; tās liek pareizo vērtību nepareizajā pusē. Privātā atslēga pieder šai mašīnai, peer nes otras mašīnas publisko atslēgu, un adrese atrodas interface blokā, lai gan tā apraksta, kur dzīvo tunelis. Lasiet failu kā divus satiekošus virzienus, pēc tam pārbaudiet, ko palīgskripts pievienoja virsū. Pašam protokolam ir mazāk lauku nekā failam, un papildu laukus ir vērts zināt atsevišķi.
Interface atslēgas apraksta šo mašīnu
interface bloks glabā šī gala pašidentitāti. PrivateKey ir šī identitāte un nekad neatstāj saimnieku; no tās tiek atvasināta atbilstošā publiskā atslēga, un tieši to uzskaita citi peers. ListenPort ir vieta, kur šī puse saņem roku paspiešanu, tāpēc diviem klientiem aiz vienas adreses vajadzīgas dažādas ostas.
Address ir tuneļa adrese, uz kuru atbild šis saimnieks, rakstīta ar prefiksa garumu, jo tā būs arī avots, ko tas izmantos. Nepareizs prefikss šeit maina, kurus galamērķus saimnieks uzskata par tieši savienotiem, un tas rada kļūmes, kas izskatās pēc maršrutēšanas, nevis konfigurācijas.
Visu pārējo [Interface] blokā ar īstu klientu parasti pievieno wg-quick: DNS, MTU, Table, un āķa rindas. Tie nav protokola lauki, un kails wg iestatījums tos pilnībā ignorē.
Katrs peer ieraksts apraksta vienu otru pusi
[Peer] bloks ir tālā puse. PublicKey ir šīs puses atvasinātā atslēga, nekad ne viņu privātā atslēga, un PresharedKey ir neobligāts papildu noslēpums, kas abām pusēm jāglabā identiski. Endpoint ir kur sūtīt, un PersistentKeepalive lūdz šo saimnieku pēc intervāla nosūtīt paketi, kad nekas cits neiet ārā.
Divas kļūdas izskaidro lielāko daļu apjukuma šeit. Savas privātās atslēgas kopēšana peer blokā liek abiem galiem dalīties vienā identitātē, un roku paspiešana neizdodas tā, ka slikti tiek reģistrēta. Endpoint atstāšana ārpus klienta parasti ir apzināta, jo serveris adresi uzzina no ienākošās roku paspiešanas; atstāšana ārpus servera, kuram jāiniciē, tāda nav. Atcerieties arī, ka keepalive uztur NAT kartējumu atvērtu, un tas neuzlabo caurlaidību un nesamazina latentumu, tāpēc trīsdesmit sekunžu papildu paketes neko nepērk, kad satiksme jau plūst.
AllowedIPs ir maršrutēšana, nevis atļauju saraksts
AllowedIPs ir WireGuard kriptoatslēgas maršrutēšana. Uz āru tas pēc galamērķa izlemj, kurš peer saņem paketi. Uz iekšu tas pēc avota izlemj, vai pakete, kas nāk no šī peer, tiek pieņemta. Tas pats lauks veic abus darbus, tāpēc tas nav piekļuves kontroles saraksts un nav atļauto vietņu saraksts.
Šaurs AllowedIPs serverī klientam nozīmē, ka serveris pieņems tikai paketes, kas pretendē uz šiem avotiem, un sūtīs tikai šos galamērķus šim klientam. Paplašiniet vienu pusi, nepaplašinot otru, un iegūsiet tuneli, kas ceļas un neko nelaiž cauri.
Ko wg-quick pievieno ap protokolu
wg-quick lasa to pašu failu un veic tīkla soļus, ko protokols atstāj operētājsistēmai. Tas piešķir interface adresi, pievieno maršrutus, kas atvasināti no AllowedIPs, ieraksta atrisinātāja iestatījumus un izpilda āķa komandas secībā.
Šis slānis izskaidro klasisko asimetriju. Fails ar 0.0.0.0/0 un DNS rindu dod klientam noklusēto maršrutu un atrisinātāju, un tas absolūti neko nedara ar servera pārsūtīšanas vai NAT noteikumiem. Tie pieder paša servera konfigurācijai, un neviens klienta fails tos nevar nodrošināt.
Turiet vienu faila īpašnieku. Rindas labošana ar roku, kamēr SaveConfig ir ieslēgts, nozīmē, ka jūsu labojums pazūd nākamreiz, kad interface nokrīt, un interface jums nepateiks, ka tā noticis.
Pārbaudiet piemēroto stāvokli, nevis failu
Fails ir nodoms. Piemērotais stāvoklis ir tas, ko glabā kodols, un tie atšķiras ikreiz, kad palīgs, drop-in vai āķis pēc aktivizēšanas kaut ko laboja.
Lasiet dzīvo stāvokli un adresāciju kopā, pēc tam salīdziniet abus ar to, ko rakstījāt:
sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.confJa peer saraksts ir tukšs, interface tika izveidots, nepiemērojot tā konfigurāciju. Ja adreses un maršruti pastāv, bet skaitītāji paliek uz nulles, fails tika ielādēts un roku paspiešana neizdodas, un tā ir atslēgas vai gala problēma, nevis sadaļu kārtas problēma. Salīdziniet abus skatus pirms labošanas, jo atstarpe starp tiem parasti ir īstā kļūda.