Ubuntu不支持“IP映射”,实际需求分为三类:双网卡双IP(需避免路由冲突,仅一卡配gateway)、单网卡多IP(Netplan中用addresses列表配置)、网卡桥接或绑定(bridge用于二层互通,bonding用于链路聚合),混淆会导致断网或路由错误。

Ubuntu 本身没有“IP 映射”这个概念;你真正想做的,通常是让多个网卡各自拥有独立 IP(双网卡双 IP),或让一张网卡承载多个 IP(单网卡多 IP),又或是把两个网卡桥接/绑定成一个逻辑接口。混淆这些会导致配置失败、路由冲突甚至断网。
为什么不能直接“映射”两个网卡的 IP?
Linux 网络栈里,IP 属于协议层,网卡 属于链路层,二者是“绑定”关系,不是“映射”关系。所谓“映射”,常被误用于描述以下三种真实需求:
- 让
eth0和eth1各配一个不同网段的 IP,互不干扰(典型场景:内网管理 + 外网业务) - 让
eth0同时拥有192.168.1.10和192.168.1.11(同一子网多 IP,用于虚拟主机、SSL 多证书等) - 把
eth0和eth1合成一个接口(如br0或bond0),对外表现为一个 IP,内部流量自动分发
选错方案,轻则 ping 不通,重则 SSH 断连。下面按实际用途分情况说明。
双网卡配不同 IP:避免默认路由冲突
这是最常见也最容易出问题的场景。系统默认只保留一条默认路由(ip route show default),如果两块网卡都配了 gateway,后配的会覆盖前配的,导致某一边不通。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 必须只给**一个网卡**配置
gateway(通常是主出口网卡),另一个仅配address和netmask - 若需从另一网卡主动发包(比如监控服务器要走内网口连 Zabbix),得加策略路由:
ip rule add from 10.0.20.100 table 200,再用ip route add default via 10.0.20.1 dev eth1 table 200 - Netplan 配置中,
gateway4字段已弃用(Ubuntu 20.04+),改用routes块 +on-link: true显式声明 - 别在
/etc/network/interfaces里混用旧写法(如auto eth0:0),Ubuntu 18.04+ 默认用 Netplan,老配置会被忽略
单网卡配多个 IP:优先用 Netplan 的 addresses 列表
临时加 IP 可用 ip addr add 192.168.1.101/24 dev eno1,但重启即丢。永久配置务必走 Netplan:
- 编辑
/etc/netplan/01-network-manager-all.yaml(文件名可能不同,找.yaml结尾的) - 在对应网卡下写
addresses,支持同网段、跨网段、带掩码的完整写法:- 192.168.1.100/24、- 10.10.5.20/16 - 不要写
eth0:0这类 ifconfig 时代的别名——Netplan 不识别,且现代内核已弃用子接口命名 - 执行
sudo netplan apply生效;失败时看错误提示,常见是缩进不对或字段名拼错(如adresses)
桥接 vs 绑定:别把 br0 当 bond0 用
桥接(bridge)和绑定(bonding)解决的是完全不同的问题:
-
bridge是二层转发,让物理网卡像交换机端口一样互通(比如 KVM 虚拟机需要和宿主机同网段);命令是nmcli connection add type bridge ifname br0 -
bond是链路聚合,提升带宽或冗余(mode=4需交换机支持 LACP);需加载modprobe bonding,配置文件在/etc/netplan/里要显式设renderer: networkd - 误把两个网卡桥接到同一广播域,又没关 STP,可能引发环路风暴;误用 bonding 却没配交换机,会导致 link down
- 桌面版 Ubuntu 默认用 NetworkManager,
nmcli可控,但 Netplan 更统一;两者混用(比如 nmcli 改了再 netplan apply)会互相覆盖
真正麻烦的从来不是加 IP,而是搞清流量从哪进、从哪出、回程路径是否对称。配完一定要用 ip route get 8.8.8.8 和 tcpdump -i eth0 icmp 验证实际走向。

















