FortiOS VM 运行于 Linux KVM 平台详解 v1.0 版本 1.0 时间支持的版本作者状态反馈 2016 年 3 月 FGT_VM64_KVM-v5-Buildxxxx 刘康明待审核 support_cn@fortinet.com
目录 简介... 3 KVM 介绍... 3 Linux KVM 环境... 3 安装 CentOS 7 用于搭建 KVM 平台... 4 CentOS 网络基础设置... 5 CentOS 修改 yum 源为国内 163 源... 7 为 CentOS 安装图形化管理桌面与 KVM GUI 管理工具... 7 FortiOS KVM 格式的 OS... 8 FortiGate KVM 机器的创建... 10 连接上本地 Hypervisor:QEMU/KVM... 10 选择需启动的 VM_OS 文件... 12 调整 Memory/CPU 资源... 13 在启动 VM 之前调整预定义设置... 15 最后启动 FGT_VM 机器... 17 FortiGate KVM 网卡桥接与业务测试... 18 宿主机 NIC 网卡使用规划... 19 FortiGate-KVM 主机网卡桥接 Passthrough 方式... 21 FortiGate-KVM 主机网卡桥接 Bridge 方式... 25 FortiGate-KVM 主机网卡桥接 其他桥接方式... 35 Fortinet 公司第 2 页 / 共 37 页 www.fortinet.com.cn
简介 FortiGate 拥有多种类型的 VM 系统, 主要包括 VMware/Hyper-V/KVM/XEN/AWS 等,FGT-VM-OS 可运行在多种虚拟化平台之上, 本文的内容主要针对在 KVM 平台 如何运行 Forti_VM_OS KVM 介绍 KVM Kernel-based Virtual Machine :KVM 是基于虚拟化扩展 (Intel VT/AMD-V) 的 X86 硬件, 是 Linux 完全原生的全虚拟化解决方案 KVM 本身不执行任何模拟, 需要用户空间应用程序 QEMU 通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间, 向它提供模拟的 I/O,KVM 模块实现处理器的虚拟化和内存虚拟化 在硬件虚拟化技术的支持下, 内核的 KVM 模块与 QEMU 的设备模拟协同工作, 构成一套和物理计算机系统完全一致的虚拟化计算机软硬件系统 Linux KVM 环境 Linux KVM 运行平台要求 : RHEL 7.1/Ubuntu 12.04 及之后版本 CentOS 6.4 (qemu 0.12.1) 及之后版本 CPU 要求 : CPU 需支持 Intel VT-x 或 AMD AMD-V, 且电脑 BIOS 中 enable 了 Intel VT-x 或 AMD AMD-V 查看 Linux 主机的 CPU 是否支持 KVM 方法 : Intel CPU:grep --color vmx /proc/cpuinfo AMD CPU:grep --color svm /proc/cpuinfo 通用命令 :egrep '(vmx svm)' /proc/cpuinfo 以上命令如果查看到了 vmx 或 svm 的关键字, 则说明 CPU 支持 KVM 平台运行 本文采用 CentOS7.0 用于 KVM 环境的搭建 Fortinet 公司第 3 页 / 共 37 页 www.fortinet.com.cn
使用 CentOS-7-x86_64-Everything-1503-01.iso 安装系统 附下载链接 : ed2k:// file CentOS-7-x86_64-Everything-1503-01.torrent 290297 3C55CE74AB4E3116BB25C37D7076A D3A h=3ppqajlocplvwmropjtq5qgskmwkafmn / 安装 CentOS 7 用于搭建 KVM 平台 本实验环境中使用 VMware 安装了 CentOS 7 系统, 注意在安装过程中 SOFTWARE SELECTION 选择的时候选择 Virtualization Host ( 该选项提供 KVM 和 Virtual Machine Manager 工具以创建用于 VM) Fortinet 公司第 4 页 / 共 37 页 www.fortinet.com.cn
CentOS 网络基础设置 配置 IP Address: #vim / etc/sysconfig/network-scripts/ifcfg-eno16777728 #service network restart 重启网络服务 Fortinet 公司第 5 页 / 共 37 页 www.fortinet.com.cn
配置 DNS: # /etc/networkmanager/networkmanager.conf 加一行 dns=none # systemctl restart NetworkManager.service # vim /etc/resolv.conf 配置 nameserver 202.106.0.20 nameserver 8.8.8.8 SSH 管理 CentOS 主机 : CentOS 机器 IP 192.168.90.94 地址生效, 于是可以通过 SSH 进行远程连接 关闭 SELINUX: 设置 selinux 为 disable Fortinet 公司第 6 页 / 共 37 页 www.fortinet.com.cn
#vim /etc/selinux/config # yum install ftp* 下载一个 FTP Client 用于下载 KVM-OS 文件到本地 CentOS 修改 yum 源为国内 163 源 #cd /etc/yum.repos.d #mv CentOS-Base.repo CentOS-Base.repo.bak # wget http://mirrors.163.com/.help/centos7-base-163.repo # mv CentOS7-Base-163.repo CentOS-Base.repo # yum clean all # yum makecache # yum update (update 需要很长的时间, 如非新机器不建议如此更新 ) 为 CentOS 安装图形化管理桌面与 KVM GUI 管理工具 #yum install xorg* gnome* tiger* -y #yum install virt-manager* -y #startx ( 以图形化桌面启动 ) Fortinet 公司第 7 页 / 共 37 页 www.fortinet.com.cn
在页面按步骤 Applications --> System Tools --> Virtual Machine Manager, 可找 到 KVM 虚拟机创建的 GUI 界面 FortiOS KVM 格式的 OS FortiGate_VM-OS: xxx.out: xxx.out 的 64 位 VM-OS 是用于升级已有的 FortiGate-VM 软件版本使用 Fortinet 公司第 8 页 / 共 37 页 www.fortinet.com.cn
如 : xxx.out.kvm.zip/xxx.deb.kvm.zip: xxx.out.kvm.zip/xxx.deb.kvm.zip 的 64 位软件包是用于一个新的 FortiGate VM 安装使用 其解压后得到 QCOW2 文件用于 QEMU 创建新 FortiGate_VM 如 : ( 本实验新建虚拟机使用此.out.kvm.zip 文件 ) 将 FGT_VM64_KVM-v5-build1011-FORTINET.out.kvm.zip 上载到 CentOS 系统中 ( 或 将解压之后 fortios.qcow2 上载到 CentOS 系统中 ) # ftp 192.168.112.23 (VM_OS 文件置于 FTP Server 上 ) # username # password # hash # bin # ls # get FGT_VM64_KVM-v5-build1011-FORTINET.out.kvm.zip # quit # unzip FGT_VM64_KVM-v5-build1011-FORTINET.out.kvm.zip ( 解压到当前目录 ) 解压 FGT_VM64_KVM-v5-build1011-FORTINET.out.kvm.zip 得到 fortios.qcow2, 用 Fortinet 公司第 9 页 / 共 37 页 www.fortinet.com.cn
于 FortiGate_VM 的启动文件 FortiGate KVM 机器的创建 连接上本地 Hypervisor:QEMU/KVM 点击 Connect, 需要输入 root 密码才能获取操作权限 Fortinet 公司第 10 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 11 页 / 共 37 页 www.fortinet.com.cn
选择需启动的 VM_OS 文件 Fortinet 公司第 12 页 / 共 37 页 www.fortinet.com.cn
OS Type Version Generic Generic 调整 Memory/CPU 资源 MEM/CPU 资源有 License 控制, 默认情况下 FGT_VM 只能使用 1G 内存,1 核 CPU 的资源 Fortinet 公司第 13 页 / 共 37 页 www.fortinet.com.cn
可按需要调整 Memory / CPUs 资源 Fortinet 公司第 14 页 / 共 37 页 www.fortinet.com.cn
在启动 VM 之前调整预定义设置 调整预配置, 如果使用完全默认的配置,FortiGate-VM 启动会报错, 需要调整 Disk Bus 和 NIC Devic mode 为 Virtio 驱动 Fortinet 公司第 15 页 / 共 37 页 www.fortinet.com.cn
默认情况下只有一个 NIC, 并且采用 NAT 的方式桥接, 对应 FGT-KVM 的 Port1 Fortinet 公司第 16 页 / 共 37 页 www.fortinet.com.cn
最后启动 FGT_VM 机器 启动 FAQ: 1. 启动 VM 主机的时候报错 Error connecting to graphical console: Error initializing USB support: Other errors[-99], 无法启动? 答 : 说明宿主机没有 USB 控制器 解决方法一 : 如果是宿主机是 VMware 机器则在硬件处选择安装 USB 控制器即可 解决方法二 : 或者在 KVM 机器的预配置里面将 Display 的 Type 项修改为 VNC server Fortinet 公司第 17 页 / 共 37 页 www.fortinet.com.cn
也可解决 2. FortiGate KVM 启动过程中报错? 答 :a.virtio Disk1 的扩展选项 Disk BUS 是默认的 IDE, 需要修改为 Virtio b.nic 的 Device Model 是默认的 rtl8139, 需要修改为 virtio c.mem/cpu 分配大于 1G/1 cpu, 受 license 限制只能默认只能 1G/1 cpu FortiGate KVM 网卡桥接与业务测试 根据上述操作启动的 FortiGate-KVM 主机, 只有一个 Port1 并且是使用 NAT 方式桥接的网卡 而实际使用或测试中以上的网卡桥接方式并不十分常规, 因此我们需要重新规划一下 FortiGate-VM 的网卡桥接, 将宿主机的两个独立运行的 NIC 分别于 FortiGate-KM 的 Port1 和 Port2 进行非 NAT 的桥接 如下图所示 : IP 202.1.1.100 GW 202.1.1.1 Outside_NIC 桥接 Inside_NIC 桥接 Port1 202.1.1.1 CentOS 7 Port2 10.10.10.1 IP 10.10.10.100 GW 10.10.10.1 FGT-KVM Outside_NIC < - 对应 -> FGT-KVM Port1 Inside_NIC < - 对应 -> FGT-KVM Port2 逻辑拓扑如下 : IP 202.1.1.100 GW 202.1.1.1 Port1 202.1.1.1 FGT-KVM Port2 10.10.10.1 IP 10.10.10.100 GW 10.10.10.1 Fortinet 公司第 18 页 / 共 37 页 www.fortinet.com.cn
宿主机 NIC 网卡使用规划 右击 QEMU/KVM 选择 Details Fortinet 公司第 19 页 / 共 37 页 www.fortinet.com.cn
实际网卡的名字 :Inside_NIC 和 Outside_NIC 是怎么来的? 为了方便标识网卡的用途, 可以修改网卡的 Device Name, 修改方法 : vim/ etc/sysconfig/network-scripts/ifcfg-eno16777736( 原始网卡信息 ) 添加一行 :DEVICE=Outside_NIC, 然后重启网络服务或者重启设备 Fortinet 公司第 20 页 / 共 37 页 www.fortinet.com.cn
FortiGate-KVM 主机网卡桥接 Passthrough 方式 右击 KVM 主机 选择 Open Fortinet 公司第 21 页 / 共 37 页 www.fortinet.com.cn
配置 NIC 为 Outside_NIC:macvtap,Source mode:passthrough, 同时选择 virtio 的驱动方式 对应的接口为 FGT-KVM 的 Port1 再添加一个物理 NIC, 配置方式和第一个 NIC 一致 对应的接口为 FGT-KVM 的 Port2 Passthrough 方式 : 物理网卡独占的方式桥接, 物理 NIC 直接分配给 KVM 机器使用, 不能做其他用途, 优点是性能非常高, 几乎没有损耗 Fortinet 公司第 22 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 23 页 / 共 37 页 www.fortinet.com.cn
PC 1 ping PC2 测试连通性 : Fortinet 公司第 24 页 / 共 37 页 www.fortinet.com.cn
FortiGate-KVM 主机网卡桥接 Bridge 方式 首先通过 virt-manager 创建 Bridge 接口, 然后将物理接口加入到 Bridge 接口, 类似于交换机中创建一个 VLAN, 然后将物理接口加入到 VLAN 中 1. 创建 Bridge 接口 1 :Outside_Br1 然后将 Outside_NIC 物理接口加入到 Outside_Br1 2. 创建 Bridge 接口 2: Inside_Br1 然后将 Inside_NIC 物理接口加入到 Inside_Br1 Bridge 方式 :Linux 系统创建一个 Bridge 接口, 然后将物理真实 NIC 和 KVM 主机的 NIC 都加入到这个 Bridge 中, 类似于接入到相同的一台二层交换机上, 于是实现了 Bridge 的作用, 优点是 KVM 机器的 NIC 网卡和真实物理网卡可以独立的使用, 互不干扰 这种桥接方式配置起来稍微显得复杂了些 Fortinet 公司第 25 页 / 共 37 页 www.fortinet.com.cn
创建 Outside_Br1 接口, 将 Outside_NIC 加入其中 Fortinet 公司第 26 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 27 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 28 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 29 页 / 共 37 页 www.fortinet.com.cn
创建完毕两个 Bridge 接口后在 Linux 内核可以看到相应的 Bridge 接口, 此时相当于在 Linux 上创建了两个 Bridge 接口, 然后将物理接口加入到了 Bridge 接口里面 : Fortinet 公司第 30 页 / 共 37 页 www.fortinet.com.cn
最后进行 Forti_KVM 机器 NIC 网卡与 Bridge 的桥接 Fortinet 公司第 31 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 32 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 33 页 / 共 37 页 www.fortinet.com.cn
Fortinet 公司第 34 页 / 共 37 页 www.fortinet.com.cn
PC 1 ping PC2 测试连通性 : FortiGate-KVM 主机网卡桥接 其他桥接方式 Macvtap 包括 :Bridge VEPA Private Passthrough 四种桥接形式, 在实际部署 Fortinet 公司第 35 页 / 共 37 页 www.fortinet.com.cn
环境中应用最多的还是 Macvtap, 其拥有一套完善的 VM 内部数据转发的理论基础, 可以很好的解决 VM 与外界通讯的连接与数据转发问题 MacVTap 工作模式 1. VEPA 同一物理网卡下的 MacVTap 设备之间的流量也要发送到外部交换机再由外部交换机转发回服务器, 前提是交换机必须支持 hairpin 模式 2. Bridge 同一物理网卡下的 MacVTap 设备可以直接进行以太网帧交换, 不需要外部交换机介入 3. private 同一物理网卡下的 MacVTap 设备互相无法联通, 无论外部交换机支不支持 hairpin 模式 MacVTap 的相关理论信息可参考以下网址 : Fortinet 公司第 36 页 / 共 37 页 www.fortinet.com.cn
http://virt.kernelnewbies.org/macvtap http://www.ibm.com/developerworks/cn/linux/1312_xiawc_linuxvirtnet/ 参考文档资料 : FortiOS Handbook 5.4 http://docs.fortinet.com/fortigate/admin-guides/v5.4 Whats New in FortiOS 5.4 docs.fortinet.com/d/fortigate-whats-new-in-fortios-5.4 Fortinet 公司第 37 页 / 共 37 页 www.fortinet.com.cn