root@lzl-vm:~# ip netns add ns1
root@lzl-vm:~# ip netns add ns2
root@lzl-vm:~# ip netns
ns2
ns1
root@lzl-vm:~#
■创建两个tap设备,tap1、tap2 互为peer关系
root@lzl-vm:~# ip link add tap1 type veth peer name tap2
root@lzl-vm:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:b1:9e:06 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.131/24 brd 192.168.10.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feb1:9e06/64 scope link
valid_lft forever preferred_lft forever
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1link/ether 4e:c0:78:5b:11:86 brd ff:ff:ff:ff:ff:ff
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether fa:54:cd:7a:3e:ed brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
6: tap2@tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 32:56:28:0b:ac:ec brd ff:ff:ff:ff:ff:ff
inet6 fe80::3056:28ff:fe0b:acec/64 scope link
valid_lft forever preferred_lft forever
7: tap1@tap2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 66:c1:eb:28:25:2f brd ff:ff:ff:ff:ff:ff
inet6 fe80::64c1:ebff:fe28:252f/64 scope link
valid_lft forever preferred_lft forever
■设置tap1、tap2 的命名空间
root@lzl-vm:~# ip link set tap1 netns ns1
root@lzl-vm:~# ip link set tap2 netns ns2
root@lzl-vm:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:b1:9e:06 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.131/24 brd 192.168.10.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feb1:9e06/64 scope link
valid_lft forever preferred_lft forever3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1
link/ether 4e:c0:78:5b:11:86 brd ff:ff:ff:ff:ff:ff
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether fa:54:cd:7a:3e:ed brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
■查看各命名空间中的网络设备
root@lzl-vm:~# ip netns exec ns1 ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:007: tap1@if6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000link/ether 66:c1:eb:28:25:2f brd ff:ff:ff:ff:ff:ff
root@lzl-vm:~# ip netns exec ns2 ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:006: tap2@if7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000link/ether 32:56:28:0b:ac:ec brd ff:ff:ff:ff:ff:ff
root@lzl-vm:~#
■启动tap1、tap2
(进入ns1命名空间)
root@lzl-vm:~# ip netns exec ns1 bash
root@lzl-vm:~#
root@lzl-vm:~# ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:007: tap1@if6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000link/ether 66:c1:eb:28:25:2f brd ff:ff:ff:ff:ff:ff
root@lzl-vm:~# ip link set dev tap1 up
root@lzl-vm:~# ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:007: tap1@if6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000link/ether 66:c1:eb:28:25:2f brd ff:ff:ff:ff:ff:ff
root@lzl-vm:/home/lizhilun# exit
(进入ns2命名空间)
root@lzl-vm:~# ip netns exec ns2 bash
root@lzl-vm:~# ip link set dev tap2 up
root@lzl-vm:~# ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:006: tap2@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 32:56:28:0b:ac:ec brd ff:ff:ff:ff:ff:ff
inet6 fe80::3056:28ff:fe0b:acec/64 scope link
valid_lft forever preferred_lft forever
root@lzl-vm:~# exit
■测试tap1、tap2的连通性
(tap1设置ip为1.1.1.10/24)
root@lzl-vm:~# ip netns exec ns1 ip addr add 1.1.1.10/24 dev tap1
root@lzl-vm:~# ip netns exec ns1 ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:007: tap1@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 66:c1:eb:28:25:2f brd ff:ff:ff:ff:ff:ff
inet 1.1.1.10/24 scope global tap1
valid_lft forever preferred_lft forever
inet6 fe80::64c1:ebff:fe28:252f/64 scope link
valid_lft forever preferred_lft forever
root@lzl-vm:~#
(tap2设置ip为1.1.1.20/24,同网段)
root@lzl-vm:~# ip netns exec ns2 ip addr add 1.1.1.20/24 dev tap2
root@lzl-vm:~# ip netns exec ns2 ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:006: tap2@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 32:56:28:0b:ac:ec brd ff:ff:ff:ff:ff:ff
inet 1.1.1.20/24 scope global tap2
valid_lft forever preferred_lft forever
inet6 fe80::3056:28ff:fe0b:acec/64 scope link
valid_lft forever preferred_lft forever
(测试tap1和tap2的连接)
root@lzl-vm:~#ip netns exec ns1 bash
root@lzl-vm:~# ip a1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:007: tap1@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 66:c1:eb:28:25:2f brd ff:ff:ff:ff:ff:ff
inet 1.1.1.10/24 scope global tap1
valid_lft forever preferred_lft forever
inet6 fe80::64c1:ebff:fe28:252f/64 scope link
valid_lft forever preferred_lft forever
root@lzl-vm:~# ping 1.1.1.20
PING 1.1.1.20 (1.1.1.20) 56(84) bytes of data.
64 bytes from 1.1.1.20: icmp_seq=1 ttl=64time=0.271 ms
64 bytes from 1.1.1.20: icmp_seq=2 ttl=64time=0.045 ms
64 bytes from 1.1.1.20: icmp_seq=3 ttl=64time=0.046 ms
64 bytes from 1.1.1.20: icmp_seq=4 ttl=64time=0.049 ms
(查看ns1的路由表)
root@lzl-vm:~# ip ro1.1.1.0/24 dev tap1 proto kernel scope link src 1.1.1.10
root@lzl-vm:~#