vxlan 也能在单台机器上演示:
网络拓扑:
执行命令:
- 创建两个网络名字空间:(相当于做了两个虚拟机)
12ip netns add 192.168.1.1ip netns add 192.168.1.2
- 创建一个设备对儿:
1234ip link add veth10 type veth peer name veth01# 启动ip link set dev veth10 upip link set dev veth01 up
- 将设备对分别添加到两个名字空间:
12ip link set dev veth01 netns 192.168.1.1ip link set dev veth10 netns 192.168.1.2
- 进入名字空间进行配置:
12345678910111213141516171819202122ip netns exec 192.168.1.1 bash#配置IPip a add dev veth01 192.168.1.1/24#添加网桥brctl addbr br01ip link set br01 up#添加一个设备对,一端配置IP,代表一个虚拟机,一端添加到网桥ip link add veth-vm type veth peer name vm01ip link set dev veth-vm upip link set dev vm01 upbrctl addif br01 veth-vmip a add dev vm01 172.16.10.1/24#添加一个vxlanip link add vxlan01 type vxlan id 10 dev veth01ip link set dev vxlan01 up#将vxlan添加到交换机br01上brctl addif br01 vxlan01
- 进入另外一个名字空间进行类似配置:
12345678910111213141516171819202122ip netns exec 192.168.1.2 bash#配置IPip a add dev veth10 192.168.1.2/24#添加网桥brctl addbr br01ip link set br01 up#添加一个设备对,一端配置IP,代表一个虚拟机,一端添加到网桥ip link add veth-vm type veth peer name vm02ip link set dev veth-vm upip link set dev vm02 upbrctl addif br01 veth-vmip a add dev vm02 172.16.10.2/24#添加一个vxlanip link add vxlan01 type vxlan id 10 dev veth01ip link set dev vxlan01 up#将vxlan添加到交换机br01上brctl addif br01 vxlan01
- 通过ip link show veth01 和ip link show veth10, 查到:
veth01 Mac: fe:ea:f2:aa:1f:fc
veth0 Mac: ee:b4:c4:3f:b3:2b - 添加转发表:
123456789ip netns exec 192.168.1.1 bashbridge fdb add ee:b4:c4:3f:b3:2b dev vxlan01 dst 192.168.1.2bridge fdb add 00:00:00:00:00:00 dev vxlan01 dst 192.168.1.2ip netns exec 192.168.1.2 bashbridge fdb add fe:ea:f2:aa:1f:fc dev vxlan01 dst 192.168.1.1bridge fdb add 00:00:00:00:00:00 dev vxlan01 dst 192.168.1.1#如果需要广播到多个主机,则需要使用bridge fdb append ,如:#bridge fdb append 00:00:00:00:00:00 dev vxlan01 dst 192.168.1.3 - 验证:
12345678910111213ip netns exec 192.168.1.1 bash# ping 172.16.10.2PING 172.16.10.2 (172.16.10.2) 56(84) bytes of data.64 bytes from 172.16.10.2: icmp_seq=1 ttl=64 time=0.236 ms...CTRL+Dip netns exec 192.168.1.2 bash# ping 172.16.10.1PING 172.16.10.2 (172.16.10.1) 56(84) bytes of data.64 bytes from 172.16.10.1: icmp_seq=1 ttl=64 time=0.236 ms...
- 注意:我们在各自的名字空间内ping不到自己的IP,因为我们没有启动lo,启动lo就可以ping到自己了
参考: http://tech.mytrix.me/2017/04/vxlan-overlay-in-linux-bridge/