如何在 Linux (debian) 上通过特定接口路由流量?

如何在 Linux (debian) 上通过特定接口路由流量?

我想在可用时通过 usb0(蜂窝调制解调器)而不是 eth0 路由流量。 usb0 的 IP 地址可能会随着时间而改变。由于 IP 地址可能会发生变化,在这种情况下如何创建路由?

我试过:ip route add default dev usb0

但是当我这样做时,我可以从 usb0 进行 ping 操作,但不能再通过 eth0 进行 ping 操作。有什么想法吗?

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.24.1.1      0.0.0.0         UG    10     0        0 eth0
172.19.200.136  *               255.255.255.252 U     0      0        0 usb0
172.24.1.0      *               255.255.255.0   U     0      0        0 eth0

答案1

在评论中,您提到您正在用作udhcpcDHCP 客户端。

udhcpc会将网关地址(或多个地址,如果有多个)传递给/usr/share/udhcpc/default.script名为 的变量中运行的脚本(默认情况下为 )router。然后,该脚本应相应地设置默认网关。

我猜测如果已经设置了默认网关,则默认脚本会忽略设置默认网关。

请参见:https://udhcp.busybox.net/README.udhcpc

您不能只是将数据包从任何旧的网络接口中推出。如果接口模拟以太网(就像您usb0可能所做的那样),则数据包需要有效的第 2 层目标地址。系统可以通过对网关的 IP 地址执行 ARP 请求来自动获取该信息...但必须首先知道该网关 IP 地址。

相关内容