Linux Network Namespace

创建两个network namespace并互相连接

这里写图片描述

1. 创建Veth pair

先创建两个netns(test1和test2)

sudo ip netns add test1
sudo ip netns add test2

什么是veth pair
Veth pair 是一对虚拟网卡,从一张veth网卡发出的数据包可以直接到达它的peer veth,两者之间存在着虚拟链路。

sudo ip link add veth-test1 type veth peer name veth-test2

ip link 后:
这里写图片描述

将veth-test1 添加进netns test1中

sudo ip link set veth-test1 netns test1

这里写图片描述
同上添加veth-test1 进netns test1中.

2. 给veth分配ip地址

给test1的veth-test1添加ip地址192.168.1.1/24

sudo ip netns exec test1 ip addr add 192.168.1.1/24 dev veth-test1

启动veth-test1

sudo ip netns exec test1 ip link set dev veth-test1 up

查看test1中的ip地址

sudo ip netns exec test1 ip a

这里写图片描述

同理配置test2
这里写图片描述

test1 ping test2

sudo ip netns exec test1 ping 192.168.1.2

这里写图片描述

其他

查看所有netns:

sudo ip netns list

新增:

sudo ip netns add test1

删除:

sudo ip netns delete test1

在一个netns中执行命令:

ip netns exec test1 ip addr
// 可以执行bash命令 ip netns exec test1 bash
// exit退出

配置网卡(netns中网卡默认down)
这里写图片描述

ip netns exec test1 ip link set dev lo up

从DOWN变成UNKNOWN, 因为网络要两个连接才能互通,所以显示unknown.
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_27068845/article/details/80850300