通过终端命令创建不同的 network namespace 并使其彼此互通
常用的指令
# 1.查看本机的 networkspace:
ip netns list
# 2.删除 networkspace (其中 xxx 是 networkspace 的名称,下同)
ip netns delete xxx
# 3.添加 networkspace
ip netns add xxx
# 4.查看 networkspace 的ip 信息:
ip netns exec xxx ip a
## 或
ip netns exec xxx ip link
# 5.默认情况下,新创建的 networkspace 状态是 down,可以通过如下命令启动
ip netns exec xxx ip link set dev lo up # 其中 lo 是端口名称,单个端口启动后状态是 UNKNOWN,因为端口是需要两端都链接时才真正的是 up 状态
创建两个 networkspace,并且使其彼此可以连通,即ping 命令可达
# 1.创建两个不同的 networkspace
ip netns add test1
ip netns add test2
# 2.创建 veth-pair,类似一条线,可以将两个 networkspace 连通
ip link add veth-test1 type veth peer name veth-test2
# 将 veth-test1 链接到 test1,同时链接 veth-test2 到 test2;(可以理解为将线的两端分别放置到不同的 networkspace 中,已达到互通)
ip link set veth-test1 netns test1
ip link set veth-test2 netns test2
# 3.分配id. 在不同的namespace中为端口(线的两端,这里是 veth-test1 和 veth-test2)配置 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
# 3.启动端口
ip netns exec test1 ip link set dev veth-test1 up
ip netns exec test2 ip link set dev veth-test2 up
# 4.查看ip
ip netns exec test1 ip link # 查看端口为启动状态
ip netns exec test1 ip a # 查看ip
ip netns exec test2 ip link # 查看端口为启动状态
ip netns exec test2 ip a # 查看ip
# 测试 test1 和 test2 的互通
ip netns exec test1 ping 192.168.1.2
ip netns exec test2 ping 192.168.1.1
至此,结束