我创build虚拟接口来设置dynamic路由,这一切工作正常。 但是我发现了一个我不能解释的奇怪细节:出于某种原因,当创build一个名为dummy0的虚拟接口时,即使接口已经正确创build并且工作正常,我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上试了这个结果。
其实很简单。 当运行ip link add dummy1 type dummy , ip会自动加载dummy内核模块(在早期版本中没有这样做)。 该模块有一个参数numdummies ,用于configuration自动创build的虚拟设备数量,默认值为1 。
因此,加载模块已经创build了一个dummy0networking接口,而不知道ip 。 然后ip尝试创build具有相同名称的另一个接口,该接口失败并显示错误消息File exists 。