文章目录
基础
查看网络命名空间
ip netns list
添加网络命名空间
ip netns add 命名空间
ip netns add test1
删除网络命名空间
ip netns delete 命名空间
ip netns delete test1
操作
进入命名空间查看ip信息
ip netns exec 命名空间 ip a
# 查看命名空间test1的ip信息
ip netns exec test1 ip a
启动命名空间网络
ip netns exec 命名空间 ip link set dev 端口 up
# 开启网络命名空间 test1 lo 端口
ip netns exec test1 ip link set dev lo up
通信
veth 虚拟网卡接口
两个网络空间之间要通信的话,需要veth
把网络空间比喻成两个水池的话,veth就是连接水池的管道
有了管道,两个水池的水才能相互流通
创建一对veth
ip link add 第一个veth名称 type veth peer name 第二个veth名称
ip link add veth-test1 type veth peer name veth-test2
veth绑定到命名空间
ip link set veth名称 netns 命名空间
ip link set veth-test1 netns test1
ip link set veth-test2 netns test2
veth添加ip地址
ip netns exec 命名空间 ip addr add ip地址/24 dev veth名称
ip netns exec test1 ip addr add 192.168.1.1/24 dev veth-test1
ip netns exec test2 ip addr add 192.168.1.2/24 dev veth-test2
启动veth
ip netns exec 命名空间 ip link set dev veth名称 up
ip netns exec test1 ip link set dev veth-test1 up
ip netns exec test2 ip link set dev veth-test2 up
example
这里我们创建两个命名空间test1,test2
开启test1,test2
为了让两个命名空间之间可以通信
我们创建一对veth,并分配给两个命名空间
然后给veth分配ip地址,开启veth
这样两个命名空间之间就能通信了
# 创建test1,test2
ip netns add test1
ip netns add test2
# 开启test1,test2
ip netns exec test1 ip link set dev lo up
ip netns exec test2 ip link set dev lo up
# 创建一对veth
ip link add veth-test1 type veth peer name veth-test2
# 分配给test1,test2
ip link set veth-test1 netns test1
ip link set veth-test2 netns test2
# 给veth分配ip地址
ip netns exec test1 ip addr add 192.168.1.1/24 dev veth-test1
ip netns exec test2 ip addr add 192.168.1.2/24 dev veth-test2
# 启动veth
ip netns exec test1 ip link set dev veth-test1 up
ip netns exec test2 ip link set dev veth-test2 up
# result
# 在test1命名空间中可以ping通 192.168.1.2
# 在test2命名空间中可以ping通 192.168.1.1
ip netns exec test1 ping 192.168.1.2
ip netns exec test2 ping 192.168.1.1