2.3.1 网络接口管理与命名规则
网络接口管理与命名规则#
1. 网络接口类型与基本概念#
- 物理网卡(Ethernet):常见如
eth0/enp0s3,对应实际硬件接口。 - 虚拟接口:
lo回环、veth容器对、br网桥、bond/team聚合接口。 - 无线接口:常见
wlan0或wlp2s0。 - 特殊接口:
tun/tap隧道接口、docker0/cni0容器网络桥接。
原理草图(命名来源):
2. 现代命名规则(Predictable Network Interface Names)#
- systemd/udev 的可预测命名规则,避免设备顺序变化导致接口名漂移。
- 常见命名形式与解释:
enoX:板载网卡(Onboard)ensX:热插槽设备(Slot)enpXsY:PCI 位置(Path)enx<MAC>:基于 MAC 地址- 旧式命名:
eth0/eth1,受探测顺序影响。
查看命名来源示例(解释每个关键字段):
# 查看当前接口名列表
ip -brief link
# 查看某接口命名属性来源(重要字段:ID_NET_NAME_*)
udevadm info /sys/class/net/enp0s3 | grep -E 'ID_NET_NAME|ID_NET_DRIVER'
# 预期:输出 ID_NET_NAME_PATH/ID_NET_NAME_ONBOARD 等字段
3. 工具安装与准备#
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install -y ethtool net-tools
# RHEL/CentOS/Rocky
sudo yum install -y ethtool net-tools
# NetworkManager 提供 nmcli(多数发行版默认安装)
nmcli -v
4. 查看与识别接口(含命令解释)#
# 1) 查看接口状态、MTU、MAC
ip link show
# 解释:state UP/DOWN、mtu 1500、link/ether 为 MAC
# 2) 查看 IP 地址配置
ip addr show enp0s3
# 解释:inet 为 IPv4 地址;scope global 表示全局可用
# 3) 查看速率/双工/链路
ethtool enp0s3
# 解释:Speed/Duplex/Link detected 反映物理链路状态
识别接口与物理位置:
# 查看接口的硬件路径
udevadm info /sys/class/net/enp0s3 | grep ID_PATH
# 预期:pci-0000:00:03.0 之类的路径信息
5. 接口启停与状态管理(含示例)#
# 临时启用/禁用接口(重启后失效)
sudo ip link set enp0s3 down
sudo ip link set enp0s3 up
# NetworkManager 管理状态
nmcli dev status
# 解释:DEVICE/TYPE/STATE/CONNECTION
# 断开/连接接口(适合 NM 管理环境)
nmcli dev disconnect enp0s3
nmcli dev connect enp0s3
6. MTU 与链路参数调整(含验证)#
# 设置 MTU(临时)
sudo ip link set enp0s3 mtu 1500
# 验证路径 MTU(不分片探测)
ping -M do -s 1472 8.8.8.8
# 解释:1472 + 28(IPv4头) = 1500;若提示需分片,说明 MTU 过大
7. 绑定与聚合接口命名#
- Bonding:
bond0、bond1,由内核 bonding 驱动管理。 - Teaming:
team0,由teamd管理。 - 命名建议:与业务/链路对应,如
bond_storage、bond_public。
示例(仅创建接口名,具体 bonding 配置在后续章节展开):
# 创建 bond0(需要 root)
sudo modprobe bonding
sudo ip link add bond0 type bond
sudo ip link set bond0 up
ip -brief link | grep bond0
8. 重命名与固定接口名策略#
- 禁用可预测命名(不推荐):内核参数
net.ifnames=0 biosdevname=0。 - 使用 udev 规则绑定固定名称(生产推荐)。
示例:将 MAC 为 52:54:00:12:34:56 的网卡固定为 eth0
路径:/etc/udev/rules.d/70-persistent-net.rules
cat <<'EOF' | sudo tee /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="52:54:00:12:34:56", NAME="eth0"
EOF
# 重新加载规则并触发
sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=net
9. 常见问题与排错#
1) 接口名变化导致配置失效
# 对比系统内接口名和配置文件引用
ip -brief link
nmcli con show | grep -E 'NAME|DEVICE'
# 若配置引用了不存在接口名,需更新连接配置
2) 接口同名冲突
# 查找重复规则
grep -R "NAME=" /etc/udev/rules.d/
# 删除旧规则后 reload/trigger
3) 虚拟化/云环境热插拔
# 检查 MAC 是否变化
ip link show enp0s3 | grep link/ether
# 若 MAC 变化需更新 udev 规则或云平台设置为固定 MAC
10. 练习与实操#
1) 识别命名来源
- 目标:找出 enp0s3 的 ID_NET_NAME_PATH,写出 PCI 路径。
2) 临时调整 MTU 并验证
- 目标:将接口 MTU 改为 1400,并使用 ping -M do -s 1372 验证。
3) 命名固定练习
- 目标:基于 MAC 将接口固定为 eth0,重启后验证 ip -brief link 输出。
4) 排错演练
- 目标:模拟改错接口名(把 NM 配置的接口名改为不存在),用 nmcli 找出问题并修复。