ちょっとした質問があります。
DHCP0 サーバー (192.168.1.X) と DHCP1 サーバー (10.0.1.X) があるとします。
connman で Linux を実行しているボードがあります。ボードを DHCP0 に接続し、ボードを起動します。connman が起動し、DHCP によって eth0 インターフェースに IP アドレスを設定します: 192.168.1.2
ボードを DHCP0 から切断し、DHCP1 に接続します。
eth0 の 10.0.1.X で IP アドレスが更新されないのはなぜですか? connman なしの Ubuntu 18.04 でも同じ動作が見られます。これは正常な動作だと思います。では、"link up" 時に DHCP IP アドレスを更新するように connman を設定できますか?
IPアドレスを更新するには
$ ifconfig eth0 down
$ ifconfig eth0 up
または
$ systemctl restart connman
戻ってきてくれてありがとう
シルヴァン
答え1
ボードにスイッチがあることを忘れていました。eth1 の GMAC0 で 2 つのポートが有効になっており、eth0 の GMAC1 で 3 つのポートが有効になっています。そのため、eth1 では sw0p0 と sw0p1 の 2 つのスイッチ ポートが確認できます。ケーブルを抜くと、ip monitor link で eth1 ではなく sw0p1 がリンクダウンしていることがわかります。
それはかなり重要な省略です。
あなたの eth0ないDHCPサーバーに直接接続されています。これは内部GMAC1スイッチの「CPUポート」にすぎません。内部スイッチを経由しても、まだスイッチを通過すると、「CPU↔スイッチ」リンクが「スイッチ↔DHCPサーバー」リンクから完全に独立してアップ状態を維持するのと同じ効果があります。
したがって、リンクがダウンすることはないため、eth0 では「リンク アップ」イベントは発生しません。
内部スイッチドライバが、外部ポートから内部ポートへのリンク状態を伝播する何らかの方法をサポートしている可能性があります...または、「sw0p1」が実際のネットワークインターフェースとして表示される場合は、次のようなユーザー空間が存在します。ifplugdリンク状態を監視し、それに応じて connman を再起動するために使用できます。