目录
ens35f0?这个名称是基于 Linux 的网络接口命名规则生成的。
在较新的 Linux 发行版中,网络接口的命名规则由?systemd?和?udev?进行管理。以下是?ens35f0?名称的大致解释:
这个命名规则的目的是提供对网络接口的唯一标识,并且可以基于设备硬件、插槽位置等信息进行实现。命名约定可能因不同的 Linux 发行版和系统配置而有所不同。
请注意,这只是一种命名规则示例,实际的命名规则可能因发行版、硬件和配置而有所不同。要了解特定系统上的接口命名规则,可以查看?/etc/udev/rules.d/?目录中的相应规则文件,或者使用命令?udevadm info -a -p /sys/class/net/ens35f0?获取更多信息。
修改? /etc/udev/rules.d/70-persistent-net.rules? 文件(如果没有就创建),添加规则:
1,备份
sudo cp /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.backup
2,修改
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”,ATTR{address}==”XX:XX:XX:XX:XX:XX”, ATTR{dev_id}==”0x0″,ATTR{type}==”1″,NAME=”eth0″的ATTR{dev_id}==”0x0″
例如:
vim?/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net",ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:d4:ab:67",ATTR{type}=="1", KERNEL=="eth*", NAME="ens1f0"
SUBSYSTEM=="net",ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:af:2b:37",ATTR{type}=="1", KERNEL=="eth*", NAME="ens1f1"
3,修改完成之后,重启udev服务或者重启计算机
sudo systemctl restart udev
或者(未验证)
然后重启一下网卡和udev:
--ifdown 网卡:
ifdown eth0
ifdown eth1
--重启udev
/etc/init.d/udev-post stop;
/etc/init.d/udev-post start
或者使用:
service udev-post stop
service udev-post start
规则说明:
SUBSYSTEM=="net"
:指定该规则只对网络子系统(net)生效。ACTION=="add"
:指定该规则在网络接口添加至系统时生效(比如在启动时或插入一个USB网卡时)。DRIVERS=="?*"
:适配任何驱动程序。这里的??*
?是一个通配符,表示匹配一个或多个字符的任何驱动。ATTR{address}=="XX:XX:XX:XX:XX:XX"
:指定该规则仅适用于MAC地址为?XX:XX:XX:XX:XX:XX
?的设备。你需要用实际的MAC地址来替换这里的?XX:XX:XX:XX:XX:XX
。ATTR{dev_id}=="0x0"
:这是过滤条件之一,要求设备的ID必须是?0x0
。这个属性在某些情况下用于区分不同类型的网络设备。ATTR{type}=="1"
:这个条件指设备类型得是?1
,对于网络设备,?1
?通常意味着是以太网设备。NAME="eth0"
:将匹配的设备命名为?eth0
。这意味着满足上述所有条件的设备将被赋予设备名称?eth0
。- 70-persistent-net.rules 前面70的含义,数字高的规则覆盖数字低 的规则,例如你再写一个75-persistent-net.rules规则,则75的规则覆盖70的规则。
综上所述,这条规则的效果是:如果系统检测到添加了一个新的网络设备,这个设备使用任何驱动、具有特定的MAC地址、
dev_id
?为?0x0
、设备类型为?1
,那么udev会自动将这个设备的网络接口命名为?eth0
。这样做的目的是为了保证设备名称的持久性,以便在系统重启或网络接口断开再连接后设备名称不会变化。备注:现代的Linux发行版可能不再使用?
/etc/udev/rules.d/70-persistent-net.rules
?文件来持久化网络设备名称,而是使用?systemd
?的?link
?文件或其他命名策略。
sudo ip link set dev eth1 down?
sudo ip link set dev eth1 name eth2
sudo ip link set dev eth2 up
或者
ifconfig eth1 down
ifconfig eth1 name eth2
ifconfig eth2 up
禁用Predictable Network Interface Names
新一代的Linux系统通常使用Predictable Network Interface Names(可预测的网络接口名称)策略,如果你更喜欢传统的如eth0、eth1这样的命名方式,可以禁用这一功能:
在启动时给内核添加参数net.ifnames=0
。
如果你使用的是GRUB作为引导器,在/etc/default/grub
文件中找到GRUB_CMDLINE_LINUX
变量并将net.ifnames=0
添加到这一行中去。
GRUB_CMDLINE_LINUX="... net.ifnames=0 biosdevname=0"
修改文件后,更新GRUB配置:
sudo update-grub
重新启动计算机。
请在编辑任何网络配置或udev规则之前备份原有的文件,这样如果操作出现错误或系统无法正常启动,你可以恢复到原始状态。而且,修改网络配置可能会临时中断远程连接,因此如果你是通过远程连接访问系统,请在现场或配置了备用访问方式的情况下执行这类修改。