nmcli不支持传统网卡别名(如eth0:0),但可通过创建多个绑定同一设备的连接或在单连接中追加secondary IP实现等效多IP功能,配置持久化且重启生效。

Linux 中的 nmcli 本身不支持传统意义上的“网卡别名”(如旧版 ifconfig 的 eth0:0 这种子接口),因为 NetworkManager 的设计哲学是基于**连接(connection)** 而非接口别名。但你可以通过创建多个独立的、绑定到同一物理设备的连接(即“多IP连接”),实现完全等效的网络兼容效果——这对需要同时响应多个 IP(如 legacy 应用绑定特定 IP、虚拟主机、迁移过渡期共存等)的场景非常实用。
理解别名的本质需求
所谓“虚拟网卡别名”,实际目标通常是:
- 让一块物理网卡(如 eth0)同时拥有多个 IPv4 地址
- 各地址可独立配置路由、DNS 或启用/禁用状态
- 旧业务仍能通过原 IP(如 192.168.10.100)正常访问,无需改代码
- 配置需持久化,重启不失效
用 nmcli 实现等效别名(推荐方式)
核心思路:为同一设备(ifname)创建多个 connection,每个 connection 分配一个主 IP,并通过 ipv4.addresses 添加额外地址(或直接设为 secondary)。NetworkManager 会将它们全部绑定到该设备上,效果与 eth0:0 完全一致。
- 查看当前连接和设备:
nmcli con show和nmcli device status - 复制现有连接作为基础(例如原连接名为
eth0):nmcli connection clone eth0 eth0-alias1 - 修改新连接,仅设置第二个 IP(如 192.168.10.101/24),并禁用 DHCP:
nmcli connection modify eth0-alias1 ipv4.method manual ipv4.addresses "192.168.10.101/24" ipv4.gateway "" ipv4.dns "" - 关键:指定它绑定到同一设备,且不接管默认路由:
nmcli connection modify eth0-alias1 connection.autoconnect yes 802-3-ethernet.mtu 1500 ipv4.never-default yes - 激活该连接:
nmcli connection up eth0-alias1
执行后运行 ip addr show eth0,即可看到 eth0 下同时存在两个 inet 地址,旧业务访问 192.168.10.100 不受影响,新服务可监听 192.168.10.101。
补充:单连接内追加多个 IP(更轻量)
如果只是简单增加辅助 IP,无需独立管理,可直接在原有连接中添加:
- 向已有连接(如
eth0)追加一个 secondary 地址:nmcli connection modify eth0 +ipv4.addresses "192.168.10.101/24" - 确保 IPv4 方法为 manual(否则追加可能被忽略):
nmcli connection modify eth0 ipv4.method manual - 重新激活生效:
nmcli connection down eth0 && nmcli connection up eth0
这种方式配置简洁,适合静态多 IP 场景,所有地址由同一 connection 统一控制。
验证与兼容性要点
验证是否生效:
-
ip -4 addr show dev eth0—— 确认多个inet行存在 -
nmcli -f NAME,DEVICE,IP4.ADDRESS,IP4.GATEWAY con show—— 查看各连接分配的 IP 和网关 - 从外部 ping 两个 IP,确认均可通
注意:旧业务若硬编码绑定 eth0:0 设备名,需改为监听 IP 地址(这是标准做法);Linux 内核层面已无设备级别别名概念,所有流量均由 IP 层路由,因此只要 IP 存在,应用即可收发。


















