私有云多网段互通核心是为各业务网段显式配置静态路由而非依赖默认路由;需用nmcli为每张网卡连接追加目标网段路由、禁用自动默认路由,并通过ip route get验证路径准确性和连通性。

在私有云环境中,多网段互通的核心不是加一条默认路由,而是为每个业务网段显式声明“去哪走、走哪条路”。nmcli 通过 ipv4.routes 配合路由度量(metric)和自动路由屏蔽(ignore-auto-routes),能把静态路由精准写入连接配置,重启不丢,适合 OpenStack、VMware vSphere 或 KVM 虚拟化宿主机这类需要稳定跨网段通信的场景。
明确各网段归属与网关出口
先理清你的私有云网络拓扑。例如:
- 管理网段:192.168.10.0/24,网关是 192.168.10.1(走 eth0)
- 租户网络 A:172.16.100.0/24,网关是 172.16.100.1(走 eth1)
- 存储网络:10.10.200.0/24,网关是 10.10.200.1(走 eth2)
用 ip -br a 和 nmcli connection show 确认每块物理网卡对应的连接名(如 “System eth0”),这是后续操作的基础。
为每个连接添加对应网段的静态路由
不要依赖 DHCP 自动推路由——它只给默认网关,且容易冲突。应为每个连接单独追加目标网段路由:
- 让 eth0 连接能访问租户网段:
nmcli connection modify "System eth0" +ipv4.routes "172.16.100.0/24 192.168.10.1" - 让 eth1 连接能访问存储网段:
nmcli connection modify "System eth1" +ipv4.routes "10.10.200.0/24 172.16.100.1" - 让 eth2 连接能访问管理网段:
nmcli connection modify "System eth2" +ipv4.routes "192.168.10.0/24 10.10.200.1"
注意:+ipv4.routes 表示追加,不会覆盖已有路由;网关地址必须是该网卡所在子网内的下一跳(通常是本机直连网关),不能填远端设备 IP。
关闭自动默认路由,防止干扰
私有云中通常不希望某张网卡“抢着当出口”,尤其管理网和存储网应禁止上公网。统一禁用 DHCP 自动添加默认路由:
nmcli connection modify "System eth0" ipv4.ignore-auto-routes yesnmcli connection modify "System eth1" ipv4.ignore-auto-routes yesnmcli connection modify "System eth2" ipv4.ignore-auto-routes yes
这样即使 DHCP 分配了网关,也不会生成 default via ... 条目,避免覆盖你手动配置的精确网段路由。
重载并验证实际路由路径
执行以下命令使全部配置生效:
nmcli connection reloadnmcli connection down "System eth0" && nmcli connection up "System eth0"- 对 eth1、eth2 同样操作
验证时不用只看 ip route 是否有条目,要查具体路径:
-
ip route get 172.16.100.5→ 应显示via 192.168.10.1 dev eth0 -
ip route get 10.10.200.10→ 应显示via 172.16.100.1 dev eth1 -
ip route | grep -E "172.16.100.0|10.10.200.0|192.168.10.0"→ 确保三条都存在,且无重复或 metric 冲突
若某条不通,重点检查:下一跳网关是否可达、对应网卡是否 UP、防火墙是否放行对应网段 ICMP/业务端口。











