我有以下要删除的路线:
10.250.0.0 10.250.0.37 UG 1 0
我已运行以下命令来删除它,但失败。
bash-3.2# route delete 10.250.0.0 -netmask 255.255.255.0 10.250.0.37
delete net 10.250.0.0: gateway 10.250.0.37: not in table
失败的原因是什么?
答案1
对于 Solarisroute
命令,删除和添加子命令具有以下语法:
route [ -fnvq ] cmd destination gateway [metric/netmask]
所以你可能会在以下方面取得更大的成功:
route delete 10.250.0.0 10.250.0.37 -netmask 255.255.255.0
或者永久删除它(如@Alexandre Alves 评论;假设这是一条永久路线):
route -p delete 10.250.0.0 10.250.0.37 -netmask 255.255.255.0
(您确定您的网络掩码对于该 A 类 IP 地址是正确的吗?)
答案2
不要忘记-p
路线命令上的标志。这就是它持久的原因。
所以而不是这样做:
route delete 10.250.0.0 10.250.0.37 -netmask 255.255.255.0
你应该这样做:
route -p delete 10.250.0.0 10.250.0.37 -netmask 255.255.255.0
如果您在删除时不使用该-p
标志,那么您只会在重新启动后体验到该路由仍然存在(前提是该路由首先是持久的)。
您可以随时使用该netstat -r
命令查看所有路由,并且可以使用该route -p
命令查看持久路由。
答案3
这是非常棘手的,我今天注意到要专门删除 Solaris 10 中的路由。
您需要先运行命令
route -p show
这将列出系统中添加的所有持久路由,以及用于为主机路由或网段路由创建它们的命令。否则,在运行删除命令后,您可能会收到“不在文件中”的消息。
让我在下面的例子中解释一下:
~# route -p show
- persistent: route add host 10.47.118.111 10.47.89.1
- persistent: route add 10.48.145.0/24 10.47.89.18
- persistent: route add 10.50.21.0 10.47.89.32 -netmask 255.255.255.0
在这里您可以看到使用了 3 种不同的添加路线的方法。
要删除您需要使用的第一条路线:
~# route -p delete host 10.47.118.111 10.47.89.1
相反,如果您运行命令:
# route -p delete 10.47.118.111/24 10.47.89.1
假设您使用了正确的网络掩码,您仍然无法删除此命令中的持久路由,即使它看起来是正确的命令并最终收到消息“不在文件中”。这在 Red Hat 风格中通常很灵活,因此您可以使用任何方法来添加/删除路由,但 Solaris 10 则不然,不确定其他版本或是否有任何修复。
类似地,要删除第二条和第三条持久路由,您需要准确使用:
~# route -p delete 10.48.145.0/24 10.47.89.18
~# route -p delete 10.50.21.0 10.47.89.32 -netmask 255.255.255.0
希望当您对发生的事情一无所知时这会有所帮助:)