我正在创建虚拟接口来设置动态路由,一切运行正常。但我发现了一个无法解释的奇怪细节:出于某种原因,当使用名称创建虚拟接口时dummy0
,我收到一条错误消息,即使该接口已正确创建并正常工作,而使用其他名称时,不会显示任何错误消息:
root@sdsdd:~# ip link
[lo and eth0 not shown]
root@sdsdd:~# ip link add dummy0 type dummy
RTNETLINK answers: File exists
root@sdsdd:~# ip link add dummy1 type dummy
root@sdsdd:~# ip link
[lo and eth0 not shown]
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ether c6:9c:73:8b:17:77 brd ff:ff:ff:ff:ff:ff
4: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ether be:50:5b:53:99:ab brd ff:ff:ff:ff:ff:ff
怎么回事?这个名字有什么dummy0
特别之处?我在任何地方都找不到关于它的任何提及/etc/network/interfaces*
。我在 Debian 8 和 Ubuntu 16.04 上尝试过,结果相同。
答案1
其实很简单。运行 时ip link add dummy1 type dummy
,ip
会自动加载dummy
内核模块(早期版本没有这样做)。该模块有一个参数numdummies
,用于配置自动创建多少个虚拟设备以及默认为 1。
因此,加载模块已经在不知情的情况下创建了dummy0
网络接口ip
。ip
然后尝试创建另一个具有相同名称的接口,该接口失败并显示错误消息File exists
。