Docker+OpenvSwitch走進VxLAN的世界

一.概述html

1.環境:2臺linux機器(host1和host2),發行版是kali2.0,內核版本是 4.3 。每臺機器都安裝 Docker 、 OpenvSwitch (ovs)。linux

2.host1和host2分別啓動 1個ubuntu 的docker容器。git

3.網絡結構:github

3.1:host1的 eth0 : 192.168.2.1 ,host1裏面的docker容器ip地址是 10.1.2.3

3.2:host2的 eth0 : 192.168.2.2 ,host2裏面的docker容器ip地址是 10.1.2.4

3.3:host1和host2的eth0能夠ping通。

4. 目標是在2個不一樣宿主機的docker容器之間創建VxLAN隧道,讓它們能夠通訊 !docker

二.安裝基本軟件ubuntu

1.安裝docker並獲取ubuntu鏡像網絡

sudo apt-get install docket.io
 sudo docker pull ubuntu

2.安裝openvswitch和ovs的docker輔助腳本htm

sudo apt-get install openvswitch-switc
 //OpenvSwitch 項目提供的支持 Docker 容器的輔助腳本 ovs-docker
 wget https://github.com/openvswitch/ovs/raw/master/utilities/ovs-docker
 chmod a+x ovs-docker

三.配置ip

1.在host1上面用ovs建立一個虛擬網橋,並給網橋一個iprem

sudo ovs-vsctl add-br vxbr
 sudo ifconfig vxbr 10.1.2.1/24

2.給網橋添加一個vxlan類型的端口,remote_ip就是 host2的eth0 地址!!!

sudo ovs-vsctl add-port vxbr vxlan -- set interface vxlan type=vxlan options:remote_ip=192.168.2.2

3.啓動一個沒有以太網卡的docker容器

sudo docker run --net=none --privileged=true -it ubuntu

並記下這個容器的ID,我這裏是: b062406bc6b6 。此時在這個容器裏面ifconfig只能看到一個lo的設備。

4.給容器機指定一個eth0並綁定到宿主機的vxbr網橋

sudo ./ovs-docker add-port vxbr eth0 b062406bc6b6

此時回到容器裏面,ifconfig會看到出現了一個eht0。給它一個ip:

ifconfig eth0 10.1.2.3/24

5.查看ovs配置

sudo ovs-vsctl show

Docker+OpenvSwitch走進VxLAN的世界Docker+OpenvSwitch走進VxLAN的世界
咱們能夠看到vxbr網橋上面有 3個端口 ,一個是 本身跟本機通訊 (這裏是本機的eth0)的端口,一個是vxlan的端口,最後一個是 docker 容器機的eth0。

host2配置跟上面差很少,把host2的虛擬網橋vxbr改成10.1.2.2/24,vxlan的remote_ip改爲host1的192.168.2.1,host2的docker容器機ip改成10.1.2.4/24

四.驗證

此時的網絡結構:

host1的eth0:192.168.2. 1 ,vxbr:10.1.2. 1 ,docker容器機的eth0:10.1.2. 3 。docker容器的eth0在host1的vxbr上面。

host2的eth0:192.168.2. 2 ,vxbr:10.1.2. 2 ,docker容器機的eth0:10.1.2. 4 。docker容器的eth0在host2的vxbr上面。

在host1的docker容器機裏面ping host2的docker容器機, wireshark抓包 :

Docker+OpenvSwitch走進VxLAN的世界Docker+OpenvSwitch走進VxLAN的世界

能夠看到容器機之間的通訊 被封裝在一個UDP報文裏面 ,這個UDP的通訊是經過host1和host2的 eth0轉發 。

本文地址:http://www.linuxprobe.com/docker-openvswitch-vxlan.html

相關文章
相關標籤/搜索