我有一个网络接口,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 report 状态为 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。