Зашто се избрисани WireGuard peer враћа после рестарта
Листу peer-ова држе два стања: активни интерфејс и оно што га уписује при подизању. Уклоните га из оба и проверите SaveConfig пре него што било шта измените.
Идентитет нестаје из активног интерфејса и промена изгледа завршена. После рестартовања сервиса, он се враћа, што изгледа као да WireGuard игнорише наредбу. Оно што се заиста догодило је једноставније: конфигурација при подизању још увек садржи тај peer.
Два стања држе ту листу. Опозив је стваран само када га изгубе оба.
Шта wg set заиста мења
Наредба wg set wg0 peer <public-key> remove мења активни интерфејс у кернелу. Не записује ништа на диск. Конфигурациона датотека, NetworkManager профил или сачувано стање рутера остају нетакнути. То је дизајн, а не грешка.
То раздвајање је намерно, јер алат појма нема ко је власник интерфејса. Наредба у време извршавања мора бити безбедна према интерфејсу којим управља нешто друго. Не може да погоди где живи трајна копија. Последица се лако изговара: уклањање у време извршавања је по конструкцији привремено.
Зато се peer враћа при следећем рестарту, и враћа се са својим изворним дозвољеним префиксима. Све што се усмерава кроз њега такође се поново ствара. Тако наводно опозвани идентитет после поновног учитавања може да стигне до својих бивших одредишта. Ништа у излазу у време извршавања није никога упозорило.
Нађите онога који записује пре него што измените датотеку
Интерфејс има власника. То може бити wg-quick који чита датотеку, NetworkManager који примењује профил, сопствена конфигурација интерфејса рутера или улазна тачка контејнера која поново ствара интерфејс при покретању. Измена датотеке коју власник никада не чита не даје никакву трајну промену.
Почните од активног интерфејса и идентификујте јавне кључеве, јер су имена и адресе слабији идентификатори од самог кључа. Затим упоредите ту листу са сачуваном конфигурацијом коју власник заиста чита.
wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard
Живи интерфејс чија се листа peer-ова и садржај датотеке не слажу јесте цела дијагноза. Сачувана конфигурација побеђује при подизању, а стање у време извршавања губи. Упоредите их пре него што промените било које од њих.
Замка SaveConfig
wg-quick додаје набор који хвата људе који датотеке мењају ручно. Када је SaveConfig омогућен, његово документовано понашање при гашењу записује тренутно стање у време извршавања преко конфигурационе датотеке.
То обрће уобичајени смер трајности. Уклоните peer из датотеке, а затим се сервис заустави. Активно стање се записује преко ваше измене и враћа peer који сте управо избрисали.
Зато је редослед важан: измените датотеку док је интерфејс угашен, или онемогућите SaveConfig пре измене, па затим подигните интерфејс поново и потврдите шта је учитано. Ручна измена док је интерфејс подигнут је трка са записом при гашењу.
Промените оба стања, па поново учитајте
У време извршавања уклоните peer по кључу. У сачуваној конфигурацији уклоните исти блок кроз власникову подржану операцију, уместо да мењате око њега.
Затим прегледајте шта је peer носио. Усмерена мрежа која је припадала опозваном идентитету треба свесно да се прерасподели или уклони, а не да је тихо наследи peer који ће следећи бити мењан.
Држите пут опоравка отвореним ако гејтвеј носи и ваш административни приступ. Рестарт који уклони погрешан peer је прекид који сте сами себи приредили. Исто важи за рестарт који уклони погрешну руту.
Како изгледа успешан тест
Поново учитајте или рестартујте сервис, па поново прочитајте листу peer-ова. Стари кључ мора да недостаје, а peer-ови које сте хтели да задржите морају и даље да постоје и раде.
wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers
Где ситуација дозвољава, потврдите да стари идентитет више не стиже до својих бивших ресурса. Уредан списак интерфејса пре рестарта је пола теста. Друга половина је шта идентитет после тога још може да уради.
Ако неки менаџер стално враћа peer, престаните да понављате уклањање на ниском нивоу. Поправите списак који тај записивач чита, јер до тада је сваки рестарт још један позив идентитету да се поново појави.