如何删除所有默认网关

如何删除所有默认网关

我正在运行定制的 Linux 机器,所以并非所有 Linux 命令都可用
我执行网络相关命令,所以我需要设置默认网关在我运行命令之前,然后立即删除该网关。

为此,我在一行中运行所有命令:

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

问题是,由于某种原因,我曾经在同一台机器上发现了 2 个默认网关,这导致我的所有命令失败,因为即使我在运行测试之前设置了默认网关,它仍然很混乱并且无法运行我的测试。

那么有没有办法用一个命令删除所有默认网关?我有大量正在增加的机器,在每台机器上都植入一个脚本是不切实际的。我需要一个命令作为简单的如下:

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

到目前为止我发现的只是删除命令A默认网关,但不是全部, /sbin/route del default这对我不起作用。

/sbin/route帮助显示以下内容

/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

答案1

如果您使用ip而不是route,您可以简单地运行:

ip route del 0/0

我相信它捕获了所有默认路由。

答案2

要删除所有默认网关,请使用ip

ip route flush 0/0

答案3

所有答案都很好,但我使用一种不同的方法解决了这个问题,我使用命令仅添加一个默认网关,但如果已经有一个默认网关,则会失败。从而最终在命令结束时删除错误的网关。这应该第二次有效。

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

答案4

它解决了
https://github.com/hub4ops/vagrant/blob/main/Vagrantfile

Vagrant.configure("2") do |config|    
  config.vm.box = "ubuntu/trusty64"    
  config.vm.network "public_network", bridge: "Intel(R) Dual Band Wireless-AC 7265"    
  config.vm.provision "shell", inline: <<-SHELL    
    ip route del 0/0
    ip route add 0.0.0.0/0 via 192.168.1.1
    echo "nameserver 8.8.8.8" > /etc/resolv.conf
  SHELL
end

相关内容