网口名称变更史
1. 传统的 eth0 时代
在早期的 Linux 内核中,网卡被简单地命名为 eth0、eth1 等。其分配逻辑是基于内核探测驱动的先后顺序。
优点:名称简洁,易于编写脚本。
致命伤:在拥有多块网卡的服务器(如高性能计算或集群环境)中,一旦主板硬件扫描顺序发生微小偏移,原来的
eth0可能在重启后变成eth1。这意味着绑定在eth0上的防火墙规则和网络服务将瞬间失效,甚至导致服务器断网失联。
2. 现代的“可预测”命名 (Predictable Network Interface Names)
为了解决上述可靠性问题,从 systemd v197 开始,主流发行版(Ubuntu 16.04+、CentOS 7+ 等)引入了基于硬件物理位置的命名规则:
eno1:主板集成的网卡(Onboard)。enp3s0:位于第 3 号总线、第 0 号插槽的 PCI 网卡。好处:无论系统如何升级,只要网卡插在那个物理位置,它的名字就永远不会变。
回归传统:如何将网卡名修改回 eth0
尽管物理命名更安全,但在许多自动化运维场景或云环境下,开发者仍倾向于使用统一的 eth0。以下是以 Ubuntu 系统为例的修改全过程。
第一阶段:修改内核启动参数
系统默认开启了物理命名策略,我们需要通过内核参数将其禁用。
1. 编辑 GRUB
使用 root 权限打开 /etc/default/grub。
sudo nano /etc/default/grub
2. 定位参数行
找到 GRUB_CMDLINE_LINUX,将其修改为:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
net.ifnames=0:禁用 systemd 的硬件位置命名规则。biosdevname=0:禁用某些硬件厂商提供的命名建议。
保存并退出(Nano 编辑器按 Ctrl+O 确认,Ctrl+X 退出)。
3. 刷新配置
执行 sudo update-grub,让内核在下次启动时知道这个决定。
sudo update-grub
第二阶段:同步更新网络配置 (Netplan)
这是最关键的一步。如果内核改了名字,但你的网络配置文件里还写着旧名字,重启后你将无法通过网络连接到服务器。
1. 查看当前的 Netplan 配置文件(文件名可能不同):
ls /etc/netplan/
2. 检查配置
打开 /etc/netplan/ 目录下的 .yaml 文件。
sudo nano /etc/netplan/01-netcfg.yaml
3. 重命名接口
将 enp4s0(或其他旧名)全部替换为 eth0(或 eth1)。编辑该 .yaml 文件(例如 01-netcfg.yaml):
ethernets:
eth0: # 确保这里匹配新的网卡名
dhcp4: true
将文件中所有的旧网卡名(如 enp3s0 或 eno1)更改为 eth0。 注意:请保持 YAML 文件的缩进格式正确。
4. 重启系统
完成上述步骤后,重启服务器以使内核参数生效:
sudo reboot
5. 验证更改
重启后,使用以下命令检查网卡名称:
ip addr
你应该能看到网卡已经更名为 eth0 并且获取到了 IP 地址。
从这张终端截图来看,我已经成功将网卡名称修改为了传统的 eth0 和 eth1 风格。以下是对 ip a 输出结果的详细解读:
6. 结果解读
系统当前识别到 3 个网络接口:
lo(Loopback): 本地回环接口,用于系统内部通信。eth0: 物理网卡 1。eth1: 物理网卡 2(当前处于活跃状态)。
结语:选择权在你
从 enp... 回到 eth0 是一种从“物理安全性”向“运维便利性”的倾斜。在单网卡的 VPS 环境下,回归 eth0 能让配置脚本更具通用性;但在多网卡的高性能服务器上,保留物理位置命名往往是更稳妥的选择。
对于目前管理的 ClickHouse 等高负载服务器,你更看重命名的直观性,还是在大规模扩容时的物理稳定性?