Rota blackhole contra kill switch de VPN: o que cada uma faz
Uma rota blackhole descarta o tráfego correspondente e impõe um caminho fechado em caso de falha. Compare o seu alcance e pontos cegos com um kill switch baseado em filtragem de pacotes.
Um pacote sai de um portátil, nunca chega à gateway VPN e nenhum contador da firewall se move. A tabela de rotas já decidiu o destino do pacote: uma entrada blackhole correspondeu a ele e o kernel descartou-o antes de qualquer interface o ver. Esse comportamento é útil quando um destino deve falhar de forma fechada, mas é uma ação de encaminhamento com alcance estreito. Tratá-la como um kill switch completo é onde os projetos erram.
O que a ação de descarte realmente abrange
Uma consulta de rota escolhe uma tabela e, depois, o prefixo correspondente mais longo dentro dela. Uma rota blackhole é uma entrada normal cuja ação é descartar, por isso só afeta pacotes que teriam escolhido essa entrada depois de toda a decisão. Mude a tabela com uma regra de política, ou acrescente um prefixo mais específico, e o descarte deixa de se aplicar.
Por isso o alcance de um blackhole é exato e fácil de enunciar: cobre o prefixo, na tabela, para essa família de endereços. Não cobre um destino que outra tabela ganharia, e não cobre IPv6 só porque o prefixo IPv4 é descartado.
ip route get mostra a decisão antes de implementar seja o que for, incluindo a tabela e o tipo de rota. Ler essa saída é mais rápido do que deduzir de um pedido falhado que regra ou prefixo atuou.
Blackhole não é o mesmo que unreachable ou prohibit
O Linux oferece três tipos de rota semelhantes ao descarte, e diferem no que o emissor observa. Um blackhole descarta o pacote sem resposta, por isso o cliente vê um tempo limite. Uma rota unreachable devolve uma mensagem ICMP unreachable, por isso a ligação falha depressa com um erro de anfitrião ou de rede. Uma rota prohibit devolve um erro de proibição administrativa, mais próximo de uma recusa deliberada de política.
Escolha o comportamento que quer que a aplicação veja. Um descarte silencioso é adequado quando não quer revelar a política, e um erro imediato é melhor quando os utilizadores precisam de perceber porque um destino está indisponível. Misturar os tipos numa rede gera pedidos de suporte que descrevem a mesma política como três avarias diferentes.
Não assuma que toda a entrada de descarte é permutável quando diagnostica uma ligação. O texto do erro, o momento e a captura de pacotes diferem, e o tipo de rota na tabela diz qual está a observar. O manual do ip-route lista os tipos e o comportamento em caso de erro.
Como se compara com um kill switch
Um kill switch é filtragem de pacotes: uma regra de firewall que descarta o tráfego de saída que sairia fora do túnel. Uma rota blackhole é uma decisão de encaminhamento tomada mais cedo na pilha. Ambas podem parar tráfego, mas veem coisas diferentes e falham em casos diferentes.
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No tunnel route, direct egress |
A cobertura é onde a comparação importa. Uma firewall pode corresponder ao proprietário, à porta ou à interface e bloquear uma aplicação enquanto o ponto final continua acessível; uma rota não consegue. Inversamente, uma rota pode enviar um prefixo inteiro para o descarte sem que qualquer filtro de pacotes esteja carregado, o que é útil num sistema mínimo.
AllowedIPs do WireGuard é encaminhamento por chave criptográfica, não uma firewall. Decide que prefixos de destino são aceites na interface, e um perfil que lista apenas a sub-rede do túnel deixa simplesmente os outros destinos para a rota predefinida normal. É por isso que os perfis de túnel completo usam 0.0.0.0/0 e é por isso que o wg-quick também instala regras de firewall quando pode.
Mantenha o ponto final do túnel fora do descarte
O endereço exterior do ponto final tem de continuar acessível através da interface física. Um descarte que também captura esse endereço impede o aperto de mão de sair, e o túnel nunca sobe, o que parece uma falha de VPN em vez de uma política de encaminhamento. Verifique a rota até ao ponto final antes e depois da alteração.
O acesso de gestão pertence à mesma revisão. Se o único caminho até ao router ou ao cliente for o túnel, um descarte demasiado amplo pode fechá-lo fora da máquina que lhe permitiria removê-lo. Mantenha uma rota fora de banda documentada, uma consola ou uma reversão temporizada.
IPv6 precisa de uma entrada própria e de uma revisão própria. Um projeto que descarta IPv4 num blackhole e deixa IPv6 na rota predefinida vaza exatamente o tráfego que a política pretendia parar, e o erro é invisível num teste apenas de IPv4.
Implemente com um temporizador e uma reversão
Aplique a rota com uma remoção automática curta para que um erro não sobreviva a um reinício. Os comandos abaixo usam um intervalo de documentação; substitua-o pelo prefixo que o seu projeto descarta de facto:
sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8O segundo comando deve reportar a rota blackhole e a tabela de onde veio. O terceiro agenda a remoção dentro de um minuto, o que é tempo suficiente para confirmar a política e curto o bastante para recuperar de um erro num anfitrião remoto. Depois de confirmado o comportamento, torne a entrada persistente através da mesma gestão de configuração que detém as outras rotas.
Feche a alteração registando o prefixo, a tabela, a família de endereços e o método de reversão. Um descarte é uma exceção deliberada no projeto de encaminhamento, e o próximo engenheiro precisa de saber que tráfego devia parar antes de decidir se ainda pertence ali.