Ruta blackhole frente a interruptor de emergencia VPN: qué hace cada uno
Una ruta blackhole descarta el tráfico coincidente e impone una ruta cerrada ante un fallo. Compare su alcance y sus puntos ciegos con un interruptor basado en filtrado de paquetes.
Un paquete sale de un portátil, nunca llega a la puerta de enlace VPN y ningún contador del cortafuegos se mueve. La tabla de rutas ya había decidido el destino del paquete: una entrada blackhole coincidió con él y el núcleo lo descartó antes de que lo viera cualquier interfaz. Ese comportamiento es útil cuando un destino debe fallar cerrado, pero es una acción de enrutamiento con un alcance estrecho. Tratarlo como un interruptor de emergencia completo es donde fallan los diseños.
Qué coincide realmente con la acción de descartar
Una consulta de ruta elige una tabla y luego el prefijo coincidente más largo dentro de ella. Una ruta blackhole es una entrada normal cuya acción es descartar, así que solo afecta a los paquetes que habrían elegido esa entrada después de toda la decisión. Cambie la tabla con una regla de política o añada un prefijo más específico, y el descarte ya no se aplica.
Por eso el alcance de un blackhole es exacto y fácil de enunciar: cubre el prefijo, en la tabla, para esa familia de direcciones. No cubre un destino que ganaría otra tabla, y no cubre IPv6 solo porque se descarte el prefijo IPv4.
ip route get muestra la decisión antes de desplegar nada, incluida la tabla y el tipo de ruta. Leer esa salida es más rápido que deducir de una solicitud fallida qué regla o prefijo actuó.
Blackhole no es lo mismo que unreachable o prohibit
Linux ofrece tres tipos de ruta parecidos al descarte, y difieren en lo que observa el emisor. Un blackhole descarta el paquete sin respuesta, así que el cliente ve un tiempo de espera agotado. Una ruta unreachable devuelve un mensaje ICMP unreachable, así que la conexión falla rápido con un error de host o de red. Una ruta prohibit devuelve un error de prohibición administrativa, que se acerca más a un rechazo deliberado de la política.
Elija el comportamiento que quiere que vea la aplicación. Un descarte silencioso es adecuado cuando no quiere revelar la política, y un error inmediato es mejor cuando los usuarios necesitan entender por qué un destino no está disponible. Mezclar los tipos en una red genera tickets de soporte que describen la misma política como tres averías distintas.
No suponga que toda entrada de descarte es intercambiable cuando diagnostica una conexión. El texto del error, el momento y la captura de paquetes difieren, y el tipo de ruta en la tabla le dice cuál está mirando. El manual de ip-route enumera los tipos y su comportamiento ante errores.
Cómo se compara con un interruptor de emergencia
Un interruptor de emergencia es filtrado de paquetes: una regla del cortafuegos que descarta el tráfico de salida que saldría fuera del túnel. Una ruta blackhole es una decisión de reenvío tomada antes en la pila. Ambas pueden detener el tráfico, pero ven cosas distintas y fallan en casos distintos.
| 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 |
La cobertura es donde importa la comparación. Un cortafuegos puede coincidir con el propietario, el puerto o la interfaz y puede bloquear una aplicación mientras el punto final sigue siendo accesible; una ruta no. A la inversa, una ruta puede enviar un prefijo entero a un descarte sin que se cargue ningún filtro de paquetes, lo que resulta útil en un sistema mínimo.
AllowedIPs de WireGuard es enrutamiento por clave criptográfica, no un cortafuegos. Decide qué prefijos de destino se aceptan en la interfaz, y un perfil que solo enumera la subred del túnel simplemente deja los demás destinos a la ruta predeterminada normal. Por eso los perfiles de túnel completo usan 0.0.0.0/0 y por eso wg-quick también instala reglas de cortafuegos cuando puede.
Mantenga el punto final del túnel fuera del descarte
La dirección exterior del punto final debe seguir siendo accesible por la interfaz física. Un descarte que también captura esa dirección impide que el saludo inicial salga, y el túnel nunca se levanta, lo que parece un fallo de VPN más que una política de enrutamiento. Compruebe la ruta hacia el punto final antes y después del cambio.
El acceso de gestión pertenece a la misma revisión. Si el único camino hacia el router o el cliente es el túnel, un descarte demasiado amplio puede dejarlo fuera de la máquina que le permitiría quitarlo. Mantenga una ruta fuera de banda documentada, una consola o una reversión programada.
IPv6 necesita su propia entrada y su propia revisión. Un diseño que descarta IPv4 en un blackhole y deja IPv6 en la ruta predeterminada filtra exactamente el tráfico que la política pretendía detener, y el error es invisible en una prueba solo de IPv4.
Impleméntelo con un temporizador y una reversión
Aplique la ruta con una eliminación automática breve para que un error no persista tras un reinicio. Los comandos siguientes usan un rango de documentación; sustitúyalo por el prefijo que su diseño descarta realmente:
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/8El segundo comando debería informar de la ruta blackhole y de la tabla de la que proviene. El tercero programa la eliminación dentro de un minuto, que es tiempo suficiente para confirmar la política y lo bastante corto para recuperarse de un error en un host remoto. Una vez confirmado el comportamiento, haga la entrada persistente mediante la misma gestión de configuración que posee las otras rutas.
Cierre el cambio registrando el prefijo, la tabla, la familia de direcciones y el método de reversión. Un descarte es una excepción deliberada en el diseño de enrutamiento, y el siguiente ingeniero necesita saber qué tráfico debía detener antes de decidir si sigue perteneciendo.