ip netns命令操作网络名称空间

发布于:2025-06-05 ⋅ 阅读:(24) ⋅ 点赞:(0)

1、虚拟网络名称空间基本操作命令

# 查看pod接口与网络名称空间对应关系
ip link show type veth
8: cali2f982d35f9d@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1480 qdisc noqueue state UP mode DEFAULT group default 
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netns cni-58002bc0-6fdc-e9fc-f43e-cbbde77cba28
# 查看系统中有哪些network namespace
ip netns list/show | grep cni-58002bc0-6fdc-e9fc-f43e-cbbde77cba28
cni-58002bc0-6fdc-e9fc-f43e-cbbde77cba28 (id: 0)
# 创建一个名为netns1的network namespace
ip netns add netns1
# 使用ip netns exec命令进入network namespace
ip netns exec netns1 bash
# 查看netns中链路状态
ip netns exec netns1 ip link list
# 把netns1设备中loopback口状态设置成UP
ip netns exec netns1 ip link set dev lo up
# 尝试ping netns1这network namespace的127.0.0.1
ip netns exec netns1 ping 127.0.0.1
# 删除network namespace
ip netns delete netns1

2、2个虚拟网络名称空间互通

#!/bin/bash
# 创建network namespace ns0 ns1
ip netns add ns0
ip netns add ns1
# 使用veth pair创建2张虚拟网卡;分别加到ns0 ns1 netowrk namespace
ip link add veth0 type veth peer name veth1
ip link set veth0 netns ns0
ip link set veth1 netns ns1
# 绑定ip
ip netns exec ns0 ip link set dev lo up
ip netns exec ns1 ip link set dev lo up
ip netns exec ns0 ifconfig veth0 10.1.1.1/24 up
ip netns exec ns1 ifconfig veth1 10.1.1.2/24 up
# 删除network namespace
ip netns delete ns0
ip netns delete ns1

3、多个虚拟网络名称空间互通

#!/bin/bash
### centos
## yum install -y bridge-utils
### ubuntu
## apt-get install -y bridge-utils
# 添加网桥br0
brctl addbr br0
# 启动网桥br0
ip link set br0 up
# 创建network namespace ns0 ns1 ns2
ip netns add ns0
ip netns add ns1
ip netns add ns2
# 创建 veth peer
ip link add veth0-ns type veth peer name veth0-br
ip link add veth1-ns type veth peer name veth1-br
ip link add veth2-ns type veth peer name veth2-br
# 将 veth 的一端移动到netns中
ip link set veth0-ns netns ns0
ip link set veth1-ns netns ns1
ip link set veth2-ns netns ns2
# 绑定 ip
ip netns exec ns0 ip link set dev lo up
ip netns exec ns1 ip link set dev lo up
ip netns exec ns2 ip link set dev lo up
ip netns exec ns0 ifconfig veth0-ns 10.1.1.1/24 up
ip netns exec ns1 ifconfig veth1-ns 10.1.1.2/24 up
ip netns exec ns2 ifconfig veth2-ns 10.1.1.3/24 up
# 设置默认路由,可以通宿主机
ip netns exec ns0 route add default gw 10.1.1.254 veth0-ns
ip netns exec ns1 route add default gw 10.1.1.254 veth1-ns
ip netns exec ns2 route add default gw 10.1.1.254 veth2-ns
# 将 veth 的另一端启动并挂载到网桥上
ip link set veth0-br up
ip link set veth1-br up
ip link set veth2-br up
brctl addif br0 veth0-br
brctl addif br0 veth1-br
brctl addif br0 veth2-br
# 给网桥设置 IP
ip addr add 10.1.1.254/24 dev br0
# 删除网桥
ifconfig veth0-br 0
ifconfig veth1-br 0
ifconfig veth2-br 0
brctl delif br0 veth0-br
brctl delif br0 veth1-br
brctl delif br0 veth2-br
ip link set br0 down
brctl delbr br0