网卡命名为eth4
① linux怎样修改网卡的名字为eth0
linux可通过以下步骤修改网卡名称:
1、修改/etc/udev/rules.d/70-persistent-net.rules,将eth0 改为em1,将eth1 改为em2,注意:只需要修改name即可,不需要修改kernel;
2、重命名网卡配置文件,需要ifcfg-eth0文件重命名为ifcfg-em1,需要ifcfg-eth1文件重命名为ifcfg-em2,
mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-em1
mv /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-em2
3、编辑网卡配置文件,将名称修改过来,并把uuid删除(如没有就不用),重启服务器,重启之后网卡名称已经修改过来,网络正常。
② centos 7.1无线网卡怎么设置
centos 7.1无线网卡可以通过以下方式设置:
1、将无线网卡插入电脑,网卡以eno1677736命名;
6、重启服务器后,即可连接网络上网。
③ linux系统修改接口名为eth0以及配置IP地址
将默认网卡名称ens192更改为eth0,操作步骤如下:
1. 使用vi编辑器打开并修改网卡配置文件,将NAME和DEVICE参数改为eth0。
2. 通过编辑/etc/sysconfig/grub文件禁用自动命名网卡功能,加入"net.ifnames=0 biosdevname=0"。
3. 执行grub2-mkconfig命令生成更新配置参数。
4. 重启系统进行验证。
5. 启动NetworkManager服务并设置为开机自启动,确保网络服务在系统启动时自动运行。
6. 重启网络服务,使用nmcli命令查看活动网络连接和设备状态。
7. 使用nmcli命令检查并修改eth0网卡的IP地址配置。
8. 编辑网卡配置文件,手动设置IP地址,确保自动连接功能开启。
通过以上步骤,成功将接口名修改为eth0并配置了IP地址,实现Linux系统的网络接口管理。
④ redhat 万兆和千兆的网卡命名问题
新弄了一批机器,为了准备切换到万兆环境,给机器配了双千兆和双万兆混合的4接口网卡,然后就出了一点问题
centos 7 引入了网络一致化命名规则,具体可以看红帽的联网指南
主要部分摘抄如下
------------引用专用分割线----------------------------
8.1. 命名方案层级结构
默认情况下,systemd 会使用以下策略,采用支持的命名方案为接口命名:
方案 1: 如果固件或 BIOS 信息适用且可用,则使用整合了为板载设备提供索引号的固件或 BIOS 的名称(例如:eno1),否则请使用方案 2。
方案 2: 如果固件或 BIOS 信息适用且可用,则使用整合了为 PCI 快速热插拔插槽提供索引号的固件或 BIOS 名称(例如 ens1),否则请使用方案 3。
方案 3: 如果硬件连接器物理位置信息可用,则使用整合了该信息的名称(例如:enp2s0),否则请使用方案 5。
方案 4: 默认不使用整合接口 MAC 地址的名称(例如:enx78e7d1ea46da),但用户可选择使用此方案。
方案 5: 传统的不可预测的内核命名方案,在其他方法均失败后使用(例如: eth0)。
这个策略(如上所述)是默认策略。如果该系统已启用 biosdevname ,则会使用该方案。注:启用 biosdevname 需要添加 biosdevname=1 作为命令行参数(Dell 系统除外),此时只要安装 biosdevname ,就会默认使用该方案。如果用户已添加 udev 规则,该规则会更高内核设备名称,则会优先使用这些规则。
设备命名过程如下:
/usr/lib/udev/rules.d/60-net.rules 文件中的规则会让 udev 帮助工具 /lib/udev/rename_device 查看所有 /etc/sysconfig/network-scripts/ifcfg- suffix 文件。如果发现包含 HWADDR 条目的 ifcfg 文件与某个接口的 MAC 地址匹配,它会将该接口重命名为 ifcfg 文件中由 DEVICE 指令给出的名称。
/usr/lib/udev/rules.d/71-biosdevname.rules 中的规则让 biosdevname 根据其命名策略重命名该接口,即在上一步中没有重命名该接口、已安装 biosdevname 、且在 boot 命令行中将 biosdevname=0 作为内核命令给出。
/lib/udev/rules.d/75-net-description.rules 中的规则让 udev 通过检查网络接口设备,填写内部 udev 设备属性值 ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。注:有些设备属性可能处于未定义状态。
/usr/lib/udev/rules.d/80-net-name-slot.rules 中的规则让 udev 重命名该接口,优先顺序如下:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。并提供如下信息:没有在步骤 1 或 2 中重命名该接口,同时未给出内核参数 net.ifnames=0。如果一个参数未设定,则会按列表的顺序设定下一个。如果没有设定任何参数,则不会重命名该接口。
-----------以上是红帽的联网指南-------
其实简述上面的信息就是首先看内核参数是否启用了biosdevname=1 (默认是启用),如果bios提供了设备的名称就使用bios提供的名称
如果没有,就根据网卡配置中 device=eth,em,xyz 的名字来命名这个网卡,但是如果这样命名的话,必须在配置里写死网卡的mac地址
作为网卡的识别标志,对单网卡当然没什么问题,但是如果在集群环境里,HA,以及bonding环境里,为了快速切换网络流量,往往要屏蔽mac,
使用虚拟mac,或者多块网卡使用一个mac地址,这个时候需要在配置文件里屏蔽mac地址,因此就需要区改udev的配置文件来解决
我所遇到的问题是,使用了biosdevname=0和 net.ifnames=0 参数后,(因为以前有大量的centos6的机器,为了移植方便,不使用一致性命名规则,网卡名依然是eth0,eth1.。。。)安装服务器时一切正常,但启动系统后,发现系统将插在第一个端口的网卡认为是eth2,和预期不符,本能的认为udev可以解决问题,于是添加了udev的规则
```
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xa", ATTR{type}=="1", KERNEL=="*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xb", ATTR{type}=="1", KERNEL=="*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xc", ATTR{type}=="1", KERNEL=="*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xd", ATTR{type}=="1", KERNEL=="*", NAME="eth3"
```
发现不起作用,,难道写错了?换个规则,用pci设备号去绑定
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", SUBSYSTEM=="pci", KERNELS===="0000:01:00.0", NAME="eth0"
依然没用
用下面的命令debug一下
udevadm test /sys/class/net/eth0
结果缩略如下
rules contain 49152 bytes tokens (4096 * 12 bytes), 13451 bytes strings
2076 strings (25677 bytes), 1399 de-plicated (12904 bytes), 678 trie nodes used
NAME 'eth2' /etc/udev/rules.d/60-net.rules:6
IMPORT builtin 'net_id' /usr/lib/udev/rules.d/75-net-description.rules:6
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/75-net-description.rules:12
IMPORT builtin 'path_id' /usr/lib/udev/rules.d/80-net-setup-link.rules:5
IMPORT builtin 'net_setup_link' /usr/lib/udev/rules.d/80-net-setup-link.rules:9
No matching link configuration found.
RUN '/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name' /usr/lib/udev/rules.d/99-systemd.rules:55
Error changing net interface name 'eth0' to 'eth2': File exists
could not rename interface '2' from 'eth0' to 'eth2': File exists
created db file '/run/udev/data/n2' for '/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0'
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0
ID_BUS=pci
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X540/I350 rNDC)
粗体看到原来是设备已经存在,无法重命名,于是想到的重新加载驱动
modprobe -rv igb
modprobe -rv ixgbe
然后按顺序加载驱动
modprobe ixgbe
modprobe igb
终于可以看到效果了,不过重启就完蛋了
于是想是否可以调整驱动加载顺序?
找了半天文档,发现可以通过重新打包内核启动文件和编译内核两条路实现,不过这显然又增加了很多麻烦,总不能升级一次内核,就重新打一次包吧
看看其他方法。最好发现简单的方法就是修改启动内核的参数 将 biosdevname=0和net.ifnames=0 改为 biosdevname=0和net.ifnames=1 ,这样系统启动时,会按照上述一致性命名规则,重新命名网卡,可以预期的是,已dell板载网卡为例,网卡会依次命名为eno1,eno4,等等,然后再加载udev规则,按照udev规则,再次重新命名为我们期望的eth0,eth1,等等
当然配置文件可以用ansible搞定,我这里的模版内容就是
ifcfg-eth0.j2
------
NAME="eth0"
DEVICE="eth0"
ONBOOT=yes
HWADDR="{{ hostvars[inventory_hostname].ansible_eth1.macaddress }}"
NETBOOT=yes
IPV6INIT=no
BOOTPROTO=static
TYPE=Ethernet
----------
这样udev 规则就生效了,其实就是启动过程中,当上述两个参数全为0时,网络设备只能叫ethx,先加载的驱动抢占了eth0和eth1时,(我这里是千兆的设备驱动 igb先启动)后起的设备想按udev规则rname时,发现eth0,和eth1 已经被占据了,因此命名失败,所以深入理解启动顺序和动作其实还是蛮重要的
参考链接 https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_device_renaming_procere
红帽知识库文章引用如下
⑤ 求助centos7网卡问题
解决CentOS7网卡端口出现紊乱的问题
最近项目上,遇到一个问题,让我们很是没办法,就是Dell R920 安装上CentOS7的系统,做完Bonding后,发现端口重启系统后会紊乱,过程如下:
端口紊乱情况
服务器上一共配置了两张万兆两口的网卡和一张千兆四口的网卡,其中不同万兆卡上,两端口做Bonding,同时千兆卡上也挑了间隔的两口做Bonding,大概如下情况:、
eth0,eth1,eth2,eth3千兆端口,eth4,eth5,eth6,eth7是万兆端口,这时经常紊乱是eth3,eth4的端口,两端口变更,使得做了bonding的端口无法生效
CentOS7的端口命名规则
原来CentOS6之前的网卡端口命名都是eth的,CentOS7之后千兆网口已经变更成随机的em0...emN或是ens01(N=整数),万兆网口则变成p1p2等形式,要修改为eth的模式步骤如下:
a.编辑文件
vi /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 net.ifnames=0 biosdevname=0 rd.lvm.lv=centos/root crashkernel=auto vconsole.keymap=us rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
“以上标红色的值是修改为eth的基础”
b.执行命令生效
grub2-mkconfig -o /boot/grub2/grub.cfg
c.增加规划文件
vi /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="78:2b:cb:xx:xx:01", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="78:2b:cb:xx:xx:02", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="78:2b:cb:xx:xx:03", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="78:2b:cb:xx:xx:04", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:21:xx:xx:a1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth4"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:21:xx:xx:a0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth5"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:60:6e:xx:xx:f6", ATTR{type}=="1", KERNEL=="eth*", NAME="eth6"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:60:6e:xx:xx:f7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth7"
“以上MAC地址与网卡端口对应”
总结:以上方法并不能解决网口紊乱问题,因为官方文档都要求bond的网卡都不需要写MAC地址,所以最后我们尝试使在每个/etc/sysconfig/network-scripts/ifcfg-eth*网卡配置文件上写上HWADDR,重启有7-8遍,做ethtool检查几次,发现在没有问题,所以建议遇到同样问题同学,可以尝试一下这种方法
⑥ centos网卡命名规则以及更名方法
Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等,而 CentOS7 提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、wlan0 更难读,比如 ens33 。
规则1:
对于板载设备命名合并固件或 BIOS 提供的索引号,如果来自固件或 BIOS 的信息可读就命名,比如eno1,这种命名是比较常见的,否则使用规则2。
规则2:
命名合并固件或 BIOS 提供的 PCI-E 热插拔口索引号,比如 ens1,如果信息可读就使用,否则使用规则3。
规则3:
命名合并硬件接口的物理位置,比如 enp2s0,可用就命名,失败直接到方案5。
规则4:
命名合并接口的 MAC 地址,比如 enx78e7d1ea46da,默认不使用,除非用户选择使用此方案。
规则5:
使用传统的方案,如果所有的方案都失败,使用类似 eth0 这样的样式。
1、前2个字符的含义
2、第3个字符根据设备类型选择
如果不习惯使用新的命名规则,可以恢复使用传统的方式命名,编辑 grub 文件,增加两个变量,再使用 grub2-mkconfig 重新生成 grub 配置文件即可。
1、编辑 grub 配置文件
2、重新生成 grub 配置文件
然后重新启动 Linux 操作系统,通过 ip addr 可以看到网卡名称已经变为 eth0 。
3、修改网卡配置文件
原来网卡配置文件名称为 ifcfg-ens33,这里需要修改为 ethx 的格式,并适当调整网卡配置文件。
注意:ifcfg-ens33 文件最好删除掉,否则重启 network 服务时候会报错。