Identitet nestaje iz aktivnog interfejsa i promjena izgleda završena. Nakon što se servis restartuje, on se vraća, što izgleda kao da WireGuard ignoriše naredbu. Ono što se zapravo dogodilo jednostavnije je: konfiguracija pri podizanju još uvijek sadrži peer.

Dva stanja drže tu listu. Opoziv je stvaran samo kada ga izgube oba.

Šta wg set zapravo mijenja

Naredba wg set wg0 peer <public-key> remove mijenja aktivni interfejs u kernelu. Ne zapisuje ništa na disk. Konfiguracijska datoteka, NetworkManager profil ili sačuvano stanje rutera ostaju netaknuti. To je dizajn, a ne greška.

To razdvajanje je namjerno, jer alat nema pojma ko posjeduje interfejs. Naredba u toku rada mora biti sigurna za interfejs kojim upravlja nešto drugo. Ne može pogoditi gdje živi trajna kopija. Posljedica je lako izreći: uklanjanje u toku rada je po konstrukciji privremeno.

Zato se peer vraća pri sljedećem restartu i vraća se sa svojim izvornim dozvoljenim prefiksima. Sve što se usmjerava kroz njega takođe se ponovo stvara. Tako navodno opozvani identitet nakon ponovnog učitavanja može doći do svojih bivših odredišta. Ništa u izlazu u toku rada nikoga nije upozorilo.

Nađite onoga koji zapisuje prije nego uredite datoteku

Interfejs ima vlasnika. To može biti wg-quick koji čita datoteku, NetworkManager koji primjenjuje profil, vlastita konfiguracija interfejsa rutera ili ulazna točka kontejnera koja ponovo stvara interfejs pri pokretanju. Uređivanje datoteke koju vlasnik nikada ne čita ne daje nikakvu trajnu promjenu.

Počnite od aktivnog interfejsa i identificirajte javne ključeve, jer su imena i adrese slabiji identifikatori od samog ključa. Zatim uporedite tu listu sa sačuvanom konfiguracijom koju vlasnik zaista čita.

wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard

Živi interfejs čija se lista peer-ova i sadržaj datoteke ne slažu jeste cijela dijagnoza. Sačuvana konfiguracija pobjeđuje pri podizanju, a stanje u toku rada gubi. Uporedite ih prije nego promijenite bilo koje od njih.

Zamka SaveConfig

wg-quick dodaje nabor koji hvata ljude koji datoteke uređuju ručno. Kada je SaveConfig omogućen, njegovo dokumentovano ponašanje pri gašenju zapisuje trenutno stanje u toku rada preko konfiguracijske datoteke.

To obrće uobičajeni smjer trajnosti. Uklonite peer iz datoteke, a zatim se servis zaustavi. Aktivno stanje se zapisuje preko vaše izmjene i vraća peer koji ste upravo izbrisali.

Zato je redoslijed važan: uredite datoteku dok je interfejs ugašen, ili onemogućite SaveConfig prije uređivanja, pa zatim podignite interfejs i potvrdite šta je učitano. Ručna izmjena dok je interfejs podignut jeste trka sa zapisom pri gašenju.

Promijenite oba stanja, pa ponovo učitajte

U toku rada uklonite peer po ključu. U sačuvanoj konfiguraciji uklonite isti blok kroz vlasnikovu podržanu operaciju, umjesto uređivanjem oko njega.

Zatim pregledajte šta je peer nosio. Usmjerena mreža koja je pripadala opozvanom identitetu treba biti svjesno preraspoređena ili uklonjena, a ne tiho naslijeđena od strane peer-a koji bude uređivan sljedeći.

Držite put oporavka otvorenim ako gateway nosi i vaš administrativni pristup. Restart koji ukloni pogrešan peer jeste prekid koji ste sami sebi priredili. Isto vrijedi i za restart koji ukloni pogrešnu rutu.

Kako izgleda uspješan test

Ponovo učitajte ili restartujte servis, pa ponovo pročitajte listu peer-ova. Stari ključ mora biti odsutan, a peer-ovi koje ste htjeli zadržati moraju i dalje biti prisutni i raditi.

wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers

Gdje situacija dozvoljava, potvrdite da stari identitet više ne dolazi do svojih bivših resursa. Uredna lista interfejsa prije restarta je pola testa. Druga polovina je ono što identitet nakon toga još može učiniti.

Ako neki menadžer stalno vraća peer, prestanite ponavljati uklanjanje na niskom nivou. Popravite inventar koji taj zapisivač čita, jer do tada je svaki restart još jedan poziv identitetu da se ponovo pojavi.

Povezani članci