无法删除网关为 0.0.0.0 的路由

Dra*_*mok 9 command-line bash routing

我正在尝试以一种允许我连接到 Solum demo 的 Vagrant box 的方式设置我的路线。

我的路由表包含但不限于以下路由:

$ 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
Run Code Online (Sandbox Code Playgroud)

我怀疑第三条路线(在 Vagrant box 启动时自动生成)干扰了第二条路线(手动创建),所以我试图删除它。

但是,使用以下任一命令

$ sudo route del 192.168.76.0 gw 0.0.0.0
$ sudo route del 192.168.76.0
Run Code Online (Sandbox Code Playgroud)

返回:

SIOCDELRT: No such process
Run Code Online (Sandbox Code Playgroud)

通常在route找不到路线时弹出。

另一方面,使用

$ sudo route del 192.168.76.0/24 gw 0.0.0.0
$ sudo route del 192.168.76.0/24
Run Code Online (Sandbox Code Playgroud)

产量:

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

我究竟做错了什么?有什么原因我不能删除那条路线吗?假设它干扰了我设置的那个,我错了吗?

(我使用的是 Ubuntu 14.04+)。

Jos*_*Jos 11

要从路由表中删除单个路由,您需要指定足够的参数,以便与其中一个路由进行唯一匹配。

如果您想删除整个子网(而不是单个主机),您需要同时使用-net标志和网络地址范围的一些指示,即netmask参数(例如 255.255.255.0)或像 /24 这样的数字(意思是前24位是网络号,剩下的8位是主机用的)。在你的情况下,两者

sudo route del -net 192.168.76.0/24

sudo route del -net 192.168.76.0 netmask 255.255.255.0

会工作。

(感谢@nephente 的有用补充)