我想了解一下网络接口up是什么意思?因为ip addr
或ifconfig
命令将接口显示为已启动,即使没有与其关联的 IP。
例如在 RHEL7 上:
[root@IDCDVAM887 ~]# ifconfig ens256
ens256: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:50:56:9e:19:5b txqueuelen 1000 (Ethernet)
RX packets 229406 bytes 59265584 (56.5 MiB)
RX errors 0 dropped 229454 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(或者)
[root@IDCDVAM887 ~]# ip addr show ens256
5: ens256: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:50:56:9e:19:5b brd ff:ff:ff:ff:ff:ff
当接口根本没有 IP 时显示为 UP 的真正用途是什么?我相信如果没有IP,就无法进行通信吗?那么它有什么用呢?
答案1
是LOWER_UP
的状态以太网链路(或其他链路层协议)。它的定义为Driver signals L1 up
,这基本上意味着电缆已安装并且可以看到电缆另一端的另一个设备。
表示UP
已经启用了。这可以由您(或脚本)使用ip link set <device> up
ofifconfig <device> up
命令来控制。
还有其他协议,例如IPX使用以太网,但不会有 IP 地址,因为它们不是互联网协议栈的一部分。因此,链接有UP
IP 地址但没有 IP 地址是完全可以接受的。
答案2
状态UP
是行政的接口的状态,即接口是否已启用。您可以使用例如启用任何接口
ip l s eth0 up
如果插入电缆并建立链接,该接口也会获得操作的状态RUNNING
。
如果管理状态不是UP
,许多卡将禁止传出载波生成,并且不是的接口UP
也不能RUNNING
,所以如果我设置
ip l s eth0 down
我希望我的本地接口同时丢失UP
和RUNNING
,并且远程端的相应接口也将不再存在RUNNING
(但仍然如此UP
,所以如果我再次启用我的端,我会得到一个链接)。
但这只是以太网链路。在链路之上,可以绑定各种协议,其中之一就是 IPv4。默认情况下,IPv4 绑定到所有支持该协议族的接口。
绑定协议后,我可以发送和接收具有分配给接口的任何地址的数据包。如果没有分配地址,这仅仅意味着没有可用于传出数据包的有效地址(因此发送数据包失败),也没有任何传入数据包可以寻址到系统将其识别为本地的单播地址(因此只能接收广播/组播数据包)。
这与链路层没有丝毫关系,因为它只会建立一条链路。
某些程序(例如 DHCP 客户端)具有特殊权限,可以发送任意格式的数据包(填写幻想源地址 或 )0.0.0.0
,并接收到达的数据包,无论它们是否发往本地计算机。这在自动 IP 地址配置期间使用,其中使用源地址 发送 DHCP 请求0.0.0.0
,并且服务器的回复将发送到广播地址255.255.255.255
。
因此,即使没有绑定到接口的地址,也存在交换 IP 数据包的有效用例。
除了IPv4之外,还有IPv6、IPX、AppleTalk等,它们都可以共享相同的物理层。一旦建立了链接,任何更高级别的协议都可以使用自己的激活序列进入操作状态。
答案3
即使没有任何地址或电缆,接口也可以“启动”。 “up”状态是指设备是否被操作系统启用。
RUNNING 或 LOWER_UP 指的是数据链路层(也称为第 2 层),这意味着您可以发送和接收以太网数据包。 IP是建立在其之上的东西。
接口已启动但没有 IP(且不应为其分配 IP)的配置示例是该接口是桥接从属接口。
答案4
神奇的是,如果您指定-4
选项 或-oneline
,那么它会真正显示您想象的“运行”界面。
为了更容易阅读,我使用了-brief
选项,但结论并不重要。
查看选项的结果up
,它仍然显示一个DOWN
设备。
ubuntu@ubuntu:~$ ip -brief address show up
lo UNKNOWN 127.0.0.1/8 ::1/128
eno1 DOWN
enp130s0f0 UP 100.79.223.150/26 fe80::a9e:1ff:fed9:2864/64
查看选项的结果-4
,全部有地址,没有DOWN
设备。
ubuntu@ubuntu:~$ ip -4 -brief address show
lo UNKNOWN 127.0.0.1/8
enp130s0f0 UP 100.79.223.150/26
查看选项的结果-online
,全部带有地址,没有DOWN
设备,但将地址分为 IPv4 和 IPv6。
ubuntu@ubuntu:~$ ip -oneline address show
1: lo inet 127.0.0.1/8 scope host lo\ valid_lft forever preferred_lft forever
1: lo inet6 ::1/128 scope host \ valid_lft forever preferred_lft forever
4: enp130s0f0 inet 100.79.223.150/26 brd 100.79.223.191 scope global enp130s0f0\ valid_lft forever preferred_lft forever
4: enp130s0f0 inet6 fe80::a9e:1ff:fed9:2864/64 scope link \ valid_lft forever preferred_lft forever