As atualizações automáticas são uma política razoável para um servidor a que você chega pela própria VPN, e ao mesmo tempo são um único ponto de falha autoinfligida. A operação do pacote reinicia o serviço, o túnel cai e o caminho administrativo que você usava desaparece com ele. Existem dois modelos de recuperação, e a escolha entre eles depende de uma condição: se você tem um caminho de entrada que não passe pelo que está sendo atualizado.

Dois modelos de recuperação, uma condição decisiva

O primeiro modelo confia na atualização e assume que você poderá reconectar depois. Funciona quando a VPN é uma de várias formas de chegar ao host e quando a falha do túnel não retira sua capacidade de diagnosticá-lo. O segundo modelo posiciona antecipadamente um caminho independente, normalmente o console do provedor de hospedagem, e trata o túnel como a coisa que a manutenção tem mais probabilidade de quebrar. Ambos os modelos são defensáveis, e apenas um deles exige trabalho prévio.

A condição decisiva é fácil de enunciar e fácil de pular. Se todo caminho administrativo até a máquina passa pelo serviço que está sendo atualizado, você não tem modelo de recuperação algum, apenas uma expectativa. Diga isso em voz alta na revisão da mudança.

Testar essa condição leva dez minutos e precisa acontecer antes da primeira atualização automática, não durante o incidente. Abra o console enquanto tudo funciona, confirme que as credenciais estão válidas e feche-o de novo. Confirme que o console abre no host que você imagina. Depois confirme que o login que você realmente usaria às 3 da manhã ainda funciona.

Essa última parte importa mais do que parece. Uma conta de console cuja senha foi trocada seis meses atrás e nunca verificada não é um caminho de recuperação; é um documento que descreve um.

O que um backup não restaura

Um arquivo de configuração é um registro de ficheiros, e uma atualização muda mais do que ficheiros. O estado dos pacotes, os módulos do kernel, as ligações de unidades ativadas e as regras de firewall aplicadas por uma ferramenta separada vivem fora do diretório de configuração, e uma restauração que os ignora produz uma máquina que parece configurada e não encaminha.

What changedRestored by a configuration backupNeeds its own action
Service unit or startup orderingPartly, if the unit file was includedPackage state and enabled links
Kernel module or interface supportNoKernel or module rollback, or a boot-time decision
Peer or device authorizationOnly if the backup predates the revocationA deliberate decision about which peers return
Firewall rules applied outside the configOnly if they were capturedReplaying and verifying each rule

A autorização merece a própria linha. Um backup feito antes de um dispositivo comprometido ser removido restaurará alegremente o acesso desse dispositivo. Voltar a ele durante uma queda é como um incidente se torna dois, e a decisão de restaurar deve ser tomada sobre os pares com a mesma explicitude com que é tomada sobre ficheiros.

O mecanismo da reversão também importa. Copiar um executável mais antigo sobre um gerido pelo pacote não é a reversão suportada de uma alteração de pacote, e deixa a base de dados de pacotes a descrever um estado que o sistema de ficheiros não cumpre. Use o caminho de downgrade do próprio gestor de pacotes ou a captura instantânea que o provedor oferece. Um downgrade que a base de dados de pacotes registra é um que você pode repetir.

Nada disso argumenta contra backups. Argumenta a favor de saber que camada cada artefato cobre, porque o modo de falha de uma restauração parcial é mais confuso do que a queda original. Escreva a camada ao lado de cada backup no runbook.

Ponto de controlo, atualização e depois verificação a partir de fora

Registe o estado antes da alteração numa forma que possa comparar depois: as versões instaladas, as unidades de serviço envolvidas, os sockets à escuta e a lista atual de pares. Quatro comandos cobrem a maior parte disso num host Linux.

systemctl list-units --type=service | grep -E 'openvpn|wg-quick'
ss -lunp | grep -E ':51820|:1194'
journalctl -u wg-quick@wg0 --since '-10 min'

O primeiro mostra que unidades existem e se estão em execução, o segundo confirma que o ouvinte está realmente ligado e o terceiro dá-lhe o relato do próprio serviço sobre os últimos minutos. Nenhum deles prova que um cliente consegue ligar-se, por isso o passo seguinte acontece fora do host. Guarde essas leituras como a sua linha de base de comparação.

Verifique a partir de uma rede que não use o túnel: autentique um cliente autorizado, resolva um nome e alcance uma aplicação prevista. Uma linha de estado local a dizer que a interface está no ar é uma afirmação sobre a interface, não sobre o encaminhamento, as chaves ou a política que admite um par.

Depois teste deliberadamente o caminho de reconexão. Reinicie o serviço uma vez e confirme que o túnel volta sem intervenção manual, porque um serviço que só arranca corretamente no boot é um serviço que o surpreenderá no pior momento.

Quando falhar, use o caminho que testou

A sequência de recuperação não é glamorosa e funciona: chegue ao host pelo caminho independente, leia os registos do próprio serviço e restaure o ponto de controlo específico que corresponde à falha. Mude uma coisa por tentativa para que a leitura seguinte do registo signifique algo.

Resista ao impulso de fazer várias alterações não registadas para recuperar a conectividade. Uma máquina corrigida com cinco edições simultâneas não pode ser explicada depois, e a próxima atualização reintroduzirá aquela que realmente suportava a carga.

Depois decida a política permanente com evidências. Se a atualização expôs uma dependência que ninguém documentou, a correção é documentação e um teste, não desativar as atualizações. Se expôs um serviço que não consegue reiniciar de forma limpa, a correção está na unidade, não no calendário.

A comparação resolve-se de forma limpa assim que a condição tem nome. Um caminho independente torna as atualizações automáticas um risco gerível. A sua ausência torna a mesma política uma queda programada com um tempo de recuperação desconhecido, e nenhuma quantidade de automação muda essa aritmética.

Artigos relacionados