多个 USB 调制解调器上的路由冲突

多个 USB 调制解调器上的路由冲突

我在配置 USB 调制解调器路由以在 Raspberry Pi 4 中定义其各自的网关时遇到了问题。

我有多个相同的 USB 调制解调器,无法更改网关 IP,因此它们都具有相同的 IP 范围和各自的网关:

usb0 > 192.168.100.10 > gateway 192.168.100.1
usb1 > 192.168.100.11 > gateway 192.168.100.1
usb2 > 192.168.100.12 > gateway 192.168.100.1
...

我需要让它们每个都有自己的路线,它们单独指向自己的网关,这样我就可以运行时选择它们每一个curl --interface usbX

单独来看,以下路线配置是有效的:

ip route del 192.168.100.0/32 dev $INTERFACE table $INTERFACE
ip route del default table $INTERFACE
ip route add 192.168.100.0/32 dev $INTERFACE table $INTERFACE
ip route add default via 192.168.100.1 dev $INTERFACE table $INTERFACE
ip rule del from 192.168.100.10/32 table $INTERFACE
ip rule del to 192.168.100.10/32 table $INTERFACE
ip rule add from 192.168.100.10/32 table $INTERFACE
ip rule add to 192.168.100.10/32 table $INTERFACE

但是,在知道存在网关冲突的情况下,我该如何使用多个设备?也就是说,各个调制解调器的路由如何才能独立地指向各自的网关,而不会让一个调制解调器干扰另一个调制解调器?

当尝试运行这些命令并定义其各自的 IP 时,将返回以下错误:

Error: argument "usbusb0" is wrong: "table" value is invalid
Error: argument "usbusb0" is wrong: "table" value is invalid
Error: argument "usbusb0" is wrong: "table" value is invalid
Error: argument "usbusb0" is wrong: "table" value is invalid
Error: argument "usbusb0" is wrong: invalid table ID
Error: argument "usbusb0" is wrong: invalid table ID
Error: argument "usbusb0" is wrong: invalid table ID
Error: argument "usbusb0" is wrong: invalid table ID
Error: argument "usbusb1" is wrong: "table" value is invalid
Error: argument "usbusb1" is wrong: "table" value is invalid
Error: argument "usbusb1" is wrong: "table" value is invalid
Error: argument "usbusb1" is wrong: "table" value is invalid
Error: argument "usbusb1" is wrong: invalid table ID
Error: argument "usbusb1" is wrong: invalid table ID
Error: argument "usbusb1" is wrong: invalid table ID
Error: argument "usbusb1" is wrong: invalid table ID

答案1

从这个开始:

invalid table ID

路由表 ID 是数字——它们可以是手动通过 分配名称/etc/iproute2/rt_tables,但接口名称(例如“usbusb0”)不会自动成为有效的路由表 ID。

为了使脚本正常工作,您需要用所有可能的接口的表 ID 分配填充 /etc/iproute2/rt_tables,或者您需要更改脚本以从 $INTERFACE 派生数字表 ID。(例如,删除“usbusb”前缀,然后将 2 添加到剩余的数字。)

相关内容