本文介绍了OpenStack如何通过iptables,链和规则处理网络,这与其他系统非常相似。 但是首先,让我们看一下iptables的结构,作为本文中使用的技术的更新。
iptable结构
iptable是一个用户空间应用程序,它使系统管理员可以配置Linux内核防火墙提供的表。 iptable专门指IPv4。
要设置Linux防火墙,将使用规则,每个规则都指定一个数据包中要匹配的内容以及如何处理该数据包。 链是规则列表。
iptables的前身ipchains添加了规则链的概念。 iptables将其进一步扩展到表中。 因此,iptables的结构为:iptables>表>链>规则。
iptable有四个内置表:
- 过滤器表 :具有以下链的默认表:
- 输入到本地服务器的数据包。
- OUTPUT,用于本地生成并从本地服务器输出的数据包。
- FORWARD用于通过本地服务器路由的数据包。
- NAT表 (网络地址转换):
- PREROUTING:用于目标NAT,它将在路由之前更改数据包的IP地址。
- POSTROUTING:用于源NAT,它在路由后更改数据包的IP地址。
- 输出:防火墙上本地生成的数据包的NAT。
- 乱码表 :对于专用数据包更改:
- 展示
- 输出值
- 前锋
- 输入
- 后伸
- 原始表 :对于配置豁免:
- 展示
- 输出值
OpenStack中的iptable
在OpenStack中,您将主要在Cloud Compute-Nova模块中找到iptable链和规则,Cloud Compute-Nova模块是使用Python编写的使用许多外部库的云计算结构控制器(IaaS系统的主要部分)。 本文详细介绍了联网任务所需的nova-network FlatDHCPManager组件以及其他OpenStack组件。
启动时,OpenStack会定义一些OpenStack链。 这些链与Linux的内置链形成链结构。 启动时的另一项任务是为固定网络范围和元数据服务定义一些规则。 创建并使用网络后,nova-network会设置一些规则。 创建一个实例(也称为服务器和VM)后,nova-compute将创建一个特定于实例的链,并在该链下设置规则以确保实例的连接性。 关于浮动IP,OpenStack还使用一些规则使其工作。 此外,OpenStack的安全组及其规则由iptables规则体现。
OpenStack入门
OpenStack是开发人员和云计算技术人员的全球合作,为公共云和私有云提供开放标准的云操作系统,它是根据Apache许可条款发布的免费开源软件。 云服务提供商,企业和政府组织可以利用免费的,Apache许可的软件来构建可大规模扩展的云环境。
OpenStack当前包含六个核心软件项目:
- 云计算新手
- 云存储快速
- 图像服务概览(交付和注册)
- 身份服务重点
- 仪表盘-地平线
- 网络连接-量子
这些项目以及充满活力的技术提供商生态系统和未来的项目,为公共云和私有云提供了可插拔的框架和操作系统。
Nova项目中有10多个二进制文件,其中3个与VM连接有关:
- nova-api为VM提供元数据服务。
- nova-compute为虚拟机设置网络环境。
- nova-network为整个云生态系统设置网络环境,并执行IP分配,DHCP设置等任务。
Nova模块主要由一组Python守护程序组成,尽管它需要并与许多本机系统组件集成,以实现数据库,消息传递和虚拟化功能。 它使用特殊的元数据服务使虚拟机实例能够检索特定于实例的数据。 实例访问位于http://169.254.169.254的元数据服务。
元数据包括公共SSH密钥(在用户请求新实例时由密钥/对名称标识),用户数据(在API调用中作为user_data
参数传递或在Nova boot命令中通过--user_data
标志--user_data
)。 二进制nova-api实现元数据服务。
OpenStack是一组复杂的组件。 要了解有关系统以及其他组件之一如何工作的更多信息,请遵循“ 相关主题”部分中大量的OpenStack资源。
在介绍Nova中的规则和链之前,让我们看一下IP寻址模式。