
我有一個網路接口,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
設定的三位是IFF_MULTICAST
、IFF_BROADCAST
和IFF_UP
。這看起來像是一個 UP 的介面。為什麼要ip link
檢舉state DOWN
?
系統是Linux 4.15 / Ubuntu 18.04。
答案1
設定的三個位元是 IFF_MULTICAST、IFF_BROADCAST 和 IFF_UP。這看起來像是一個 UP 的介面
這與實際情況完全吻合旗幟輸出:
3:docker0:<無載體,廣播、組播、上行> ↑ ↑ ↑
為什麼 ip link 報告狀態為 DOWN?
那是一種不同的狀態。
標誌 IFF_UP(上面顯示為“<UP>”)描述行政的狀態,這是可以透過 進行設定的手動旋鈕
ip link set eth0 up
。另一方面,「狀態[…]」文字描述了操作state,表示介面是否處於狀態有能力的工作的。
操作狀態與「運營商」存在大致相同 - 例如,乙太網路連結完全建立,或關聯到 Wi-Fi 存取點。如果滿足以下條件,則報告網橋已啟動(有載體):最後一個其成員連接埠已啟動。因此,您可能需要新增一個dummy0
介面作為橋接成員。
操作狀態大致對應於標誌IFF_LOWER_UP
(在標誌區域中顯示為“<LOWER_UP>”)和IFF_RUNNING
(其缺失在範例中顯示為偽標誌“<NO-CARRIER>”)。 (原始碼)
而iproute工具透過Netlink取得介面訊息,並state …
根據該資訊列印該部分國際圖聯_操作狀態網路連結屬性。 (原始碼)
該屬性…/operstate
也可以透過 sysfs at 取得。 Linux 文件對這些標誌和屬性有更詳細的解釋操作狀態.txt。