我有一個小問題。
考慮我有 DHCP0 伺服器 (192.168.1.X) 和 DHCP1 伺服器 (10.0.1.X)。
我有一個使用 connman 運行 Linux 的板子。將我的開發板連接到 DHCP0,啟動我的開發板。 Connman 啟動並透過 DHCP 將 IP 位址設定為 eth0 介面:192.168.1.2
斷開板與 DHCP0 的連接並將其連接到 DHCP1。
為什麼 eth0 上的 10.0.1.X 中的 IP 位址沒有更新?看到我在沒有 connman 的 Ubuntu 18.04 上有相同的行為。我認為這是正常行為。那麼,我可以設定 connman 在「連結」時更新 DHCP IP 位址嗎?
要更新 IP 位址,我需要
$ ifconfig eth0 down
$ ifconfig eth0 up
或者
$ systemctl restart connman
感謝您的歸來
西爾萬
答案1
忘了說我們的主機板上有一個開關。 GMAC0 上為 eth1 啟用了 2 個端口,GMAC1 上為 eth0 啟用了 3 個端口。因此對於 eth1,我們可以看到兩個交換器連接埠 sw0p0 和 sw0p1。當我拔掉電纜時,透過 ip 監視器鏈接,我看到它是向下鏈接的 sw0p1,而不是 eth1
這是一個非常重要的遺漏。
你的eth0不是直接連接到 DHCP 伺服器 – 它只是內部 GMAC1 交換器上的一個「CPU 連接埠」。即使它通過內部開關,它仍然透過交換器 - 它具有相同的效果,即“CPU↔switch”鏈路完全獨立於“switch↔DHCPserver”鏈路保持運行狀態。
因此 eth0 上沒有「連結」事件,因為連結永遠不會斷開!
內部交換器驅動程式可能支援某種方法將鏈路狀態從一個外部連接埠傳播到內部連接埠...或者,如果「sw0p1」顯示為真實的網路接口,則使用者空間如如果插件可用於監視其連結狀態並相應地重新啟動 connman。