zoukankan      html  css  js  c++  java
  • 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隧道,实现了不同网段内网机器的通信。

     

  • 相关阅读:
    python版本升级及pip部署方法
    Redis集群管理(二)
    UP UP UP!(dp)
    One Way Roads(搜索)
    Back to Underworld(搜索)
    队列链表实现以及有序表的合并
    第八届郑州轻工业学院ACM(程序设计大赛)校内预选赛
    Modulo Sum(背包 + STL)
    Co-prime Array&&Seating On Bus(两道水题)
    Hard Process(二分)
  • 原文地址:https://www.cnblogs.com/jinyuanliu/p/10362139.html
Copyright © 2011-2022 走看看