专项技能训练五《云计算网络技术与应用》实训8-1:建立基于OpenvSwitch的GRE隧道

文章目录

  • 建立基于OpenvSwitch的GRE隧道
        • [1. 使用VMware安装2个CentOS 7虚拟机,安装时记得都开启CPU虚拟化,第一台命名为"Docker",第二台命名为"KVM"。](#1. 使用VMware安装2个CentOS 7虚拟机,安装时记得都开启CPU虚拟化,第一台命名为“Docker”,第二台命名为“KVM”。)
        • [2. 安装完虚拟机后,进入虚拟机,修改网络配置(onboot改为yes)并重启网络服务,查看相应IP地址,并使用远程连接软件进行连接。](#2. 安装完虚拟机后,进入虚拟机,修改网络配置(onboot改为yes)并重启网络服务,查看相应IP地址,并使用远程连接软件进行连接。)
        • [3. 把老师所给Packages包、centos的docker镜像以及cirros镜像使用winSCP传送至虚拟机(centos6.5传送至docker虚拟机,cirros传送至KVM虚拟机),并解压Packages包至/opt目录下。](#3. 把老师所给Packages包、centos的docker镜像以及cirros镜像使用winSCP传送至虚拟机(centos6.5传送至docker虚拟机,cirros传送至KVM虚拟机),并解压Packages包至/opt目录下。)
        • [4. 两台虚拟机都配置默认镜像yum源,并且把Packages包也一起配置到本地yum源当中。](#4. 两台虚拟机都配置默认镜像yum源,并且把Packages包也一起配置到本地yum源当中。)
        • [5. 修改主机名,方便区分。第一台虚拟机(命名为Docker那台)修改主机名为docker,第二台虚拟机(命名为KVM那台)修改主机名为kvm。如下图所示。](#5. 修改主机名,方便区分。第一台虚拟机(命名为Docker那台)修改主机名为docker,第二台虚拟机(命名为KVM那台)修改主机名为kvm。如下图所示。)
    • 配置虚拟机Docker
        • [6. 修改网络配置,新增一行NM_CONTROLLER=no,如下图所示:](#6. 修改网络配置,新增一行NM_CONTROLLER=no,如下图所示:)
        • [7. 关闭防火墙](#7. 关闭防火墙)
        • [8. 开启内核转发](#8. 开启内核转发)
        • [9. 安装openvswitch、bridge-utils、tunctl、docker-io服务](#9. 安装openvswitch、bridge-utils、tunctl、docker-io服务)
        • [10. 更新下路由,看是否有最新路由版本。](#10. 更新下路由,看是否有最新路由版本。)
        • [11. 启动openvswitch服务以及docker服务。](#11. 启动openvswitch服务以及docker服务。)
        • [12. 检查OVS是否安装好。](#12. 检查OVS是否安装好。)
        • [13. 创建br0网桥,并创建名字为br-int的OVS开放虚拟交换机,并重启网络。](#13. 创建br0网桥,并创建名字为br-int的OVS开放虚拟交换机,并重启网络。)
        • [14. 安装net-tools,并给br0设置地址为30.1.0.1/24](#14. 安装net-tools,并给br0设置地址为30.1.0.1/24)
        • [15. 把br0桥接到br-int上](#15. 把br0桥接到br-int上)
        • [17. 在OVS交换机br-int上创建gre接口,地址指向kvm虚拟机IP](#17. 在OVS交换机br-int上创建gre接口,地址指向kvm虚拟机IP)
        • [18. 启动br0和br-int;](#18. 启动br0和br-int;)
        • [19. 添加一条路由信息,使30.2.0.0网段的路由指向kvm虚拟机的ens33网卡](#19. 添加一条路由信息,使30.2.0.0网段的路由指向kvm虚拟机的ens33网卡)
        • [20. 修改docker配置信息。配置完成后启动docker。](#20. 修改docker配置信息。配置完成后启动docker。)
        • [21. 把开始上传的镜像包导入docker,并添加tag。](#21. 把开始上传的镜像包导入docker,并添加tag。)
        • [22. 启动docker,并查看docker的CONTAINER ID](#22. 启动docker,并查看docker的CONTAINER ID)
        • [23. 进入docker,查看docker的IP](#23. 进入docker,查看docker的IP)
    • 配置虚拟机KVM
        • [24. 进入网络配置目录,复制一个网络配置文件,命名为ifcfg-br-ex,并修改其配置,如下图所示](#24. 进入网络配置目录,复制一个网络配置文件,命名为ifcfg-br-ex,并修改其配置,如下图所示)
        • [25. 修改ens33网卡配置,如下图所示](#25. 修改ens33网卡配置,如下图所示)
        • [25. 关闭防火墙规则](#25. 关闭防火墙规则)
        • [26. 开启内核转发](#26. 开启内核转发)
        • [27. 关闭防火墙](#27. 关闭防火墙)
        • [28. 更新路由到最新版本](#28. 更新路由到最新版本)
        • [28. 安装openvswitch、qemu-kvm、libvirt、dnsmasq、net-tools服务](#28. 安装openvswitch、qemu-kvm、libvirt、dnsmasq、net-tools服务)
        • [29. 开启openvswitch服务,并新建br-int虚拟交换机](#29. 开启openvswitch服务,并新建br-int虚拟交换机)
        • [30. 给br-int设置ip地址为30.2.0.1/24并开启,添加br-ex网桥,把ens33嫁接到br-ex网桥上并重启网络。](#30. 给br-int设置ip地址为30.2.0.1/24并开启,添加br-ex网桥,把ens33嫁接到br-ex网桥上并重启网络。)
        • [31. 在br-int上新添加gre接口,使其指向docker虚拟宿主机](#31. 在br-int上新添加gre接口,使其指向docker虚拟宿主机)
        • [32. 新增一条路由信息,指向docker虚拟宿主机的IP地址](#32. 新增一条路由信息,指向docker虚拟宿主机的IP地址)
        • [33. 配置dnsmasq;](#33. 配置dnsmasq;)
        • [34. 重新启动dnsmasq;](#34. 重新启动dnsmasq;)
        • [35. 新建ovs-ifup和if-down脚本。](#35. 新建ovs-ifup和if-down脚本。)
        • [36. 给两个脚本赋予执行权限](#36. 给两个脚本赋予执行权限)
        • [37. 为防止冲突,删除tap0接口](#37. 为防止冲突,删除tap0接口)
        • [38. 启动kvm虚拟机](#38. 启动kvm虚拟机)
        • [39. 使用给的账号密码登录进入](#39. 使用给的账号密码登录进入)
        • [40. 查看kvm虚拟机ip地址](#40. 查看kvm虚拟机ip地址)
    • 测试连通性
        • [1.kvm虚拟宿主机ping docker虚拟宿主机网桥br0的IP(30.1.0.1),证明两个主机间连通。](#1.kvm虚拟宿主机ping docker虚拟宿主机网桥br0的IP(30.1.0.1),证明两个主机间连通。)
        • [2.docker虚拟宿主机ping kvm虚拟宿主机网桥br0的IP(30.2.0.1),证明两个主机间连通。](#2.docker虚拟宿主机ping kvm虚拟宿主机网桥br0的IP(30.2.0.1),证明两个主机间连通。)
        • [3.docker中ping kvm虚拟宿主机IP。](#3.docker中ping kvm虚拟宿主机IP。)
        • [4.docker中ping docker宿主机IP。](#4.docker中ping docker宿主机IP。)
        • 5.kvm虚拟机中ping通docker
        • 6.docker虚拟机中ping通kvm

建立基于OpenvSwitch的GRE隧道

实验前准备:编辑虚拟机网络配置,使VMnet8处在192.168.10.0网段。

1. 使用VMware安装2个CentOS 7虚拟机,安装时记得都开启CPU虚拟化,第一台命名为"Docker",第二台命名为"KVM"。
2. 安装完虚拟机后,进入虚拟机,修改网络配置(onboot改为yes)并重启网络服务,查看相应IP地址,并使用远程连接软件进行连接。
3. 把老师所给Packages包、centos的docker镜像以及cirros镜像使用winSCP传送至虚拟机(centos6.5传送至docker虚拟机,cirros传送至KVM虚拟机),并解压Packages包至/opt目录下。



4. 两台虚拟机都配置默认镜像yum源,并且把Packages包也一起配置到本地yum源当中。

镜像yum源配置教程详见:CentOS如何配置本地yum源

Packages包本地yum源配置详见:实训5-1

5. 修改主机名,方便区分。第一台虚拟机(命名为Docker那台)修改主机名为docker,第二台虚拟机(命名为KVM那台)修改主机名为kvm。如下图所示。

docker那台:

KVM那台:

配置虚拟机Docker

6. 修改网络配置,新增一行NM_CONTROLLER=no,如下图所示:



7. 关闭防火墙
8. 开启内核转发

小知识:为什么我们需要开启内核转发?

linux服务器经常被用来提供防火墙、路由器、NAT等功能,在这些场景下,linux内核需要将网卡上收到的报文转发给其他网络设备。linux内核提供了ip_forward参数用于开关内核的报文转发功能,只有这个开关被打开时,内核才会执行报文的转发。

9. 安装openvswitch、bridge-utils、tunctl、docker-io服务


10. 更新下路由,看是否有最新路由版本。
11. 启动openvswitch服务以及docker服务。


12. 检查OVS是否安装好。
13. 创建br0网桥,并创建名字为br-int的OVS开放虚拟交换机,并重启网络。


14. 安装net-tools,并给br0设置地址为30.1.0.1/24


15. 把br0桥接到br-int上
17. 在OVS交换机br-int上创建gre接口,地址指向kvm虚拟机IP
bash 复制代码
ovs-vsctl add-port br-int gre0 -- set interface gre0 type=gre options:remote_ip=192.168.10.*(这里为KVM宿主机IP地址)
18. 启动br0和br-int;
19. 添加一条路由信息,使30.2.0.0网段的路由指向kvm虚拟机的ens33网卡
bash 复制代码
ip route add 30.2.0.0/24 via 192.168.10.*(这里为kvm虚拟宿主机IP地址) dev ens33
20. 修改docker配置信息。配置完成后启动docker。



21. 把开始上传的镜像包导入docker,并添加tag。
22. 启动docker,并查看docker的CONTAINER ID
23. 进入docker,查看docker的IP

配置虚拟机KVM

24. 进入网络配置目录,复制一个网络配置文件,命名为ifcfg-br-ex,并修改其配置,如下图所示


25. 修改ens33网卡配置,如下图所示


25. 关闭防火墙规则
26. 开启内核转发
27. 关闭防火墙

(执行 setenforce 0 时,它会关闭 SELinux 防火墙。SELinux 是一个内核模块,它提供了访问控制安全策略,以防止未授权的进程访问系统资源。)

28. 更新路由到最新版本
28. 安装openvswitch、qemu-kvm、libvirt、dnsmasq、net-tools服务



29. 开启openvswitch服务,并新建br-int虚拟交换机
30. 给br-int设置ip地址为30.2.0.1/24并开启,添加br-ex网桥,把ens33嫁接到br-ex网桥上并重启网络。


31. 在br-int上新添加gre接口,使其指向docker虚拟宿主机
bash 复制代码
ovs-vsctl add-port br-int gre0 -- set interface gre0 type=gre options:remote_ip=192.168.10.*(这里为docker虚拟宿主机的IP地址)
32. 新增一条路由信息,指向docker虚拟宿主机的IP地址
33. 配置dnsmasq;
bash 复制代码
/usr/sbin/dnsmasq --strict-order --bind-interfaces --interface=br-int --except-interface=lo --pid-file=/var/run/qdhcp.pid --leasefile-ro --dhcp-range=30.2.0.3,30.2.0.254,255.255.255.0,12h --conf-file=
34. 重新启动dnsmasq;
35. 新建ovs-ifup和if-down脚本。



36. 给两个脚本赋予执行权限
37. 为防止冲突,删除tap0接口
38. 启动kvm虚拟机
bash 复制代码
/usr/libexec/qemu-kvm -m 512 -drive file=cirros-0.3.3-x86_64-disk.img,if=virtio -net nic,model=virtio -net tap,script=ovs-ifup -nographic -vnc :1 
39. 使用给的账号密码登录进入
40. 查看kvm虚拟机ip地址

测试连通性

1.kvm虚拟宿主机ping docker虚拟宿主机网桥br0的IP(30.1.0.1),证明两个主机间连通。
2.docker虚拟宿主机ping kvm虚拟宿主机网桥br0的IP(30.2.0.1),证明两个主机间连通。
3.docker中ping kvm虚拟宿主机IP。
4.docker中ping docker宿主机IP。
5.kvm虚拟机中ping通docker
6.docker虚拟机中ping通kvm
相关推荐
debug 小菜鸟5 小时前
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
docker·云计算·aws
云道轩7 小时前
升级centos 7.9内核到 5.4.x
linux·运维·centos
是小满满满满吗7 小时前
传输层:udp与tcp协议
linux·服务器·网络
小刘同学++7 小时前
ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途
网络·ssl
gadiaola8 小时前
【计算机网络】第3章:传输层—TCP 拥塞控制
网络·网络协议·tcp/ip·计算机网络
猎板PCB厚铜专家大族8 小时前
多层PCB技术解析:从材料选型到制造工艺的深度实践
网络·制造
FakeOccupational10 小时前
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
网络·游戏
fei_sun12 小时前
【计算机网络】三报文握手建立TCP连接
网络·tcp/ip·计算机网络
Johny_Zhao12 小时前
2025年6月Docker镜像加速失效终极解决方案
linux·网络·网络安全·docker·信息安全·kubernetes·云计算·containerd·yum源·系统运维
PypYCCcccCc12 小时前
支付系统架构图
java·网络·金融·系统架构