一、組網圖
說明:
1、使用網絡命名空間表示vm1和vm2. 因為我沒有兩台物理服務器。
2、使用virtualbox 的兩條虛機模擬作為host1和host2。
二、配置指導
1、創建網橋 br0
分別在host1和host2上輸入命令
#ovs-vsctl add-br br0
2、創建網絡命名空間,用來模擬VM
分別在host1和host2上輸入命令
#ip netns add nsvm1
#ip netns add nsvm2
3、創建配對端口,一端加入到命名空間,同時配置ip地址
在host1和host2上輸入命令
#ip link add tap1 type veth peer name tap2
#ip link add tap3 type veth peer name tap4
#ip link set tap1 netns nsvm1
#ip link set tap3 netns nsvm2
配置ip地址。
#ip netns exec nsvm1 ip addr add 192.168.0.11/24 dev tap1 (host2上配置為 192.168.0.13)
#ip netns exec nsvm2 ip addr add 192.168.0.12/24 dev tap3 (host2上配置為 192.168.0.14)
設置端口up.
#ip netns exec nsvm1 ip link set tap1 up
#ip netns exec nsvm2 ip link set tap3 up
#ip link set tap2 up
#ip link set tap4 up
4、端口加入網橋
在host1和host2上輸入命令
#ovs-vsctl add-port br0 tap2
#ovs-vsctl add-port br0 tap4
5、驗證本地網橋相連的VM間通信
在host1上輸入命令
#ip netns exec nsvm1 ping 192.168.0.12
6、配置vxlan隧道
在host1上配置如下命令
#ip link add vxlan0 type vxlan id 42 dstport 4789 remote 172.16.56.4 local 172.16.56.3 dev enp0s3
#ip addr add 20.0.0.1/24 dev vxlan0
#ip link set vxlan0 up
在host2上進行對應配置(remote/local互換,以及ip)
#ip link add vxlan0 type vxlan id 42 dstport 4789 remote 172.16.56.3 local 172.16.56.4 dev enp0s3
#ip addr add 20.0.0.2/24 dev vxlan0
#ip link set vxlan0 up
刪除主機上默認的INPUT iptables規則
iptables -D INPUT 11
7、驗證跨主機的vxlan隧道端口間通信
在host1上輸入命令
#ping 20.0.0.2
8、vxlan0端口加入到網橋,實現跨主機的VM間通信
在host1和host2上輸入命令
#ovs-vsctl add-port br0 vxlan0
9、驗證跨主機的VM通過vxlan隧道端口間通信
抓包如下:
三、結論:
通過OVS+VXLAN隧道口,可以模擬出跨主機的VM間通過vxlan隧道的通信過程,從抓包結果看,也是有vxlan格式封裝的。