WireGuardov partner izgine po ponovnem zagonu: poiščite pravo konfiguracijo
Partner, dodan z wg set, deluje do naslednjega ponovnega zagona, ker se vmesnik znova zgradi iz datoteke ali profila, ki ga niste nikoli uredili. Najprej poiščite lastnika.
Partner, ki ste ga dodali z wg set, se odziva na ping vse popoldne in po ponovnem zagonu izgine. Nič ni bilo poškodovano: jedro tega partnerja ni nikoli shranilo nikamor drugam kot v živi vmesnik, in vse, kar ob zagonu znova ustvari vmesnik, ga je zgradilo iz datoteke, ki se je niste dotaknili. Popravilo ni še en wg set. Treba je ugotoviti, katera komponenta ima v lasti vmesnik, urediti stanje te komponente in nato dokazati, da partner preživi natanko tisti dogodek življenjskega cikla, ki ga je odstranil.
Ponovite to enkrat, namerno
Težave s ponovnim zagonom ne odpravljajte, dokler je ne vidite na lastne oči. Če je na voljo konzola ali zunanji dostop, zapišite seznam partnerjev, znova zaženite prek storitve, ki ima v lasti vmesnik, in primerjajte. Če je partner še tam, je vaša sprememba že dosegla trajno stanje in odpravljate napačen dogodek.
Ob tem zapišite tri dejstva: ime vmesnika, enoto ali profil, ki ga je zagnal, in ali se je števec rokovanja pri preživelem partnerju ponastavil. Ponastavljen števec pomeni, da je bil vmesnik uničen in znova ustvarjen; nespremenjen števec ob manjkajočem partnerju pomeni, da je nekdo uredil konfiguracijo pod vašimi nogami.
Kdo ima v lasti vmesnik?
WireGuard sam nima ne demona ne konfiguracijske datoteke. Nekaj nad njim ob zagonu pokliče wg, in to nekaj je vir resnice. Običajni kandidati so [email protected], profil povezave NetworkManager, omrežna enota, značilna za distribucijo, ali upravljalna plošča, ki piše svojo bazo podatkov.
Vprašajte sistem, ne dokumentacije svoje distribucije. systemctl status wg-quick@wg0 in nmcli connection show to običajno razrešita z enim ukazom vsak. Če si vmesnik lastita oba, ste napako našli že pred kakršnim koli urejanjem: dva lastnika prepisujeta isto napravo ob vsakem zagonu in zmaga tisti, ki se izvede zadnji.
systemctl status wg-quick@wg0 --no-pager
grep -R "Address\|SaveConfig\|PostUp" /etc/wireguard/wg0.conf
nmcli -g NAME,TYPE connection show
wg show wg0 peersStanje med delovanjem in zagonsko stanje nista ista datoteka
wg set upravlja živo napravo prek netlinka. Ne zapisuje /etc/wireguard/wg0.conf, profila NetworkManager ali baze podatkov plošče. Uspešen wg show zatem dokazuje, da je jedro partnerja sprejelo, ne da ga bo kaj obnovilo.
Obstaja še druga past v nasprotni smeri. Možnost SaveConfig v wg-quick zapiše trenutno stanje vmesnika nazaj v konfiguracijsko datoteko, ko se vmesnik spusti. Ko je vklopljena, lahko urejanje datoteke med dvignjenim vmesnikom prepiše naslednja ustavitev, in prisegli boste, da je bila vrstica tam. Če se partner vedno znova vrača, berite datoteko po ustavitvi, ne pred njo.
NetworkManager se obnaša spet drugače: ima v lasti profil in ga uporabi ob aktivaciji, zato je ročno urejen .conf ob dejavni povezavi NetworkManager le okras. Izberite enega lastnika vmesnika in pustite drugemu upravitelju, da se ga ne dotika.
Poskrbite, da bo sprememba pristala na obeh mestih
Najprej uredite trajno stanje, nato pustite lastniku, da ga uporabi, in nazadnje preverite živo stanje. Tak vrstni red pomeni, da napaka na katerem koli koraku kaže na eno stvar namesto na tri.
# 1. persistent state (wg-quick owner)
sudo vi /etc/wireguard/wg0.conf
# 2. apply through the owner, not by hand
sudo systemctl restart wg-quick@wg0
# 3. verify runtime matches the file
sudo wg show wg0
sudo wg showconf wg0wg showconf izpiše živo konfiguracijo v isti sintaksi, kot jo uporablja datoteka, zato ju je mogoče neposredno primerjati. Ta izpis obravnavajte kot skrivnost: vsebuje zasebne ključe, zato ga ne lepite v zahtevek ali klepetalni kanal. Primerjajte javne ključe partnerjev in dovoljene IP-je ter preverite, da se namerno odstranjeni partner ni vrnil.
Dokažite, da preživi dogodek življenjskega cikla
Znova zaženite prek lastnika drugič in nato potrdite tri ločene stvari: partner se pojavi v wg show, števec rokovanja po prometu naraste in aplikacija, ki je odvisna od tunela, resnično odgovori. Partner, naveden z zastarelim rokovanjem, je težava usmerjanja ali ključa, ne težava obstojnosti, in to razlikovanje prihrani nesmiselno urejanje konfiguracije.
Na koncu preverite, kaj je ponovni zagon obnovil. Ponovni zagon, ki oživi namerno odstranjenega partnerja, je ista napaka z nasprotnim predznakom in običajno pomeni, da se stara kopija konfiguracije še vedno nalaga od nekod. Zapišite lastnika, pot do datoteke, javni ključ partnerja in ukaze za preverjanje poleg konfiguracije, da naslednja oseba tega ne bo znova odkrila z ponovnim zagonom produkcijskega gostitelja.