
次のように報告するネットワーク インターフェイスがありますip link show
。
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:43:e6:b1:e7 brd ff:ff:ff:ff:ff:ff
しかし/sys/class/net/docker0/flags
、こう言います。
$ cat /sys/class/net/docker0/flags
0x1003
設定されている 3 つのビットはIFF_MULTICAST
、、IFF_BROADCAST
およびですIFF_UP
。これは UP 状態のインターフェースのように見えます。なぜ がip link
報告されるのでしょうかstate DOWN
?
システムは Linux 4.15 / Ubuntu 18.04 です。
答え1
設定されている3つのビットは、IFF_MULTICAST、IFF_BROADCAST、IFF_UPです。これはUPしているインターフェースのように見えます。
そしてそれは実際の旗出力:
3: docker0: <キャリアなし、ブロードキャスト、マルチキャスト、アップ> ↑ ↑ ↑
IP リンク レポートの状態が DOWN になるのはなぜですか?
それは別の種類の状態です。
フラグIFF_UP(上記では「<UP>」と表示)は、行政上の状態は、 を介して設定できる手動ノブです
ip link set eth0 up
。一方、「状態[…]」のテキストは、運用上の状態はインターフェースが有能働くこと。
動作状態は、おおよそ「キャリア」の存在と同じです。たとえば、イーサネットリンクが完全に確立されているか、Wi-Fiアクセスポイントが関連付けられているかなどです。ブリッジが稼働中(キャリアがある)と報告されるのは、少なくとも一つのdummy0
メンバー ポートのすべてが稼働しています。そのため、インターフェイスをブリッジ メンバーとして追加する必要がある場合があります。
動作状態は、フラグIFF_LOWER_UP
(フラグ領域に「<LOWER_UP>」として表示)とIFF_RUNNING
(その不在は、例では疑似フラグ「<NO-CARRIER>」として表示されます)にほぼ対応します。ソースコード)
しかし、iprouteツールはNetlink経由でインターフェース情報を取得し、state …
セクションはIFLA_オペレーション状態netlink 属性。(ソースコード)
この属性はsysfs経由で…/operstate
も利用可能です。Linuxのドキュメントには、これらのフラグと属性に関するより詳しい説明があります。オペレーションステート.txt。