Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

源网络地址转换 (SNAT)

概述

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

下图显示了专用子网为 10.1.1.0/24 的虚拟网络。虚拟网络的默认路由指向 SNAT 网关。网关替换了 10.1.1.0/24 中的源 ip,并使用其公共地址 172.21.1.1 传输传出数据包。要维护唯一的 NAT 会话,还需要更换流量的源端口。

图 1:具有专用子网 Network diagram showing traffic flow from private virtual network VN1 with IP range 10.1.1.0/24 to public domain via SNAT gateway using public IP 172.2.1.1.的虚拟网络

充当数据中心网关的 MX 系列路由器上的 SNAT

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

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

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

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

要通过 Contrail 命令在 MX 系列路由器上启用 SNAT,请执行以下作:

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

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

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

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

    Fabric Device页面随即打开。

  3. 从页面中Fabric Device,打开 Netconf Settings

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

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

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

    仅用于识别裸金属服务器主机上的源 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

通过 Neutron API 调用在 Tungsten Fabric 上启用 SNAT 功能。

以下配置示例说明如何创建测试网络和公共网络,以允许测试网络通过 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 流量的规则。

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

  • 将相同的安全组应用于 VM 和 SNAT 左侧接口。

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

使用 Web UI 配置具有 SNAT 的路由器

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

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

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

图 2:编辑路由器窗口以启用 SNAT Edit Router dialog box in Juniper Networks platform for Sree-NAT-SVC01. Admin State: Up. External Gateway: Public. SNAT enabled. Connected Network: Srce-VN1. Save or Cancel options.

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

图 3:SNAT Screenshot of Juniper Networks interface showing router Srcc-NAT-SVC01 with external gateway Public and connected network Srcc-VN1. 的路由器状态

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

图 4:实例详细信息窗口 Web interface for managing virtual machine Sree-VM1 with terminal showing network configuration and successful ping to 8.8.8.8.

使用 Web UI 配置分布式 SNAT

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

支持以下分布式 SNAT 用例:

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

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

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

图 5:编辑转发选项窗口 Configuration interface for network forwarding options, with encapsulation priorities, ECMP hashing fields, SNAT port translation pools, and navigation panel.

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

图 6:创建窗口 Configuration interface for network settings with options for physical routers, static routes, ECMP hashing fields, QoS, security logging, PBB features, and save or cancel buttons.