Como faço para excluir uma rota da tabela de roteamento do Linux?

36

Isso acaba sendo mais difícil do que eu pensava. As rotas que eu quero excluir são as "!" rotas rejeitadas, mas não consigo formular o comando "route del" certo para retirá-lo.

Aqui está a tabela de roteamento ...

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

Eu tenho duas entradas para 192.168.46.79 e 10.1.0.0. Estes são gerados automaticamente pelo pequeno roteador baseado em Linux que estou usando. Eu posso fazer ping nos túneis IPSEC do próprio shell, mas o tráfego da LAN leva a segunda rota (a rota "!" Ou "! H" rejeitada) por razões que eu simplesmente não entendo.

    
por Zoredache 14.09.2010 / 20:12

3 respostas

46

com o comando route -n você obterá

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

você obterá todos os parâmetros respectivamente acima

    
por 10.11.2015 / 15:22
14

Os tipos de rotas com o sinalizador ! estão inacessíveis ou são proibidos. route , sendo uma utilidade antiga da net-tools, não diferencia entre os dois. Use iproute2.

A maneira de net-tools para excluir essas rotas seria usar route del nela. No entanto, net-tools não oferece nenhuma maneira de diferenciar entre a rota rejeitada e a outra (porque o argumento dev é opcional, embora não seja provável que um dispositivo remova a rota inacessível).

O iproute2 permite que você faça assim:

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

Pode não ser inacessível, mas proibir. Use ip route sem argumentos para determinar qual.

    
por 15.09.2013 / 14:56
6

Acho que é isto: route del -net 10.1.0.0 netmask 255.255.0.0 metric 2

Eu não tenho 100% de certeza. Mas eu acho que você tem algo mais engraçado desde que você tem duas rotas padrão.

    
por 14.09.2010 / 20:22