源网络地址转换 (SNAT)
概述
源网络地址转换(源 nat 或 SNAT)允许来自专用网络的流量流向互联网。在专用网络上启动的虚拟机可以通过能够执行 SNAT 的网关访问互联网。网关在公共网络上有一个臂,作为 SNAT 的一部分,它将原始数据包的源 IP 替换为自己的公共端 IP。作为 SNAT 的一部分,还会更新源端口,以便多个 VM 可以通过单个网关公共 IP 访问公用网络。
下图显示了专用子网为 10.1.1.0/24 的虚拟网络。虚拟网络的默认路由指向 SNAT 网关。网关替换 10.1.1.0/24 中的源 ip,并将其公共地址 172.21.1.1 用于传出数据包。为了保持唯一的 NAT 会话,还需要更换流量的源端口。
充当数据中心网关的 MX 系列路由器上的 SNAT
从 Contrail 网络版本 2011.L1 开始,当 MX 系列路由器以交换矩阵角色运行 DC-Gateway 时,您可以使用 MS-MPC 线卡在 MX 系列路由器上启用 SNAT。请参阅 Contrail 网络支持的硬件平台以及关联的角色和节点配置文件 ,查看支持或任何其他 DC-Gateway 交换矩阵角色的 MX 系列路由器的列表。
在 MX 系列路由器上启用 SNAT 后,可以使用它从裸机服务器上的物理接口和虚拟机上的虚拟接口转换源 IP 地址。SNAT 只能转换离开交换矩阵的源流量的 IP 地址;它不能用于转换进入交换矩阵的流量的 IP 地址。
有关 MX 系列路由器上的 SNAT 的其他信息,请参阅 网络地址转换概述。
如何使用 Contrail 命令在 MX 系列路由器上启用 SNAT
要通过 Contrail 命令在 MX 系列路由器上启用 SNAT,请执行以下操作:
用于路由器的 Neutron API
OpenStack 通过其用于路由器的 Neutron API 支持 SNAT 网关实施。可以在路由器的外部网关上启用或禁用 SNAT 标志。默认值为 True(启用)。
Tungsten Fabric插件支持路由器的Neutron API,并在API服务器中创建相关的服务模板和服务实例对象。Tungsten Fabric 中的服务调度程序在随机选择的虚拟路由器上实例化网关。Tungsten Fabric 使用网络命名空间来支持此功能。
示例配置:用于 Contrail 的 SNAT
SNAT 功能通过 Neutron API 调用在 Tungsten Fabric 上启用。
以下配置示例演示如何创建测试网络和公网,允许测试网络通过 SNAT 网关到达公有域。
网络Namespace
设置外部网关是 Tungsten Fabric 为 SNAT 设置 Linux 网络命名空间的触发器。
可以通过发出以下 Neutron 命令来清除网络命名空间:
neutron router-gateway-clear r1
SNAT 和安全组
启用逻辑路由器支持 SNAT 后,默认安全组会自动应用于左侧 SNAT 接口。当互连的虚拟机使用默认安全组时,默认安全组的这种自动应用允许虚拟机发送和接收流量,而无需其他用户配置。但是,当虚拟机连接到未使用默认安全组的虚拟机时,需要其他配置才能发送和接收流量。
如果要将虚拟机连接到未使用默认安全组的虚拟机,则必须进行以下配置更新之一,以允许虚拟机传递流量:
更新默认安全组以添加允许 VM 流量的规则。
将规则更新到 VM 安全组以允许来自默认安全组的流量。
将同一安全组应用于虚拟机和 SNAT 左侧接口。
有关在使用 Contrail 网络的环境中配置安全组的信息,请参阅将 安全组与虚拟机实例配合使用。
使用 Web UI 通过 SNAT 配置路由器
您可以使用 Contrail 用户界面为 SNAT 配置路由器并检查路由器的 SNAT 状态。
若要为路由器启用 SNAT,请转到 配置>网络>路由器。在路由器列表中,选择应为其启用 SNAT 的路由器。单击编辑齿轮以显示 编辑路由器 窗口。单击 SNAT 复选框以在路由器上启用 SNAT。
下面显示了已启用 SNAT 的路由器。
为 SNAT 启用 路由器后,可以通过选择“ 配置>网络>路由器”来查看配置。在路由器列表中,单击打开感兴趣的路由器。在该路由器的功能列表中,列出了 SNAT 的状态。下面显示了已在列表中打开的路由器。路由器的状态显示“ SNAT ”为“已启用”。
您可以通过查看实例控制台,查看SNAT路由器的实时状态,如下所示。
使用 Web UI 配置分布式 SNAT
分布式 SNAT 功能允许虚拟机使用现有的转发基础结构与 IP 交换矩阵网络进行通信,以实现计算节点连接。此功能是通过使用计算节点的 IP 地址作为公共地址对虚拟机流量进行端口地址转换来实现的。
支持以下分布式 SNAT 用例:
启用了分布式 SNAT 的虚拟网络可以与 IP 交换矩阵网络通信。会话必须从虚拟机启动。不支持从外部网络启动的会话。
分布式 SNAT 仅支持 TCP 和 UDP,你可以为这两种协议配置离散端口范围。
端口池用于分布式 SNAT。若要创建端口池,请转到 “全局配置”>“配置基础结构”>。下面显示了用于端口地址转换的端口范围的示例。
若要使用分布式 SNAT,必须在虚拟网络上启用 SNAT。若要在虚拟网络上启用 SNAT,请转到 配置>网络>网络。下面显示了在“高级选项”下已启用 SNAT 的虚拟网络。