动态“route add”命令不起作用,但静态命令有效

动态“route add”命令不起作用,但静态命令有效

我遇到了一个情况

route add

不起作用,但如果我将其作为静态条目添加到 sysconfig/network-scripts/route-eth0 中

它的工作

网络详细信息:

IPADDR=198.x.x.1

NETMASK=255.255.255.255

BROADCAST=198.x.x.1

如果我使用添加静态路由

route add default gw 192.x.x.254 

它返回 SIOCADDRT:没有这样的过程

类似

ping 192.x.x.254

连接:网络不可达

奇怪的是,如果我将其添加为 route-eth0 中的静态条目

route add 192.x.x.254 dev eth0 
route add default gw 192.x.x.254

一切正常,我可以看到默认的 gw路线-n ping 也正常

那么这里有什么不同呢?

答案1

您无法添加该路由,因为该默认网关位于不同的子网中,因此无法访问。

从 man 路线:

   gw GW  route packets via a gateway.  NOTE: The specified gateway must be reachable first. This usually means that you have to set up a
          static  route  to the gateway beforehand. If you specify the address of one of your local interfaces, it will be used to decide
          about the interface to which the packets should be routed to. This is a BSDism compatibility hack.

答案2

IPADDR=198.xx1

网络掩码=255.255.255.255

广播=198.xx1

我假设你的 ip 应该是 192.xx1(但解释也适用于 198.xx1),所以你创建一个扩展名为 0 位的子网(192.xx1/32),这意味着它将视图限制在其自身

如果我使用添加静态路由

路由添加默认网关 192.xx254

在这里,您在子网扩展之外添加了一个网关,因此会出现错误:

它返回 SIOCADDRT:没有这样的过程

出于同样的原因,您无法 ping 除您的 IP (192.xx1) 之外的任何 IP

路由添加 192.xx254 dev eth0

路由添加默认网关 192.xx254

在这里,您向接口 eth0 添加了一条到主机 192.xx254 的路由,这样您的子网(单个 IP 192.xx1)就知道 192.xx254 的位置,因此当您将其添加为网关时,一切正常。使用之前的配置,您无法知道 192.xx254 在哪里。

相关内容