Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

源网络地址转换 (SNAT)

概述

源网络地址转换(源 nat 或 SNAT)允许来自专用网络的流量流向互联网。在专用网络上启动的虚拟机可以通过能够执行 SNAT 的网关访问互联网。网关在公共网络上有一个臂,作为 SNAT 的一部分,它用自己的公共端 IP 替换始发数据包的源 IP。作为 SNAT 的一部分,源端口也会更新,以便多个虚拟机可以通过单个网关公共 IP 访问公共网络。

下图显示了私有子网为 10.1.1.0/24 的虚拟网络。虚拟网络的默认路由点到 SNAT 网关。网关取代 10.1.1.0/24 中的 source-ip,并对其传出数据包使用公共地址 172.21.1.1。为了保持独特的 NAT 会话,还需要更换流量的源端口。

图 1:具有专用子网 Virtual Network With a Private Subnet的虚拟网络

用作数据中心网关的 MX 系列路由器上的 SNAT

从 Contrail 网络 2011.L1 版开始,当 MX 系列路由器发挥交换矩阵作用时,您可以使用 MS-MPC 线卡在 MX 系列路由器DC-Gateway上启用 SNAT。有关支持DC-Gateway该或任何其他交换矩阵角色的 MX 系列路由器列表,请参阅 Contrail 网络支持的硬件平台和相关角色和节点配置文件

在 MX 系列路由器上启用 SNAT 后,它可用于转换裸机服务器上的物理接口和虚拟机上的虚拟接口的源 IP 地址。SNAT 只能转换离开交换矩阵的源流量的 IP 地址;它不能用于转换进入交换矩阵的流量的 IP 地址。

有关 MX 系列路由器上的 SNAT 的更多信息,请参阅 网络地址转换概述

如何使用 Contrail 命令在 MX 系列路由器上启用 SNAT

要通过 Contrail Command 在 MX 系列路由器上启用 SNAT:

  1. 请确保使用 MX 系列路由器的交换矩阵,并配备一个或多个 MS-MPC 线卡,已配置为 DC-Gateway 交换矩阵中的交换矩阵角色。

    请参阅 焦点:如何入网交换矩阵并创建叠加以 设置交换矩阵。

    请参阅 为设备分配角色 ,以更改设备在交换矩阵中的路由角色。

  2. 单击 Infrastructure > Fabrics > fabric-name 以导航至交换矩阵中的设备。将 mx-router-name 鼠标悬停在交换矩阵中配置为 DC 网关的路由器上,该路由器将执行 SNAT。单击位于路由器最右侧最后一个选项的省略号 (...) 按钮,然后选择 Edit

    页面随即 Fabric Device 打开。

  3. Fabric Device 页面上,打开 Netconf Settings

    Junos Service Interface 字段中,添加 MX 系列路由器中的服务接口名称( ms-1/0/0例如)。

  4. (仅需要 SNAT 的 BMS 接口)创建虚拟端口组 (VPG),用于将 VLAN 映射到裸机服务器 (BMS) 上的物理接口。请参阅 配置虚拟端口组

    在此过程中的后期将使用 VPG 来识别需要使用 SNAT 进行 IP 地址转换的流量。

    只有这一步才能识别 BMS 主机上的源 IP 地址。使用 SNAT 从虚拟机接口转换源 IP 地址时,您可以跳过这一步。

  5. 为 SNAT 创建公共逻辑路由器。请参阅 创建逻辑路由器

    逻辑路由器在>> Logical Routers Edit Logical Router菜单中配置Overlay。在此菜单中,使用以下配置参数:

    • connected networks 字段:添加为承载流量而创建的虚拟网络。

      这些虚拟网络中的流量将使用 SNAT 进行转换。

    • Public Logical Router 复选框:选择相应复选框。

      将显示 SNAT POOL 下拉菜单。选择 snat_pool

    • Extend to Physical Router 字段:在可执行基于源的 IP 地址转换的交换矩阵中添加 MX 系列路由器。

  6. 要完成配置后监控 SNAT,请登录 MX 系列路由器并输入以下 JUNOS 命令:
    • show configuration 以验证 JUNOS 中的 NAT 配置。

    • show services nat pool 来验证转换。

    • 监控系统消息。

    有关在 Junos 中使用和监控 NAT 的更多信息,请参阅《 网络地址转换用户指南》。

