我在配置 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
从这个开始:
路由表 ID 是数字 - 它们可以通过手动分配名称
/etc/iproute2/rt_tables
,但接口名称(如“usbusb0”)不会自动成为有效的路由表 ID。为了使您的脚本正常工作,您需要使用所有可能接口的表 ID 分配填充 /etc/iproute2/rt_tables,或者您需要更改脚本以从 $INTERFACE 派生数字表 ID。(例如,去掉 'usbusb' 前缀,然后将剩余的数字加 2。)