创建两个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.