Como remover todos os gateways padrão

10

Estou executando uma máquina Linux customizada, então nem todos os comandos do Linux estão disponíveis . Eu executo comandos relacionados à rede, portanto, preciso definir um gateway padrão antes de executar meu comando e removê-lo imediatamente depois.

Para isso, executo todos os meus comandos em uma linha:

/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;

O problema é que, por algum motivo, uma vez encontrei dois gateways padrão na mesma máquina, o que causou a falha de todos os meus comandos, porque mesmo que eu configure meu gateway padrão antes de executar meu teste, ele ainda está bagunçado e não pode ser executado meu teste.

Então existe uma maneira de remover TODOS os gateways padrão em um único comando ? Eu tenho uma grande quantidade de máquinas que estão aumentando e não será prático plantar um script em todas as máquinas. Eu preciso de um comando como simples como o seguinte:

/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;

Tudo que encontrei até agora é um comando para remover o a gateway padrão, mas nem todos eles /sbin/route del default , o que não funciona para mim.

/sbin/route help exibe o seguinte

/sbin/route --help

Usage: route [{add|del|delete}]

Edit the kernel's routing tables

Options:
        -n      Don't resolve names
        -e      Display other/more information
        -A inet Select address family
    
por Muhammad Gelbana 20.12.2012 / 20:19

4 respostas

2

Todas as respostas são ótimas, mas resolvi esse problema usando uma abordagem diferente, usei o comando para adicionar apenas um gateway padrão, mas falha se já houver um. E assim, eventualmente, remover o gateway errado no final do comando. Isso deve funcionar na segunda vez isa.

ip route add default via my-gateway ip route del default

    
por 04.02.2013 / 15:36
14

Se você usa ip em vez de route , basta executar:

ip route del 0/0

Acredito que captura todas as rotas padrão.

    
por 20.12.2012 / 20:45
2

Se o seu código quebrar com vários gateways padrão, você provavelmente também deve procurar em vários endereços IP por dispositivo.

Como você já recebeu uma resposta aqui, é outra abordagem, pois você deve NUNCA alterar a configuração do seu sistema apenas porque deseja executar / testar um script. Que tal usar namespaces de rede? Para uma breve introdução, como adicionar dispositivos virtuais ao seu NS (namespace), dê uma olhada no link .

Para criar um namespace chamado test e execute um comando sob esse namespace, apenas execute

ip netns add test
ip netns exec test COMMAND

onde COMMAND pode ser, por exemplo, seu shell ou apenas o script do servidor.

    
por 20.12.2012 / 22:15
2

Para remover todos os gateways padrão usando ip

ip route flush 0/0
    
por 23.02.2016 / 14:29