Un paquet quitte un ordinateur portable, n'atteint jamais la passerelle VPN, et aucun compteur de pare-feu ne bouge. La table de routage a déjà décidé du sort du paquet : une entrée blackhole y correspondait et le noyau l'a écarté avant qu'une interface ne le voie. Ce comportement est utile lorsqu'une destination doit échouer en mode fermé, mais c'est une action de routage à portée étroite. Le traiter comme un kill switch complet est là où les conceptions se trompent.

Ce que l'action d'écartement couvre réellement

Une recherche de route choisit une table, puis le préfixe correspondant le plus long à l'intérieur. Une route blackhole est une entrée normale dont l'action est d'écarter, elle n'affecte donc que les paquets qui auraient choisi cette entrée après toute la décision. Changez la table avec une règle de politique, ou ajoutez un préfixe plus spécifique, et l'écartement ne s'applique plus.

C'est pourquoi la portée d'un blackhole est précise et facile à énoncer : il couvre le préfixe, dans la table, pour cette famille d'adresses. Il ne couvre pas une destination qu'une autre table gagnerait, et il ne couvre pas IPv6 simplement parce que le préfixe IPv4 est écarté.

ip route get montre la décision avant que vous ne déployiez quoi que ce soit, y compris la table et le type de route. Lire cette sortie est plus rapide que de déduire d'une requête échouée quelle règle ou quel préfixe a agi.

Blackhole n'est pas identique à unreachable ou prohibit

Linux propose trois types de route proches de l'écartement, et ils diffèrent par ce que l'émetteur observe. Un blackhole abandonne le paquet sans réponse, le client voit donc un délai dépassé. Une route unreachable renvoie un message ICMP unreachable, la connexion échoue donc vite avec une erreur d'hôte ou de réseau. Une route prohibit renvoie une erreur de prohibition administrative, plus proche d'un refus délibéré de politique.

Choisissez le comportement que vous voulez montrer à l'application. Un écartement silencieux convient lorsque vous ne voulez pas révéler la politique, et une erreur immédiate est préférable lorsque les utilisateurs doivent comprendre pourquoi une destination est indisponible. Mélanger les types sur un réseau produit des tickets de support qui décrivent la même politique comme trois pannes différentes.

Ne supposez pas que toute entrée d'écartement est interchangeable lorsque vous diagnostiquez une connexion. Le texte d'erreur, le moment et la capture de paquets diffèrent, et le type de route dans la table vous dit lequel vous regardez. Le manuel d'ip-route liste les types et leur comportement en cas d'erreur.

Comment elle se compare à un kill switch

Un kill switch est un filtrage de paquets : une règle de pare-feu qui écarte le trafic sortant qui quitterait hors du tunnel. Une route blackhole est une décision de transfert prise plus tôt dans la pile. Les deux peuvent arrêter le trafic, mais elles voient des choses différentes et manquent des cas différents.

MechanismWhat it blocksWhat it missesHow failure looks
Blackhole routeDestinations matching the prefix and tableOther tables, other address families, traffic with a different routeSilent timeout
Firewall kill switchEgress not bound to the tunnel interfaceRules that are too broad can break the endpoint or DHCPDropped packets with counters
WireGuard AllowedIPsDestinations not routed into the interfaceTraffic that never enters the interface at allNo tunnel route, direct egress

La couverture est là où la comparaison compte. Un pare-feu peut correspondre au propriétaire, au port ou à l'interface et bloquer une application tout en laissant le point de terminaison joignable ; une route ne le peut pas. À l'inverse, une route peut envoyer tout un préfixe à l'écartement sans qu'aucun filtre de paquets ne soit chargé, ce qui est utile sur un système minimal.

AllowedIPs de WireGuard est un routage par clé cryptographique, pas un pare-feu. Il décide quels préfixes de destination sont acceptés dans l'interface, et un profil qui ne liste que le sous-réseau du tunnel laisse simplement les autres destinations à la route par défaut ordinaire. C'est pourquoi les profils de tunnel complet utilisent 0.0.0.0/0 et pourquoi wg-quick installe aussi des règles de pare-feu quand il peut.

Gardez le point de terminaison du tunnel hors de l'écartement

L'adresse extérieure du point de terminaison doit rester joignable par l'interface physique. Un écartement qui capture aussi cette adresse empêche la poignée de main de sortir, et le tunnel ne monte jamais, ce qui ressemble à une panne VPN plutôt qu'à une politique de routage. Vérifiez la route du point de terminaison avant et après le changement.

L'accès de gestion relève de la même revue. Si le seul chemin vers le routeur ou le client est le tunnel, un écartement trop large peut vous enfermer hors de la machine qui permettrait de le retirer. Gardez une route hors bande documentée, une console ou un retour arrière minuté.

IPv6 a besoin de sa propre entrée et de sa propre revue. Une conception qui écarte IPv4 dans un blackhole tout en laissant IPv6 sur la route par défaut fuit exactement le trafic que la politique devait arrêter, et l'erreur est invisible dans un test limité à IPv4.

Déployez-la avec une minuterie et un retour arrière

Appliquez la route avec une suppression automatique courte pour qu'une erreur ne survive pas à un redémarrage. Les commandes ci-dessous utilisent une plage de documentation ; remplacez-la par le préfixe que votre conception écarte réellement :

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/8

La deuxième commande devrait signaler la route blackhole et la table d'où elle vient. La troisième programme la suppression dans une minute, ce qui laisse assez de temps pour confirmer la politique et reste assez court pour se remettre d'une erreur sur un hôte distant. Une fois le comportement confirmé, rendez l'entrée persistante via la même gestion de configuration qui possède les autres routes.

Clôturez le changement en consignant le préfixe, la table, la famille d'adresses et la méthode de retour arrière. Un écartement est une exception délibérée dans la conception du routage, et l'ingénieur suivant doit savoir quel trafic il devait arrêter avant de décider s'il a encore sa place.

Articles similaires