OVS-----CentOS7上搭建基於Open vSwitch的VxLAN隧道實驗


一、關於VXLAN

 VXLAN 是 Virtual eXtensible LANs 的縮寫,它是對 VLAN 的一個擴展,是非常新的一個 tunnel 技術,在Open vSwitch中應用也非常多。Linux 內核的 upstream 中也剛剛加入 VXLAN 的實現。相比 GRE tunnel 它有着很好的擴展性,同時解決了很多其它問題。

二、實驗背景

Linux內核模塊在支持Open vSwitch之后又加入了支持隧道的功能,但是某些內核版本的的Linux可能只支持Open vSwitch而不支持隧道技術。支持隧道技術的對應最低Linux內核版本如下:

隧道技術支持內核版本協議
從內核3.7版本開始,Linux就開始支持VXLAN。
到了內核3.12版本,Linux對VXLAN的支持已經完備,支持單播和組播,IPv4和IPv6。

本實驗操作系統是在兩台虛擬機中安裝的基於4.20Linux內核版本的centos 7.2,滿足VXLAN正常運行的條件。同時需要安裝好Open vSwitch,本實驗安裝的是Open vSwitch 2.3.0版本。

centos7.2內核默認為3.10,需要升級:https://www.cnblogs.com/jinyuanliu/p/10368780.html

服務器 操作系統版本 內核版本 ovs版本  
10.1.80.110 centos7.2 4.20.8 2.5.0  
10.1.80.111 centos7.2 4.20.8 2.5.0  

 

 

 

隧道網絡拓撲搭建

注:因為實驗本身就是在虛擬環境下操作,所以實驗中br1橋上實際上並沒有再下掛任何主機,

實驗中我們是分別給兩台虛擬機的br1指定兩個不同網段的ip,然后通過搭建VXLAN隧道讓這兩個不同網段的網橋能夠實現通信

三、基礎環境配置

1、關閉防火牆、selinux、networkmanager

hostnamectl set-hostname node1
#修改hosts文件
#關閉firewalld
[root@node1 ~]# systemctl stop firewalld.service
[root@node1 ~]# systemctl disable firewalld.service
#關閉NetworkManager
[root@node1 ~]# systemctl stop NetworkManager.service
[root@node1 ~]# systemctl disable NetworkManager.service
#關閉selinux #重啟網卡 service network restart

2、安裝OVS

參考文檔,在兩個節點安裝ovs軟件:

https://www.cnblogs.com/jinyuanliu/p/10369415.html

四、VXLAN隧道搭建

4.1配置node1

在node1上添加名為br0和br1的兩個網橋:

ovs-vsctl add-br br0
ovs-vsctl add-br br1
#列出所有網橋
ovs-vsctl list-br  

在br0上添加一個端口,將ens160掛載到br0上。

這樣做的目的是方便我們在虛擬網橋上添加多個端口供我們使用,這樣不必受限於ens160的有限端口。

注意:執行后會導致失去連接

ovs-vsctl add-port br0 ens160

此時我們將原先ens160分配的ip清除並指定給br0,並且根據實際情況配置一下br0的網關。讓虛擬機網絡能通過br0繼續工作。

ifconfig ens160 0 up 
ifconfig br0 10.1.80.119/24 up
route add default gw 10.1.80.254 br0

給br1網橋分配一個ip。

ifconfig br1 11.0.0.1/24 up

4.2 配置node2

按照node1同樣的方式來配置node2

ovs-vsctl add-br br0
ovs-vsctl add-br br1
ovs-vsctl add-port br0 ens160
ifconfig ens160 0 up && ifconfig br0 10.1.80.111/24 up
route add default gw 10.1.80.254 br0

給node2的br1網橋分配一個和Host1中br1不同網段的ip。

ifconfig br1 11.0.1.1/24 up

4.3 搭建VXLAN隧道

 在搭建隧道之前我們先測試一下兩台虛擬機Host1和Host2上的br0和br1兩兩之間是否能相互通信。

#node1 ping node2的br0,通
[root@node1 ~]# ping 10.1.80.111
PING 10.1.80.111 (10.1.80.111) 56(84) bytes of data.
64 bytes from 10.1.80.111: icmp_seq=1 ttl=64 time=0.355 ms
64 bytes from 10.1.80.111: icmp_seq=2 ttl=64 time=0.482 ms
64 bytes from 10.1.80.111: icmp_seq=3 ttl=64 time=0.463 ms
#node1  ping  node2的br1,不通
[root@node1 ~]# ping 11.0.1.1
PING 11.0.1.1 (11.0.1.1) 56(84) bytes of data.

我們搭建隧道的目的就是讓兩台機器的br1(數據層面)能夠實現通信。

1)在node1上設置VXLAN,遠端ip設置為node2能對外通信的br0的ip。

ovs-vsctl add-port br1 vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=10.1.80.111

ovs-vsctl show

ip addr add 11.0.1.1/24 dev br1

  

2) 在node2上設置VXLAN,遠端ip設置為node1能對外通信的br0的ip。

ovs-vsctl add-port br1 vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=10.1.80.110

ovs-vsctl show

ip addr add 11.0.0.1/24 dev br1

  

4.4 驗證VXLAN隧道的可用性

兩台機器的br1互ping可以實現正常通信:

基於Open vSwitch的VXLAN隧道,實現了不同網段內網機器的通信。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM