我有一个小问题。
假设我有 DHCP0 服务器(192.168.1.X)和 DHCP1 服务器(10.0.1.X)。
我有一块运行 Linux 的主板,上面有 connman。将主板连接到 DHCP0,启动主板。Connman 启动并通过 DHCP 将 IP 地址设置为 eth0 接口:192.168.1.2
断开主板与 DHCP0 的连接并将其连接到 DHCP1。
为什么 10.0.1.X 中的 eth0 上的 IP 地址没有更新?我发现我的 Ubuntu 18.04 在没有 connman 的情况下也出现了同样的情况。我想这是正常现象。那么,我可以配置 connman 在“链接”时更新 DHCP IP 地址吗?
要更新 IP 地址,我需要
$ ifconfig eth0 down
$ ifconfig eth0 up
或者
$ systemctl restart connman
谢谢你的回归
西尔万
答案1
忘了说了,我们的主板上有一个交换机。GMAC0 上为 eth1 启用了 2 个端口,GMAC1 上为 eth0 启用了 3 个端口。因此,对于 eth1,我们可以看到两个交换机端口 sw0p0 和 sw0p1。当我拔下电缆时,使用 ip monitor link 我看到 sw0p1 链接断开,而不是 eth1
这是一个非常重要的遗漏。
你的 eth0不是直接连接到 DHCP 服务器——它只是内部 GMAC1 交换机上的一个“CPU 端口”。即使它通过内部交换机,它仍然通过交换机 - 其效果是“CPU↔交换机”链接完全独立于“交换机↔DHCP服务器”链接。
因此,eth0 上没有“链接启动”事件,因为链接从未断开!
内部交换机驱动程序可能支持某种方法将链路状态从一个外部端口传播到内部端口……或者,如果“sw0p1”显示为真实的网络接口,则用户空间如插件可用于监视其链接状态并相应地重新启动 connman。