发现物理网口比较多的情况下,每次启动系统物理网口对应的网卡名称不固定。由于我们设备会有几十台,物理网口会配置固定IP,如果物理网口对应的名称一直变化,则无法实现配置。使用的Ubuntu版本是20.04 LTS 版本。
代码: 全选
----|-- 第一次------------|---第二次------------|---第三次------------|---第四次
eth0| 00:30:64:35:48:e6| 00:30:64:34:92:e6| 00:30:64:35:48:e6| 00:30:64:35:48:e6
eth1| 00:30:64:35:48:e7| 00:30:64:35:48:e6| 00:30:64:34:92:e6| 00:30:64:35:48:e7
eth2| 00:30:64:34:92:e6| 00:30:64:35:48:e7| 00:30:64:35:48:e7| 00:30:64:34:92:e6
eth3| 00:c0:3a:ae:61:8f| 00:c0:3a:ae:61:8f| 00:c0:3a:ae:61:8f| 00:c0:3a:ae:61:8f
eth4| 00:c0:3a:ae:63:8f| 00:30:64:34:92:e7| 00:c0:3a:ae:63:8f| 00:c0:3a:ae:63:8f
eth5| 00:c0:3a:ae:65:8f| 00:c0:3a:ae:63:8f| 00:c0:3a:ae:65:8f| 00:c0:3a:ae:65:8f
eth6| 00:30:64:34:92:e7| 00:c0:3a:ae:65:8f| 00:30:64:34:92:e7| 00:c0:3a:ae:67:8f
eth7| 00:c0:3a:ae:67:8f| 00:c0:3a:ae:67:8f| 00:c0:3a:ae:67:8f| 00:30:64:34:92:e7
二、例子
安装Ubuntu20.04LTS系统的设备有6个物理网口,第一个物理网口这次开机是enp16s0,下一次开机可能变成了enp2s0。
三、之前版本的解决方案
以前使用Ubuntu14.04LTS时,可以通过
>lspci | grep Eth
查询到的设备号,在/etc/udev/rules.d/70-persistent-net.rules中增加如下内容,可以将设备号与网卡名称进行绑定,并且每次启动物理网口对应的名称就都不会改变了。
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",KERNELS=="0000:08:00.0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
四、Ubuntu20.04LTS的尝试
但是到了Ubuntu20.04LTS之后,/etc/udev/rules.d/70-persistent-net.rules不再起作用,尝试了将网口变更为eth0. eth1...也同样会出现当次开机为eth2,下次开机为eth4的情况。
/etc/udev/rules.d/70-persistent-net.rules
用下面两种方式绑定,均无效。但是这两种方式在Ubuntu14.04均有效。
代码: 全选
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:02:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth0"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:01:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth1"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:10:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth2"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:11:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth3"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:13:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth4"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:15:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth5"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:1a:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth6"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",KERNELS=="0000:19:00.0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth7"
代码: 全选
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:30:64:35:48:e6", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:30:64:35:48:e7", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:30:64:34:92:e6", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:3a:ae:61:8f", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:3a:ae:63:8f", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth4"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:3a:ae:65:8f", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth5"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:30:64:34:92:e7", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth6"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:3a:ae:67:8f", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth7"
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 acpi_enforce_resources=lax text"
使用netplan的yaml绑定mac地址的方式不可取,因为每个机器的mac地址都不一样,要实现多个机器都能用,目前只发现了lspci中的设备号绑定能够唯一固定网口名称
请教各位大神有没有遇到过这个问题的,求教