WireGuard: sem rota até o par após uma mudança de sub-rede — duas saídas
Uma mudança de sub-rede quebra o WireGuard em dois pontos: AllowedIPs e o caminho de volta. Compare a renumeração no local com a reconstrução da interface.
O handshake está fresco no wg show, o endpoint está correto, as chaves nunca mudaram — e o ping continua dizendo que não há rota até o par. Você mudou a sub-rede do túnel há uma hora. Esse sintoma é a assinatura de uma divergência de prefixo e não de um problema de chaves: o WireGuard concluiu o handshake e depois descartou os dados porque um endereço de origem não corresponde mais ao que o par receptor aceitará. Há duas formas sensatas de aplicar uma mudança de sub-rede, e elas falham em pontos diferentes.
Duas formas de aplicar a mudança, e quanto custa cada uma
A opção A é renumerar no local: edite o endereço da interface, os intervalos dos pares, as rotas e cada cópia da configuração, e recarregue. A opção B é construir uma segunda interface no novo prefixo ao lado da antiga, mover os pares e remover a interface antiga quando o tráfego realmente tiver mudado.
| A: renumber in place | B: parallel interface | |
|---|---|---|
| Downtime | The reload window, per host | None if peers are added to both |
| Rollback | Re-apply the previous files | Point peers back at the old interface |
| Risk | Half-applied change: new address, old ranges | Two live interfaces with overlapping intent |
| Effort | Small, if the deployment has one owner | Higher, and needs a cleanup step |
| Fits | Two or three peers you control | Many peers, remote sites, or no maintenance window |
É o estado meio aplicado que torna a opção A perigosa, porque não parece quebrado. A interface sobe, o handshake tem sucesso e apenas o caminho de dados falha. A opção B custa mais trabalho, mas mantém vivo um caminho que funciona enquanto você encontra cada referência.
O que tem de se mover junto do seu lado
Quatro coisas no host local descrevem a mesma sub-rede, e mudar uma é mudar todas: o endereço da interface, o AllowedIPs de cada par, a rota que o sistema usa para esses destinos e tudo o que o gestor instala em seu nome. Com o wg-quick, as duas últimas são geradas a partir da configuração cada vez que a interface sobe, então uma cópia desatualizada reinstala o prefixo antigo em silêncio.
Compare o que está configurado com o que está vivo em vez de confiar em qualquer um dos dois:
wg show
wg showconf wg0
ip addr show wg0
ip route get 10.90.0.5A consulta de rota é o passo que as pessoas pulam. Ela responde o que o kernel realmente faria para um destino, incluindo uma rota mais específica deixada por um gestor ou por um runtime de contêineres. Se ela indicar uma interface diferente da do túnel, a configuração não é o problema.
Para uma interface em execução, aplique o arquivo editado sem derrubar o túnel:
wg syncconf wg0 <(wg-quick strip wg0)Isso atualiza pares e intervalos no local. Não atualiza o endereço da interface nem as rotas, porque não são ajustes do WireGuard — então uma renumeração ainda exige recriar a interface ou mudar o endereço com ip, e depois verificar o roteamento de novo.
O que tem de se mover junto no extremo distante
É aqui que uma mudança de sub-rede costuma morrer. AllowedIPs não é apenas uma dica de roteamento; é também a lista de endereços de origem que um par pode apresentar. Quando você renumera clientes e deixa o AllowedIPs do servidor no prefixo antigo, o servidor aceita o handshake, recebe os pacotes cifrados e os descarta porque a origem interna não corresponde a nenhum intervalo que ele associe a esse par. Nenhum erro é registrado, e o cliente vê um tempo limite.
Então atualize o lado receptor com intenção: a entrada do par no servidor deve listar o novo prefixo do cliente, a rota de volta do próprio servidor deve apontar para o túnel nesse prefixo, e qualquer rede a jusante atrás do servidor deve aprender o novo caminho. A política de firewall que nomeava o intervalo antigo precisa do mesmo tratamento, e também tudo o que fizer seleção por origem.
O diagnóstico que separa as duas falhas é barato. Um handshake recente sem dados significa que o túnel está de pé e que o endereçamento interno não concorda. Nenhum handshake significa que você está olhando para alcance ou chaves. Não gire chaves por um problema de prefixo; isso reinicia a única coisa que funcionava.
Cópias desatualizadas que sobrevivem à sua edição
Editar um arquivo não é o mesmo que mudar o sistema em execução, e as cópias são mais numerosas do que as pessoas esperam: a unidade ou o gestor que possui a interface, um segundo perfil com o mesmo nome em outro diretório, um contêiner com a configuração embutida numa imagem, uma interface de roteador que guarda a própria versão editada e um aplicativo cliente que reimporta um túnel salvo ao iniciar. Cada uma delas pode restaurar o prefixo antigo depois que sua mudança parece completa.
Nomes também viajam. Se a rota numérica funciona mas o nome do host falha, um registro DNS interno ou a configuração de um serviço ainda aponta para o endereço antigo do túnel. Corrija a referência em vez de alargar cada intervalo de par, o que esconderia o problema real e ampliaria ao mesmo tempo a ACL de origem.
Mantenha um caminho de recuperação aberto enquanto trabalha: uma segunda forma de entrar no host, um console serial ou um rollback agendado dos arquivos de configuração. Uma mudança de túnel que o tranca fora da máquina que está mudando é a forma mais comum de esta tarefa virar uma noite inteira.
Escolher entre as duas, e verificar o corte
Escolha A quando você possui todos os pares, o número é pequeno e uma interrupção curta é aceitável. Escolha B quando os pares são mãos remotas que você não controla, quando um link entre sites precisa ficar de pé ou quando você não pode garantir que cada cópia seja atualizada numa só passagem. Nesse caso acrescente o prefixo novo às duas interfaces, mova os pares um de cada vez, acompanhe o tráfego na nova e só então remova a interface antiga e suas rotas.
Em qualquer das opções, a mudança está feita quando quatro verificações passam: o handshake é recente, a consulta de rota para um destino do prefixo novo nomeia o túnel, uma carga de algumas centenas de bytes atravessa nos dois sentidos, e o mesmo vale depois de reiniciar o host ou o gestor. O manual do wg(8) é a referência do que AllowedIPs significa em cada sentido, e vale a pena reler antes de alargar um intervalo para fazer um sintoma desaparecer.
- Handshake recente e nenhum dado: olhe o AllowedIPs no receptor antes de tocar nas chaves.
- A consulta de rota aponta para a interface errada: a rota pertence a um gestor ou contêiner, não ao seu arquivo.
- Endereço numérico bom e nome de host quebrado: uma referência antiga, não um laço de roteamento.
- A mudança só está completa quando, após um reinício, o prefixo novo ainda é usado.