Você adiciona um peer a /etc/wireguard/wg0.conf, executa systemctl restart wg-quick@wg0, e o peer desaparece do arquivo quando você olha de novo. Nada corrompeu nada. Um reinício é uma parada seguida de uma inicialização, e a etapa de parada pode gravar o estado de execução atual por cima do arquivo que você acabou de editar. A configuração responsável fica no mesmo arquivo que você estava editando, e é isso que torna o ciclo tão confuso na primeira vez que você o encontra.

Dois estados, um arquivo e uma gravação no desligamento

O estado de execução do WireGuard e um arquivo de configuração do wg-quick estão relacionados, mas são distintos. O arquivo é entrada: o wg-quick o lê, cria a interface, define endereços e rotas e configura os peers. O dispositivo do kernel é o objeto vivo, e as alterações de baixo nível feitas com wg nunca se gravam de volta.

Exceto em uma direção. Quando SaveConfig = true aparece na seção da interface, o wg-quick grava a configuração viva no arquivo como parte de derrubar a interface. O manual do wg-quick avisa exatamente sobre isso: alterações feitas no arquivo enquanto a interface está ativa podem ser sobrescritas quando ela é removida. É uma gravação no desligamento, não um timer em segundo plano, então só dispara quando algo para a interface.

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

Leia a tabela como um aviso sobre a ordem. Toda perda acidental nessa área vem de uma edição que aconteceu antes de uma gravação, em vez de depois.

Pare primeiro, edite depois, inicie por último

Se o arquivo é a sua fonte de verdade, torne o arquivo autoritativo por construção em vez de por esperança. Derrube a interface, confirme que ela sumiu, então edite, e então suba-a de novo. A regra é simples: nenhuma edição existe enquanto uma gravação ainda pode rodar.

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

A linha de backup não é cerimônia. Se o túnel é o seu caminho até esta máquina, a etapa de derrubada pode encerrar a sua sessão, e uma cópia no disco mais um console ou um caminho fora de banda é a única reversão que funciona. Verifique essa segunda linha antes de confiar nela: um nome de interface desatualizado em um script que falha silenciosamente é como as pessoas editam um arquivo que ainda está vivo.

Definir SaveConfig = false antes de uma derrubada normal é o outro caminho aceito, e precisa ser feito no arquivo que o wg-quick realmente lê. Isso impede aquela única gravação automática. Isso não faz um perfil separado do NetworkManager, uma exportação de roteador ou um entrypoint de contêiner recarregar as suas edições, porque esses gerenciadores nunca leem este arquivo.

Aplique mudanças de peers sem rasgar a interface

Nem toda edição exige uma queda. Mudanças no nível de peer podem ser aplicadas a uma interface em execução convertendo o arquivo em uma configuração e sincronizando-a, o que evita completamente a etapa de derrubada e, portanto, evita a gravação:

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

A etapa strip importa. Ela imprime o arquivo com as chaves exclusivas do wg-quick removidas, para que endereços, DNS e diretivas de roteamento não cheguem a uma ferramenta que não as entende. A sincronização então aplica peers e chaves ao dispositivo vivo sem recriar a interface, então as sessões e rotas existentes sobrevivem.

Seja preciso sobre os limites. Sincronizar peers não muda o endereço da interface, as rotas adicionadas pelo wg-quick nem a configuração do resolvedor, porque nada disso pertence ao dispositivo WireGuard. Adicionar uma sub-rede a AllowedIPs e esperar que o kernel a roteie é a leitura errada clássica; a rota precisa ser adicionada pelo wg-quick na subida ou por você.

Verifique quem é dono da interface antes de editar qualquer coisa

Em um desktop ou servidor gerenciado por um sistema de configuração, o arquivo pode ser uma saída em vez de uma entrada. Uma conexão do NetworkManager, um perfil gerado por roteador ou um script de inicialização de contêiner podem todos possuir o mesmo nome de interface, e nesse caso uma sequência impecável do wg-quick ainda edita o artefato errado.

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

O terceiro comando imprime a configuração viva no mesmo formato do arquivo, incluindo a chave privada, o que é útil para comparação e perigoso em um ticket. Redija-a antes de colar; uma chave privada em uma thread de suporte é um comprometimento permanente, não um erro de digitação.

Se a unidade de serviço está inativa mas a interface existe, algo mais a criou e o arquivo não é autoritativo. Essa única observação economiza uma hora editando um arquivo que nada lê.

Verifique o próximo reinício e depois mantenha uma reversão

O teste que realmente prova a correção é um segundo reinício, porque foi essa a sequência que falhou na primeira vez. Confirme que o peer sobrevive e que a configuração viva ainda corresponde ao que está no disco:

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

Execute o reinício duas vezes. Uma única passagem limpa pode ser sorte: o primeiro reinício pode consumir uma mudança de execução que ainda não tinha sido gravada, então o segundo é o que lhe diz que o arquivo e a execução concordaram no final do primeiro.

Mantenha o backup desde o início do processo até você ter feito o reinício duplo, depois apague-o ou mova-o para fora do diretório de configuração. Um wg0.conf.bak perdido ao lado do arquivo real é inofensivo para o wg-quick e confuso para a próxima pessoa, que acabará editando o errado.

Artigos relacionados