我正在使用 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.conf
to的最后一行来禁用 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
这样,一切似乎都运行良好。