作者详细介绍了 nova-network FlatDHCPManager 组件,以及其他的 OpenStack 组件。Iptable 是一个用户空间应用程序,允许系统管理员配置由 Linux® 内核防火墙提供的表。
本文阐述了 OpenStack 用 iptables、链和规则处理联网的,这跟其他系统非常类似。但是首先,让我们先来看看 iptables 的结构,作为本文内使用技术的前奏。
iptable 的结构
iptable 是一个用户空间应用程序,允许系统管理员配置由 Linux 内核防火墙提供的表;iptable 专指 IPv4 网络。
要设置一个 Linux 防火墙,就要使用规则,每个规则指定在包中与什么匹配,以及对包执行什么操作。链 是一个规则列表。
Iptable 的前身 ipchains 增加规则链的概念;iptable 则将概念扩展为表。所以 iptable 的结构是:iptables > tables > chains > rules。
iptable 具有四个内置表:
Filter 表:默认表,具有如下链: INPUT 用于传到本地服务器的包。 OUTPUT 用于本地生成以及传出本地服务器的包。 FORWARD 用于通过本地服务器路由的包。 NAT 表(网络地址转换): PREROUTING:用于目的 NAT,它在路由前更改包 IP 地址。 POSTROUTING:用于源 NAT,它在路由前更改包 IP 地址。 OUTPUT:用于防火墙上本地生成包的 NAT。 Mangle 表:用于特定包的更改: PREROUTING OUTPUT FORWARD INPUT POSTROUTING Raw 表:用于配置免除: PREROUTING OUTPUT OpenStack 内的 iptable
在 OpenStack 内,您会在 Compute-Nova 模块中发现 iptable 链和规则占主导作用,该模块是使用 Python 编写并使用在多数外部库的云计算结构控制器(IaaS 系统的主要部分)。本文详细介绍了 nova-network FlatDHCPManager 组件以及其他联网任务所需的 OpenStack 组件。
在开始时,OpenStack 定义了一些 OpenStack 链。这些链与 Linux 内置链形成了一个链结构。启动时的另一个任务是为固定的网络范围和元数据服务定义一些规则。创建并使用网络后,nova-network 就会设置一些规则。当创建一个实例(也称为一个服务器和 VM)后,nova-compute 就会创建一个特定于实例的链并设置此链下的规则以确保实例的连接性。就浮动 IP 而言,OpenStack 也可使用一些规则以正常运行起来。此外,OpenStack 的安全性组及其规则是由 iptables 规则体现。
初识 OpenStack
OpenStack 是一个由开发者和云计算技术人员的全球协作开发的面向公共和私有云的标准云操作系统,是在 Apache 许可条款下发布的免费开源软件。云服务提供者、企业和政府组织均可使用这个免费的 Apache 许可的软件来构建可大规模伸缩的云环境。
OpenStack 目前包含六个核心软件项目:
Cloud Compute-Nova Cloud Storage-Swift Image Service-Glance(交付和注册) Identity Service-Keystone Dashboard-Horizon Network Connectivity-Quantum
这些项目以及充满活力的技术提供者和未来项目组成的生态系统带来了一个面向公共和私有云的可插入式的框架和操作系统。
Nova 项目内拥有 10 多个命令,其中的 3 个与 VM 连接性有关:
nova-api 为 VM 提供元数据服务。 nova-compute 为 VM 设置
网络环境。 nova-network 为整个云生态系统设置网络环境,如 IP 配置和 DHCP 设置等任务。
虽然 Nova 要求并与很多本机系统组件集成,用于数据库、消息接送功能和虚拟化功能,但它的模块主要由一组 Python 守护进程组成。它使用了一个特殊的元数据服务来使虚拟机实例检索特定于实例的数据。实例访问 http://169.254.169.254 处的元数据服务。
元数据包括公共 SSH 密钥(当用户请求一个新的实例时,由密钥/对标识),用户数据(作为 API 调用中的 user_data 参数进行传递,或是由 Nova 启动命令中的 --user_data 标记传递)。二进制的 nova-api 命令实现元数据服务。
OpenStack 是一套复杂组件集。要了解有关此系统的更多信息以及其他组件如何工作,可参考 参考资料 部分中给出的大量 OpenStack 资源。
在开始探讨 Nova 内的规则和链之前,让我们先来看看 IP 寻址的模式。