如何防止在重新启动期间添加不需要的默认网关

如何防止在重新启动期间添加不需要的默认网关

我正在使用 Beaglebone Black 在 Debian 系统上运行网络服务器。 BBB 在本地网络 (192.168.5.xyz) 中作为 DHCP + DNS(使用 dnsmasq)工作,无法直接访问互联网。我可以轻松连接从 BBB 检索 IP 的设备。到目前为止,一切都很好。

例如,如果我在家,我想向这个小网络添加互联网访问。因此,我将该网络连接到提供互联网访问并在该网络内具有静态 IP 地址 (192.168.5.254) 的路由器。所以我将路由器的IP添加到/etc/network/interfaces文件中:

/etc/网络/接口:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
#iface eth0 inet dhcp

allow-hotplug eth0
iface eth0 inet static
address 192.168.5.1
netmask 255.255.255.0
gateway 192.168.5.254

但由于某种原因,每当我重新启动 BBB 时,就会添加一个额外的默认路由条目。当我手动删除/刷新 GW 0.0.0.0 的默认条目时,一切正常。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         0.0.0.0         0.0.0.0         U     0      0        0 eth0
default         192.168.5.254   0.0.0.0         UG    0      0        0 eth0
link-local      0.0.0.0         255.255.0.0     U     0      0        0 eth0
192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

似乎在启动过程中添加了不需要的默认网关: 日志ctl -b


Nov 06 11:29:40 webserver connmand[1827]: eth0 {add} address 192.168.5.1/24 label eth0 family 2
Nov 06 11:29:40 webserver avahi-daemon[1792]: Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.5.1.
Nov 06 11:29:40 webserver connmand[1827]: eth0 {add} route 192.168.5.0 gw 0.0.0.0 scope 253 <LINK>
Nov 06 11:29:40 webserver avahi-daemon[1792]: New relevant interface eth0.IPv4 for mDNS.
Nov 06 11:29:40 webserver avahi-daemon[1792]: Registering new address record for 192.168.5.1 on eth0.IPv4.
Nov 06 11:29:40 webserver connmand[1827]: eth0 {add} route 0.0.0.0 gw 192.168.5.254 scope 0 <UNIVERSE>

我还可以在 /etc/network/interfaces 中创建“想要的”路由。这些也是由 Connman Deamon 制作的。但是/etc/connman/main.conf显然不是导致网关 0.0.0.0 的默认路由的文件:

[General]
PreferredTechnologies=ethernet,wifi
SingleConnectedTechnology=false
AllowHostnameUpdates=false
PersistentTetheringMode=true
NetworkInterfaceBlacklist=SoftAp0,usb0,usb1

您是否有任何提示如何找出添加额外路由的位置以及如何防止它?我已经浏览了几个在启动过程中调用的脚本,但找不到它......或者我设置 eth0 的方式完全错误?

答案1

您会看到路由是由 connmand(ConnMan 守护进程)添加的。它与正常的接口设置无关,而是一个单独的配置。如果您无法完全禁用它(不知道您的 BBB 是否需要它,到底是什么)您必须查看其配置。如果您发布该配置并告诉哪个工作需要 connman,有人可以进一步帮助您。


这种情况下的解决方案只是通过更改/etc/connman/main.confto的最后一行来禁用 connman 处理 eth0 NetworkInterfaceBlacklist=eth0,SoftAp0,usb0,usb1
这将路线的输出更改为:

Kernel IP routing table
Destination    Gateway        Genmask        Flags  Metric Ref  Use  Iface
default        192.168.5.254  0.0.0.0        UG     0      0    0    eth0
192.168.5.0    0.0.0.0        255.255.255.0  U      0      0    0    eth0

这样,一切似乎都运行良好。

相关内容