¿Cómo elimino una ruta de la tabla de enrutamiento de Linux?

42

Esto resulta ser más difícil de lo que pensaba. Las rutas que quiero eliminar son "!" rechazó rutas, pero parece que no puedo formular el comando "ruta del" correcto para llevarlo a cabo.

Aquí está la tabla de enrutamiento ...

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
67.40.227.206   *               255.255.255.255 UH    0      0        0 ppp0
192.168.46.79   *               255.255.255.255 UH    0      0        0 ipsec0
192.168.46.79   -               255.255.255.255 !H    2      -        0 -
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
10.1.0.0        *               255.255.0.0     U     0      0        0 ipsec0
10.1.0.0        -               255.255.0.0     !     2      -        0 -
default         *               0.0.0.0         U     3      0        0 ppp0
default         *               0.0.0.0         U     4      0        0 ppp0

Tengo dos entradas para 192.168.46.79 y 10.1.0.0. Estos son generados automáticamente por el pequeño enrutador basado en Linux que estoy usando. Puedo hacer ping a los túneles IPSEC desde el propio shell, pero el tráfico de la LAN toma la segunda ruta (la ruta rechazada "!" O "! H") por razones que simplemente no entiendo.

Zoredache
fuente
¿Puede ser más específico cuando dice que el tráfico toma la 'segunda ruta'?
Zoredache
Observe las dos entradas de la tabla para 192.168.46.79? En el shell del enrutador, si hago ping a ese lado del túnel, funciona. Desde el lado LAN, el tráfico va a la entrada "segunda 192.168.46.79" y es rechazado / descartado.
Tampoco entiendo por qué el SG560 genera dos (2) entradas de tabla para los destinos "predeterminados" y IPSEC. Estoy perplejo

Respuestas:

53

con el route -ncomando obtendrás

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 eth0
0.0.0.0         160.98.123.1    0.0.0.0         UG    600    0        0 wlan0

sudo route del -net 0.0.0.0 gw 192.168.178.1 netmask 0.0.0.0 dev eth0

obtendrá todos los parámetros respectivamente desde arriba

Philippe Gachoud
fuente
1
Después de reiniciar, vuelve a aparecer. ¿Cómo puedo eliminar permanentemente?
Shyamkkhadka
1
@shyamkkhadka depende de qué proceso se haya creado ... le recomiendo que publique una pregunta con su caso específico para analizarla. Proporcione detalles sobre la ruta que obtuvo y desea eliminar. Principalmente el servidor y el cliente dhcp crearán las rutas
Philippe Gachoud
15

Los tipos de rutas con la !bandera son inalcanzables o están prohibidos. route, siendo una antigua utilidad de las herramientas de red, no diferencia entre los dos. Use iproute2.

La forma de herramientas de red para eliminar estas rutas sería utilizarla route del. Sin embargo, net-tools no proporciona una manera de diferenciar entre la ruta rechazada y la otra (porque el argumento dev es opcional, aunque es probable que no especificar un dispositivo elimine la ruta inalcanzable).

iproute2 te permite hacerlo así:

ip route del unreachable 10.1.0.0/24
ip route del unreachable 192.168.46.79/32

Puede que no sea inalcanzable, pero prohibirlo. Use ip routesin argumentos para determinar cuál.

Falcon Momot
fuente
8

Creo que es esto: route del -net 10.1.0.0 netmask 255.255.0.0 metric 2

No estoy 100% seguro. Pero, creo que tienes algo más tonto ya que tienes 2 rutas predeterminadas.

Baumgart
fuente
2
Las rutas predeterminadas de +1: 2 siempre son una señal de que algo está mal configurado (a menos que en realidad apunten a diferentes puertas de enlace y tengan métricas diferentes).
wolfgangsz
-1

Por favor, vea si hay un "archivo de configuración del dispositivo" en /etc/network/interfaces.d/ -> ¡Tenía eht0! Realmente, ¡fue eht0 y no eth0 allí!

Andreas Brandts
fuente
Es posible que desee ampliar un poco su respuesta, ya que no es obvio en la actualidad cómo se relaciona con la pregunta que se hace.
womble