适用于路由器的 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 网关访问公共域。

  1. 创建公共网络并设置路由器外部标志。

    neutron net-create public

    neutron subnet-create public 172.21.1.0/24

    neutron net-update public -- --router:external=True

  2. 创建测试网络。

    neutron net-create test

    neutron subnet-create --name test-subnet test 10.1.1.0/24

  3. 创建一个测试接口的路由器。

    neutron router-create r1

    neutron router-interface-add r1 test-subnet

  4. 设置路由器的外部网关。

    neutron router-gateway-set r1 public

网络名称空间

设置外部网关是 Tungsten Fabric 为 SNAT 设置 Linux 网络命名空间的触发因素。

通过发出以下 Neutron 命令,可以清除网络命名空间:

neutron router-gateway-clear r1

SNAT 和安全组

启用逻辑路由器以支持 SNAT 后,会自动将默认安全组应用于左侧 SNAT 接口。当互连的虚拟机使用默认安全组时,这种默认安全组的自动应用允许虚拟机发送和接收流量,而无需额外的用户配置。但是,当虚拟机连接到不使用默认安全组的虚拟机时,需要进行其他配置来发送和接收流量。

如果要将虚拟机连接到未使用默认安全组的虚拟机,则必须进行以下配置更新之一,以允许虚拟机传递流量:

  • 更新默认安全组以添加允许虚拟机流量的规则。

  • 将规则更新到 VM 安全组,以允许来自默认安全组的流量。

  • 将同一安全组应用于虚拟机和 SNAT 左接口。

有关在使用 Contrail 网络的环境中配置安全组的信息,请参阅 将安全组用于虚拟机实例

使用 Web UI 通过 SNAT 配置路由器

您可以使用 Contrail 用户界面为 SNAT 配置路由器,并检查路由器的 SNAT 状态。

要为路由器启用 SNAT,请转至 配置>网络>路由器。在路由器列表中,选择应启用 SNAT 的路由器。单击编辑 Cog 以显示 编辑路由器 窗口。单击 SNAT 的复选框,在路由器上启用 SNAT。

下面 显示了已启用 SNAT 的路由器。

图 2:编辑路由器窗口以启用 SNAT Edit Router Window to Enable SNAT

为 SNAT 启用路由器后,可以选择“配置>网络>路由器”来查看配置。在路由器列表中,单击打开感兴趣的路由器。该路由器的功能列表中列出了 SNAT 的状态。下面显示已在列表中打开的路由器。路由器的状态表示 SNAT 已启用。

图 3:SNAT Router Status for SNAT 的路由器状态

您可以通过查看实例控制台来查看带有 SNAT 的路由器的实时状态,如下所示。

图 4:实例详细信息窗口 Instance Details Window

使用 Web UI 配置分布式 SNAT

分布式 SNAT 功能允许虚拟机使用现有转发基础架构与 IP 交换矩阵网络通信,以实现计算节点连接。此功能可通过将计算节点的 IP 地址用作公共地址对虚拟机流量进行端口地址转换来实现。

支持以下分布式 SNAT 用例:

  • 启用分布式 SNAT 的虚拟网络可以与 IP 交换矩阵网络通信。会话必须从虚拟机启动。不支持从外部网络启动的会话。

分布式 SNAT 仅适用于 TCP 和 UDP,您可以为这两种协议配置离散端口范围。

端口池用于分布式 SNAT。要创建端口池,请转至 配置>基础架构>全局 Config。下面显示了用于端口地址转换的端口范围示例。

图 5:编辑转发选项窗口 Edit Forwarding Options Window

要使用分布式 SNAT,必须在虚拟网络上启用 SNAT。要对虚拟网络启用 SNAT,请转至 配置>网络>网络。下面显示了在“高级选项”下已为其启用 SNAT 的虚拟网络。

图 6:创建窗口 Create Window