Vi aldonas peer al /etc/wireguard/wg0.conf, rulas systemctl restart wg-quick@wg0, kaj la peer mankas en la dosiero kiam vi denove rigardas. Nenio difektis ion ajn. Restartigo estas halto sekvata de starto, kaj la halta paŝo povas reskribi la nunan rultempan staton sur la dosieron, kiun vi ĵus redaktis. La respondeca agordo loĝas en tiu sama dosiero, kiun vi redaktis, kaj ĝuste tio igas la buklon tiel konfuzan la unuan fojon, kiam vi renkontas ĝin.

Du statoj, unu dosiero kaj konservo ĉe malŝalto

La rultempa stato de WireGuard kaj wg-quick-agorda dosiero rilatas sed estas malsamaj. La dosiero estas enigo: wg-quick legas ĝin, kreas la interfacon, agordas adresojn kaj vojojn kaj agordas peer-ojn. La kern-aparato estas la viva objekto, kaj malaltnivelaj ŝanĝoj faritaj per wg neniam reskribiĝas mem.

Krom en unu direkto. Kiam SaveConfig = true aperas en la interfaca sekcio, wg-quick konservas la vivan agordon en la dosieron kiel parton de mallevi la interfacon. La manlibro de wg-quick avertas ĝuste pri tio: ŝanĝoj faritaj al la dosiero dum la interfaco estas aktiva povas esti anstataŭigitaj kiam ĝi estas forigita. Ĝi estas konservo ĉe malŝalto, ne fona tempigilo, do ĝi ekagas nur kiam io haltigas la interfacon.

ActionWhat it writesWhen it surprises you
wg set on a live interfaceKernel state onlyAfter reboot, when the file was never updated
wg-quick down with SaveConfigLive state into the fileRight after you edited the file
wg syncconfKernel state onlyNever; it does not touch the file
wg-quick upKernel state from the fileIf the file is stale, you get the old tunnel

Legu la tabelon kiel averton pri ordo. Ĉiu hazarda perdo en ĉi tiu kampo venas de redakto, kiu okazis antaŭ konservo anstataŭ post ĝi.

Unue haltigu, due redaktu, laste startu

Se la dosiero estas via fonto de vero, faru la dosieron aŭtoritata per konstruo anstataŭ per espero. Mallevu la interfacon, konfirmu, ke ĝi malaperis, poste redaktu, poste relevu ĝin. La regulo estas simple: neniu redakto ekzistas dum konservo ankoraŭ povas ruliĝi.

sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0

La savkopio-linio ne estas ceremonio. Se la tunelo estas via vojo al ĉi tiu maŝino, la malleva paŝo povas fini vian seancon, kaj kopio sur la disko plus konzolo aŭ eksterzona vojo estas la sola restarigo, kiu funkcias. Kontrolu tiun duan linion antaŭ ol fidi ĝin: malnova interfaca nomo en skripto, kiu malsukcesas silente, estas kiel homoj redaktas dosieron, kiu ankoraŭ vivas.

Agordi SaveConfig = false antaŭ normala mallevo estas la alia akceptata vojo, kaj ĝi devas esti farita en la dosiero, kiun wg-quick efektive legas. Ĝi malhelpas tiun unu aŭtomatan konservon. Ĝi ne igas apartan NetworkManager-profilon, router-eksporton aŭ uja-enirejon reŝargi viajn redaktojn, ĉar tiuj administriloj tute ne legas ĉi tiun dosieron.

Apliku peer-ŝanĝojn sen ŝiri la interfacon

Ne ĉiu redakto bezonas interrompon. Peer-nivelaj ŝanĝoj povas esti aplikitaj al kuranta interfaco per konvertado de la dosiero en agordon kaj sinkronigado de ĝi, kio tute evitas la mallevan paŝon kaj sekve evitas la konservon:

sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes

La paŝo strip gravas. Ĝi presas la dosieron kun forigitaj ŝlosiloj apartenantaj nur al wg-quick, do adresoj, DNS kaj enkursigaj instrukcioj ne estas senditaj al ilo, kiu ne komprenas ilin. La sinkronigo poste aplikas peer-ojn kaj ŝlosilojn al la viva aparato sen rekrei la interfacon, do ekzistantaj seancoj kaj vojoj postvivas.

Estu preciza pri la limoj. Sinkronigado de peer-oj ne ŝanĝas la interfacan adreson, la vojojn aldonitajn de wg-quick aŭ la agordon de la solvilo, ĉar neniu el tiuj apartenas al la WireGuard-aparato. Aldoni subreton al AllowedIPs kaj atendi, ke la kerno enkursigu ĝin, estas la klasika mislego; la vojon devas aldoni wg-quick ĉe supreniro aŭ vi mem.

Kontrolu, kiu posedas la interfacon antaŭ ol redakti ion ajn

Sur labortablo aŭ servilo administrata de agorda sistemo, la dosiero povas esti eligo anstataŭ enigo. NetworkManager-konekto, de router generita profilo aŭ uja starta skripto povas ĉiuj posedi la saman interfacan nomon, kaj en tiu kazo senmanka wg-quick-sekvenco ankoraŭ redaktas la malĝustan artefakton.

systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5

La tria komando presas la vivan agordon en la sama formato kiel la dosiero, inkluzive de la privata ŝlosilo, kio utilas por komparo kaj danĝeras en bileto. Redaktu ĝin for antaŭ ol alglui; privata ŝlosilo en subtena fadeno estas permanenta kompromito, ne tajperaro.

Se la servo-unuo estas neaktiva sed la interfaco ekzistas, io alia kreis ĝin kaj la dosiero ne estas aŭtoritata. Tiu unu observo ŝparas horon da redaktado de dosiero, kiun nenio legas.

Kontrolu la sekvan restartigon, poste konservu restarigon

La testo, kiu efektive pruvas la riparon, estas dua restartigo, ĉar ĝuste tiu sekvenco malsukcesis la unuan fojon. Konfirmu, ke la peer postvivas ĝin kaj ke la viva agordo ankoraŭ kongruas kun tio, kio estas sur la disko:

sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf

Rulu la restartigon dufoje. Unu sola pura trapaso povas esti ŝanco: la unua restartigo povas konsumi rultempan ŝanĝon, kiu ankoraŭ ne estis konservita, do la dua estas tiu, kiu diras al vi, ke la dosiero kaj la rultempo interkonsentis ĉe la fino de la unua.

Konservu la savkopion de la komenco de la procezo ĝis vi faros la duoblan restartigon, poste forigu ĝin aŭ movu ĝin el la agorda dosierujo. Vaganta wg0.conf.bak apud la reala dosiero estas sendanĝera por wg-quick kaj konfuza por la sekva persono, kiu fine redaktos la malĝustan.

Rilataj artikoloj