将网络接口定义为独立于 IP 的默认网关

将网络接口定义为独立于 IP 的默认网关

我知道如何为具有 IP 的接口分配默认网关

ip route add default via <host> dev <dev>
# e.g.
ip route add default via 192.168.0.101 dev eth0

问题是我的场景中eht0的IP是外部管理的。因此,如果 eth0 的 IP 更改,则前面的命令将不起作用。

有没有一种简单的方法可以将接口分配为默认网关,而与它拥有的 IP 无关?

  • 笔记:开机时接口未UP。
  • 笔记2:我的接口是 3g 调制解调器,因此在请求连接之前我也不知道网关 IP。

答案1

一些调制解调器卡正在做代理ARP。这意味着您可以知道默认路由是通过该卡无网关并且您的系统将开始向任何 IP 发出 ARP 请求(例如,a 之后的 8.8.8.8 的 ARP ping 8.8.8.8),因为该卡看起来像以太网,就好像整个 Internet 都在 LAN 上一样。如果该卡正在执行代理 ARP,则这将起作用。名为的卡的示例无线网0:

ip route add default dev wwan0

如果它不执行代理 ARP,除了 3 秒后超时并显示任何 Internet IP 的“目标主机无法访问”消息之外,不会发生任何其他情况。

您必须进行测试,看看结果如何。

答案2

尝试

IP=$(ip a s dev eth0 | awk '$1=="inet" { split($2,I,"/") ;print I[1] }')
ip route add default via $IP dev eth0

您可以将 eth0 替换为变量。

我无法确定 eth0(或任何调制解调器接口)是否由 DHCP 管理,很可能会提供正确的路由。

答案3

ping 8.8.8.8
IP地址“外部管理”有两种方式:这种通过DHCP获取IP地址,同样的DHCP包中还包含默认路由,必须自动设置。或者,它是一个点对点连接,当通过 ppp 等建立时。它还会为您提供来自另一个端点的 IP,然后您可以将其用于路由。 TL; DR:没有办法“设置独立于IP的网关”,这不是它的工作原理。您自动设置默认路由作为对获得地址的接口的反应。详细信息取决于您的网络接口的类型。 - 6 月 11 日晚上 8:06

相关内容