我有两个 WAN 接口接入 Debian 8 VM。
WAN 1 - 所有互联网和本地流量。(0.0.0.0/0)具有静态 IP,因此 IP、网络掩码和网关是固定值。
WAN 2 - 仅限特定私有子网流量 (10.100.0.0/16)。通过 DHCP 获取的 IP 可以在 10.0.0.0/8 范围内的任何位置。
我无法控制 WAN2(该链接由 ISP 提供),因此我面临双网关的情况。
现在,这是我的设置方式。
iface eth0 inet static
address 172.16.100.100
netmask 255.255.255.0
gateway 172.16.100.1
iface eth1 inet dhcp
然后我手动启动 eth1,获取 DHCP 网关 IP,然后手动设置 10.100.0.0/16 的静态路由。当然,这在 DHCP 租约续订之前(大约每 4 天一次)都运行良好。此时我必须关闭 eth1,然后将其重新打开,记下新网关并设置新的静态路由。
我尝试通过 eth1 设置到 10.100.0.0/16 的静态路由,但不知道下一跳网关 IP......当然这不起作用。
我也尝试了几种 iproute2 设置,但最终似乎还是要知道下一跳地址。
我正在尝试解决的问题——由于我不知道下一跳地址(因为它通过 DHCP 不断变化),如何为 eth1 设置静态路由?
答案1
假设您正在运行dhclient
(ISC DHCP 客户端),您可以添加一个脚本,/etc/dhcp/dhclient-enter-hooks.d
该脚本获取 DHCP 网关地址(它位于某个环境变量或其他变量中)并更新路由表。确切的实现留给读者练习。
(强制性的“你的 ISP 很烂”附录:你的 ISP真的糟透了)
答案2
你尝试过这个吗?
ip route add 10.100.0.0/16 dev eth1
如果这仍然不起作用,很有可能存在路由冲突,请尝试添加度量或检查route -n