Linux:防止添加两条默认路由

Linux:防止添加两条默认路由

我有一个带有 wlan0 和一些 USB 端口的“主机”Raspberry Pi。我有另一个“客户端”Pi,通过 USB 电缆连接到主机 Pi(客户端 Pi 没有其他活动的网络接口)。客户端 Pi 正在运行 g_ether,因此当它通过 USB 电缆连接到主机时,它会建立一个基于 USB 的以太网连接(在主机上创建“eth1”)。另外,当客户端设备连接时,我知道客户端设备将位于 192.168.42.1,并且主机 Pi 将获得客户端在该网络上分配的地址 (192.168.42.x)。当客户端连接时,它会向主机 Pi 的路由表添加第二条默认路由。因此主机 Pi 上的路由表最终有两条默认路由:

default via 192.168.42.1 dev eth1 proto dhcp src 192.168.42.21 metric 204
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.125 metric 303
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.125 metric 303
192.168.42.0/24 dev eth1 proto dhcp scope link src 192.168.42.21 metric 204

由于 wlan0 是我通常访问 Internet 的路由,因此第二条默认路由会中断我访问 Internet 的路由。我想要同时路由到互联网(通过 wlan0)和 192.168.42.1(通过 eth1)。例如,在客户端设备未连接的情况下,我可以 ping ntp.org(通过 wlan0)。但在连接客户端设备后,我无法 ping ntp.org(大概是因为它正在尝试通过我的客户端设备创建的新添加的第二个默认路由,该路由没有到 Internet 的路由)。

我发现删除第二个默认路由可以解决问题(我可以 ping ntp.org,并且仍然可以 ping 192.168.42.1)。

如何防止首先添加第二个默认路由?或者还有其他解决方案吗?

答案1

添加nogatewayfor 来eth1解决/etc/dhcpcd.conf我的问题:

interface eth1
nogateway

dhcpcd.conf 手册页的支持(以及 ChatGPT 的 +1 为我指明了总体方向): https://manpages.debian.org/testing/dhcpcd5/dhcpcd.conf.5.en.html

相关内容