Партнер ког сте додали преко wg set одговара на ping цело поподне и нестаје после поновног покретања. Ништа није оштећено: језгро никада није сачувало тог партнера нигде осим у живом интерфејсу, а све што поново ствара интерфејс при подизању саградило га је из датотеке коју нисте дотакли. Поправка није још један wg set. Потребно је открити који компонент поседује интерфејс, уредити стање тог компонента и затим доказати да партнер преживљава управо онај догађај животног циклуса који га је уклонио.

Поновите то једном, намерно

Не поправљајте проблем поновног покретања пре него што га видите својим очима. Ако је доступан приступ преко конзоле или изван појаса, забележите листу партнера, поново покрените преко сервиса који поседује интерфејс и упоредите. Ако је партнер још тамо, ваша измена је већ стигла до трајног стања и отклањате грешке на погрешном догађају.

Запишите три чињенице док то радите: назив интерфејса, јединицу или профил који га је покренуо и да ли је бројач руковања на преживелом партнеру ресетован. Ресетован бројач значи да је интерфејс уништен и поново створен; непромењен бројач са партнером који недостаје значи да је нешто уредило конфигурацију испод ваших ногу.

Ко поседује интерфејс?

Сам WireGuard нема ни демона ни конфигурациону датотеку. Нешто изнад њега при подизању позива wg, и то нешто је извор истине. Уобичајени кандидати су [email protected], профил везе NetworkManager-а, мрежна јединица специфична за дистрибуцију или управљачки панел који пише сопствену базу података.

Питајте систем, а не документацију своје дистрибуције. systemctl status wg-quick@wg0 и nmcli connection show то обично решавају са по једном командом. Ако обоје полажу право на интерфејс, пронашли сте грешку пре било каквог уређивања: два власника преписују исти уређај при сваком покретању, и побеђује онај који се изврши последњи.

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 peers

Стање у раду и стање при покретању нису иста датотека

wg set управља живим уређајем преко netlink-а. Не записује /etc/wireguard/wg0.conf, профил NetworkManager-а ни базу података панела. Успешан wg show након тога доказује да је језгро прихватило партнера, а не да ће га нешто вратити.

Постоји и друга замка у супротном смеру. Опција SaveConfig у wg-quick-у записује тренутно стање интерфејса назад у конфигурациону датотеку када се интерфејс спусти. Када је укључена, измену датотеке направљену док је интерфејс подигнут може преписати следеће гашење, и заклећете се да је тај ред био тамо. Ако се партнер стално враћа, читајте датотеку после заустављања, а не пре тога.

NetworkManager се понаша опет другачије: он поседује профил и примењује га при активирању, па је ручно уређен .conf поред активне везе NetworkManager-а само украс. Изаберите једног власника интерфејса и пустите да га други менаџер не дира.

Учините да измена стигне на оба места

Прво уредите трајно стање, затим пустите власника да га примени, а потом проверите живо стање. Такав редослед значи да неуспех на било ком кораку указује на једну ствар уместо на три.

# 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 wg0

wg showconf исписује живу конфигурацију у истој синтакси коју користи датотека, што их чини директно упоредивим. Третирајте тај излаз као тајну: садржи приватне кључеве, зато га не лепите у тикет или чет канал. Упоредите јавне кључеве партнера и дозвољене IP адресе и проверите да се партнер ког сте намерно уклонили није вратио.

Докажите да преживљава догађај животног циклуса

Поново покрените преко власника други пут, па потврдите три одвојене ствари: партнер се појављује у wg show, бројач руковања расте након саобраћаја и апликација која зависи од тунела заиста одговара. Партнер наведен са застарелим руковањем је проблем рутирања или кључа, а не проблем трајности, и та разлика штеди бесмислену измену конфигурације.

На крају проверите шта је поновно покретање вратило. Поновно покретање које оживљава партнера ког сте намерно уклонили је иста грешка са супротним знаком и обично значи да се стара копија конфигурације још увек учитава неодакле. Запишите власника, путању датотеке, јавни кључ партнера и команде за проверу поред конфигурације, да следећа особа то не би поново открила поновним покретањем продукционог хоста.

Повезани чланци