No se puede eliminar una ruta con la puerta de enlace 0.0.0.0

8

Estoy tratando de configurar mis rutas de una manera que me permita conectarme a Vagrant box of Solum demo .

Mi tabla de enrutamiento contiene, entre otras, las siguientes rutas:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
192.168.76.0    192.168.76.2    255.255.255.0   UG    0      0        0 vboxnet0
192.168.76.0    0.0.0.0         255.255.255.0   U     0      0        0 vboxnet0

Sospecho que la tercera ruta (generada automáticamente al iniciar el cuadro Vagrant) está interfiriendo con la segunda ruta (creada manualmente), así que estoy tratando de eliminarla.

Sin embargo, usando cualquiera de los siguientes comandos

$ sudo route del 192.168.76.0 gw 0.0.0.0
$ sudo route del 192.168.76.0

devoluciones:

SIOCDELRT: No such process

que generalmente aparece cuando routeno puede encontrar la ruta.

Por otro lado, usando

$ sudo route del 192.168.76.0/24 gw 0.0.0.0
$ sudo route del 192.168.76.0/24

rendimientos:

route: netmask 000000ff doesn't make sense with host route
Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables
(rest of usage)

¿Qué estoy haciendo mal? ¿Hay alguna razón por la que no puedo eliminar esa ruta? ¿Me equivoco al suponer que interfiere con el que configuré?

(Estoy usando Ubuntu 14.04+).

Dragomok
fuente
2
Fuera de mi cabeza: inténtalo route del -net 192.168.76.0. De lo contrario, cree que está intentando eliminar una ruta a un único host.
Jos
¿Cómo agregaste la ruta? Parece que está utilizando vbox, por lo que el enrutamiento puede ser parte de la configuración de vobx, no puedo decir por lo que publicó.
Panther
Solo por curiosidad, pero ¿por qué estableciste esa ruta? Para mí, parece que la red 192.168.76.0/24 está en enlace, no se necesita puerta de enlace. Pero cuando eche un vistazo a las instrucciones de configuración que vinculó, encontrará la ruta route add -net 192.168.78.0/24 192.168.76.2que tiene mucho más sentido.
Nephente
2
Por cierto. Si dos o más rutas coinciden con un host, la más específica tiene prioridad, es la que tiene el prefijo más largo. Una ruta de host estática tiene el prefijo / 32 y se preferirá. El siguiente criterio (generalmente) depende de cómo se aprendió la ruta, por ejemplo, estática o mediante un protocolo de enrutamiento, donde las rutas en enlace tienen mayor prioridad, seguidas de las estáticas, seguidas de rutas dinámicas aprendidas a través de, por ejemplo, OSPF.
Nephente
@Jos su respuesta resultó ser casi correcta: si solo agrego /24al final del comando, funciona. Gracias. Si publica una respuesta, quizás con alguna explicación en interés de las personas que examinarán esta pregunta en el futuro, la aceptaré.
Dragomok

Respuestas:

11

Para eliminar una sola ruta de una tabla de rutas, debe especificar suficientes parámetros para que se pueda hacer una coincidencia única con una de las rutas.

Si desea eliminar una subred completa (en lugar de un solo host), debe usar el -netindicador y alguna indicación del alcance de la dirección de red, es decir, el netmaskparámetro (por ejemplo, 255.255.255.0) o un número como / 24 (lo que significa que los primeros 24 bits son el número de red y los 8 restantes se usan para los hosts). En tu caso, ambos

sudo route del -net 192.168.76.0/24

y

sudo route del -net 192.168.76.0 netmask 255.255.255.0

Habría funcionado.

(gracias a @nephente por adiciones útiles)

Jos
fuente
o seguido especificando la interfaz, por ejemplo dev vboxnet0->sudo route del -net 192.168.76.0 netmask 255.255.255.0 dev vboxnet0
adadion
0

El comentario hecho por Jos es casi correcto:

$ sudo route del -net 192.168.76.0/24 elimina la ruta

Dragomok
fuente