ip netns 命令

待处理

建议阅读 namespace 章节,理论上放在虚拟化或 linux 技术篇章

网络命名空间增删改查

# 查看
ip netns list

# 增加
# ip netns add <NAME>
ip netns add ns1
ip netns add ns2
ip netns add ns3
ip netns list

# 删除
# ip netns delete <NAME>
# ip -all netns delete
ip netns delete ns2
ip netns list
ip -all netns delete
ip netns list

网络命名空间中运行命令

# ip netns exec <NAME> <command>

在指定命名空间内执行命令。例如在 testns 中运行 bash


ip netns exec testns bash

也可以执行网络配置命令:


ip netns exec testns ip a

---

### 5. 将已有进程附加到网络命名空间


ip netns attach <NAME> <PID>

将进程(通过 PID 指定)附加到命名空间。需要进程是单线程的。

---

### 6. 设置命名空间的 NETNSID


ip netns set <NAME> <NETNSID>

为命名空间设置一个 ID。可以用 auto 或整数:


ip netns set testns 42

---

### 7. 获取进程所属的命名空间


ip netns identify <PID>

查看指定进程属于哪个命名空间。

---

### 8. 查看命名空间内运行的所有进程


ip netns pids <NAME>

列出属于该命名空间的所有进程。

---

### 9. 实时监控命名空间事件


ip netns monitor

监控命名空间创建和删除事件(如监听命名空间变化)。

---

### 10. 使用 NSID 查看命名空间


ip netns list-id

或带过滤条件:


ip netns list-id target-nsid 10 nsid 20

这通常用于更复杂的网络虚拟化场景。

---

## 🔁 示例:创建两个命名空间并互通


# 创建两个命名空间 ip netns add ns1 ip netns add ns2

# 创建 veth 虚拟对 ip link add veth1 type veth peer name veth2

# 分别移动到 ns1 和 ns2 ip link set veth1 netns ns1 ip link set veth2 netns ns2

# 启用接口并设置 IP ip netns exec ns1 ip addr add 10.0.0.1/24 dev veth1 ip netns exec ns2 ip addr add 10.0.0.2/24 dev veth2 ip netns exec ns1 ip link set veth1 up ip netns exec ns2 ip link set veth2 up

# 测试连通性 ip netns exec ns1 ping 10.0.0.2

---

## 🧽 清理资源


ip netns delete ns1 ip netns delete ns2

---

如需我为你生成图示、网络拓扑图、自动化脚本等,请继续告诉我。