1、命名基本使用说明

ip link add link eth0 name eth0.10 type vlan id 10 在设备eth0上创建新的vlan设备eth0.10
ip link add veth0 type veth peer name veth1 创建虚拟网卡,成对出现 veth0 veth1

[root@master ~]#ip add 查看已创建的veth0和1
10: veth1@veth0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 76:c0:90:fa:52:12 brd ff:ff:ff:ff:ff:ff
11: veth0@veth1: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 3a:c2:05:d9:31:55 brd ff:ff:ff:ff:ff:ff

ip netns add test_network ##创建一个test_network的网络命名空间
#ip netns 参考网络命名空间
[root@master ~]# ip netns
test_network

[root@master ~]# ip netns exec test_network ip add ##查看 test_network网络空间的接口IP地址
1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE: mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0

[root@master ~]# ip link set veth1 netns test_network ##将刚才创建的veth1接口加入test_network空间中
[root@master ~]# ip netns exec test_network ip add ##查看 test_network网络空间的接口多出veth1
1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE: mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
10: veth1@if11: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 76:c0:90:fa:52:12 brd ff:ff:ff:ff:ff:ff link-netnsid 0

[root@master ~]# ip link set veth0 up ##开启接口veth0
[root@master ~]# ip netns exec test_network ip link set veth1 up ##开启veth1

[root@master ~]# ip addr add 10.11.13.2/24 dev veth0 ##配置veth0 IP
[root@master ~]# ip netns exec test_network ip addr add 10.11.14.4/24 dev veth1##配置veth1 IP

[root@master ~]# ip route add 10.11.14.0/24 dev veth0 ##添加路由10.11.14.0/24,下一跳接口是veth0
[root@master ~]# ip netns exec test_network ip route add default dev veth1 ##test_network网络空间配置一条默认路由

[root@master ~]# ping 10.11.14.4 ##在主机上ping test_network命名空间的veth1的IP地址
PING 10.11.14.4 (10.11.14.4) 56(84) bytes of data.
64 bytes from 10.11.14.4: icmp_seq=1 ttl=64 time=0.115 ms
64 bytes from 10.11.14.4: icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from 10.11.14.4: icmp_seq=3 ttl=64 time=0.048 ms
64 bytes from 10.11.14.4: icmp_seq=4 ttl=64 time=0.089 ms

2、综合实验

image.png
1、创建网络命名空间red和blue和网桥br0
ip netns red
ip netns blue
brctl addr br0
2、创建veth设备对,veth-red和veth-blue划入对应red和blue命名空间,veth-red-br和veth-blue-br链接br0
ip link add veth-red type veth peer name veth-red-br
ip link add veth-blue type veth peer name veth-blue-br
ip link set veth-red-br master br0
ip link set veth-blue-br master br0
ip link set veth-red netns red
ip link set veth-blue netns blue

3、开启接口
ip link set veth-red-br up
ip link set veth-blue-br up
ip link set br0 up
ip netns exec red ip link set veth-red up
ip netns exec blue ip link set veth-blue up

4、配置IP
ip netns exec red ip addr add 192.168.15.1/24 dev veth-red
ip netns exec blue ip addr add 192.168.15.2/24 dev veth-blue

5、在red上ping blue,发现不通,因为iptables forwarding被drop
iptable -A FORWARD -j ACCEPT

6、在主机上ping red和blue不通,因为br0没有配置IP,可以通过route -n查看主机路由,发现没有192.168.15.0/24的路由。
ip addr add 192.168.15.5/24 dev br0
ip addr del dev br0 192.168.15.5/24 #删除地址

7、red和blue ping 8.8.8.8互联网地址不通
首先,/proc/sys/net/ipv4/ip_forward 必须开启IP转发和iptables必须方通
其他,记得在blue和red的命名空间添加默认路由
ip netns exec red ip route add default via 192.168.15.5
ip netns exec blue ip route add default via 192.168.15.1
最后,记得配置snat
iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -j MASQUERADE ##没有配置转换接口,按路由后的接口地址转换。