nmcli不创建或管理网络命名空间(netns),仅配置networkmanager接管的网络连接;netns需用ip netns/unshare等内核级命令实现协议栈隔离,nmcli仅可辅助配置宿主机侧veth接口的ip和静态路由。

nmcli 本身不创建或管理网络命名空间(netns),它只负责配置 NetworkManager 管理的网络连接,比如有线、无线、bond 等接口的 IP、路由和 DNS。网络命名空间是内核原生机制,由 ip netns、unshare 等命令直接操作,与 NetworkManager 无直接集成关系。想用 nmcli “配置 netns” 是常见误解——二者属于不同层级:nmcli 管的是“哪个物理/虚拟网卡走什么路由”,而 netns 管的是“哪组进程看到哪套网络协议栈”。要隔离不同业务的协议栈,必须用 netns,nmcli 只能在某些环节辅助配通其中一端的路由。
明确分工:nmcli 不参与 netns 创建和切换
NetworkManager 默认不感知、也不支持将某个连接绑定到指定 netns。即使你用 nmcli 配置了 eth1 的静态 IP 和路由,只要 eth1 还在默认 netns,所有使用它的进程就仍在宿主机网络栈中。真正实现协议栈隔离,靠的是:
-
ip netns add myapp创建独立网络环境 -
ip link set veth1 netns myapp把虚拟网卡移入该 netns -
ip netns exec myapp ip addr add ...在隔离环境中配 IP 和路由 - 用
ip netns exec myapp your_app启动业务进程
nmcli 可辅助的场景:给 veth 宿主端配 IP 和路由
当用 veth pair 连接 netns 和宿主机时,veth 的一端(如 veth0)留在默认 netns,可当作普通网卡对待。这时可以用 nmcli 管理它,比如:
- 禁用自动默认网关:
nmcli connection modify "veth0-conn" ipv4.never-default yes - 关闭自动导入 DHCP 路由:
nmcli connection modify "veth0-conn" ipv4.ignore-auto-routes yes - 添加指向 netns 内网段的静态路由:
nmcli connection modify "veth0-conn" ipv4.routes "10.100.0.0/24 10.100.0.1 200"(假设 veth1 在 netns 中配了 10.100.0.1/24) - 重启连接使生效:
nmcli connection down "veth0-conn" && nmcli connection up "veth0-conn"
这样做的好处是:路由由 NetworkManager 统一维护,避免手动 ip route 命令失效(如 NetworkManager 重载后被覆盖)。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
不能混用的典型错误
以下操作无效或危险:
-
nmcli connection modify "Wired" connection.zone "myapp"—— zone 是 firewalld 概念,不关联 netns - 试图用 nmcli 把 eth0 移进某个 netns —— NetworkManager 不提供此能力,且会破坏连接管理
- 仅靠
nmcli connection modify ... ipv4.routes就认为实现了协议栈隔离 —— 路由只是转发路径,协议栈仍属默认 netns
推荐组合方案:netns 主力 + nmcli 辅助
对多业务隔离,建议流程如下:
- 为每个业务创建 netns:
ip netns add billing、ip netns add analytics - 为每个 netns 创建 veth pair,一端入 netns,一端留宿主机(如 veth-billing0 / veth-billing1)
- 用
ip netns exec在各 netns 内配 IP、启用 lo、设默认路由(如经 veth0 出去) - 用 nmcli 为宿主机侧的 veth 接口建专用连接,关闭默认网关继承,加精确静态路由
- 启动业务时严格限定在对应 netns 中:
ip netns exec billing python3 app.py
这样既利用了 netns 的协议栈级隔离能力,又借助 nmcli 提升了宿主机侧网络配置的稳定性和可维护性。










