使用英语阅读

通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

关于 Azure VPN 网关中的 NAT

本文概述了 Azure VPN 网关中的网络地址转换 (NAT)。 NAT 定义了在 IP 数据包中将一个 IP 地址转换为另一个 IP 地址的机制。 NAT 有多种方案:

  • 连接具有重叠 IP 地址的多个网络
  • 从具有专用 IP 地址 (RFC1918) 的网络连接到 Internet(Internet 分支)
  • 从 IPv6 网络连接到 IPv4 网络 (NAT64)

重要

Azure VPN 网关 NAT 支持第一种方案,即将本地网络或分支机构连接到具有重叠 IP 地址的 Azure 虚拟网络。 不支持连接 Internet 分支和 NAT64。

重叠的地址空间

组织通常使用 RFC1918 中定义的专用 IP 地址在专用网络中进行内部通信。 当这些网络通过 Internet 或专用 WAN 使用 VPN 进行连接时,地址空间不得重叠,否则通信将失败。 若要连接两个或多个具有重叠 IP 地址的网络,请在连接网络的网关设备上部署 NAT。

NAT 类型:静态和动态

网关设备上的 NAT 根据 NAT 策略或规则转换源和/或目标 IP 地址,以避免地址冲突。 有不同类型的 NAT 转换规则:

  • 静态 NAT:静态规则定义固定地址映射关系。 对于给定的 IP 地址,它将被映射到目标池中的相同地址。 静态规则的映射是无状态的,因为该映射是固定的。

  • 动态 NAT:对于动态 NAT,可以基于可用性,或者使用不同的 IP 地址和 TCP/UDP 端口组合将 IP 地址转换为不同的目标 IP 地址。 后者也称为 NAPT,即网络地址和端口转换。 动态规则将根据任何给定时间的流量流产生有状态的转换映射。

备注

使用动态 NAT 规则时,流量是单向的,这意味着必须从规则的“内部映射”字段中代表的站点发起通信。 如果从外部映射发起通信,将不会建立连接。 如果需要双向发起通信,可以使用静态 NAT 规则来定义一个 1:1 映射。

另一个注意事项是用于转换的地址池大小。 如果目标地址池大小与原始地址池相同,请使用静态 NAT 规则按顺序定义 1:1 映射。 如果目标地址池小于原始地址池,请使用动态 NAT 规则来适应差异。

重要

  • 以下 SKU 支持 NAT:VpnGw2~5、VpnGw2AZ~5AZ。
  • 仅支持在 IPsec 跨界连接中使用 NAT。 不支持 VNet 到 VNet 连接或 P2S 连接。
  • 每个动态 NAT 规则都可以分配给单个连接。

NAT 模式:入口和出口

每个 NAT 规则为相应的网络地址空间定义地址映射或转换关系:

  • 入口:IngressSNAT 规则将本地网络地址空间映射到转换后的地址空间,以避免地址重叠。

  • 出口:EgressSNAT 规则将 Azure VNet 地址空间映射到另一个已转换的地址空间。

对于每个 NAT 规则,以下两个字段指定转换之前和之后的地址空间:

  • 内部映射:转换之前的地址空间。 对于入口规则,此字段对应于本地网络的原始地址空间。 对于出口规则,这是原始 VNet 地址空间。

  • 外部映射:本地网络(入口)或 VNet(出口)转换之后的地址空间。 对于连接到 Azure VPN 网关的不同网络,所有外部映射的地址空间不得相互重叠,也不得与没有 NAT 连接的网络重叠。

NAT 和路由

为连接定义 NAT 规则后,连接的有效地址空间将随规则变化。 如果在 Azure VPN 网关上启用了 BGP,请选择“启用 BGP 路由转换”,以自动转换在具有 NAT 规则的连接上识别和播发的路由:

  • 已识别的路由:通过与 IngressSNAT 规则的连接识别到的路由的目标前缀将从内部映射前缀(NAT 前)转换为这些规则的外部映射前缀(NAT 后)。

  • 播发的路由:Azure VPN 网关将播发 VNet 地址空间的 EgressSNAT 规则的外部映射(NAT 后)前缀,以及来自其他连接,具有 NAT 后地址前缀的已识别的路由。

  • NAT 本地网络的 BGP 对等 IP 地址注意事项:

    • APIPA(169.254.0.1 到 169.254.255.254)地址:NAT 不受 BGP APIPA 地址支持。
    • 非 APIPA 地址:从 NAT 范围中排除 BGP 对等 IP 地址。

备注

不会转换在没有 IngressSNAT 规则的连接上识别的路由。 也不会转换播发给没有 EgressSNAT 规则的连接的 VNet 路由。

NAT 示例

下图显示了 Azure VPN NAT 配置的示例:

显示 NAT 配置和规则的示意图。

该图显示了一个 Azure VNet 和两个本地网络,所有网络的地址空间均为 10.0.1.0/24。 若要将这两个网络连接到 Azure VNet 和 VPN 网关,请创建以下规则:

  • IngressSNAT 规则 1:此规则将本地地址空间 10.0.1.0/24 转换为 192.168.2.0/24。

  • IngressSNAT 规则 2:此规则将本地地址空间 10.0.1.0/24 转换为 192.168.3.0/24。

  • EgressSNAT 规则 1:此规则将 VNet 地址空间 10.0.1.0/24 转换为 192.168.1.0/24。

图中的每个连接资源都具有以下规则:

  • 连接 1 (VNet-Branch1):

    • IngressSNAT 规则 1
    • EgressSNAT 规则 1
  • 连接 2 (VNet-Branch2)

    • IngressSNAT 规则 2
    • EgressSNAT 规则 1

根据与连接关联的规则,以下是每个网络的地址空间:

网络 原始 已转换
VNet 10.0.1.0/24 192.168.1.0/24
分支 1 10.0.1.0/24 192.168.2.0/24
分支 2 10.0.1.0/24 192.168.3.0/24

下图显示了 NAT 转换之前和之后从分支 1 到 VNet 的 IP 数据包:

显示 NAT 转换之前和之后的关系图。

重要

单个 SNAT 规则定义特定网络的双向转换:

  • IngressSNAT 规则定义从本地网络进入 Azure VPN 网关的源 IP 地址的转换。 它还会处理离开 VNet 并进入同一本地网络的目标 IP 地址的转换。
  • EgressSNAT 规则定义离开 Azure VPN 网关并进入本地网络的源 IP 地址的转换。 它还会处理使用 EgressSNAT 规则通过这些连接进入 VNet 的数据包的目标 IP 地址转换。
  • 在任一情况下,都不需要 DNAT 规则。

NAT 配置

要实现上一部分中所示的 NAT 配置,请首先在 Azure VPN 网关中创建 NAT 规则,然后使用关联的相应 NAT 规则创建连接。 有关为跨界连接配置 NAT 的步骤,请参阅在 Azure VPN 网关上配置 NAT

NAT 限制和注意事项

重要

NAT 功能有一些约束。

  • 以下 SKU 支持 NAT:VpnGw2~5、VpnGw2AZ~5AZ。
  • 仅 IPsec/IKE 跨界连接支持 NAT。 不支持 VNet 到 VNet 连接或 P2S 连接。
  • 已启用“使用基于策略的流量选择器”的连接不支持 NAT 规则。
  • 动态 NAT 支持的最大外部映射子网大小为 /26。
  • 只能对静态 NAT 类型配置端口映射。 动态 NAT 方案不适用于端口映射。
  • 端口映射目前不能采用范围。 需要输入单个端口。
  • TCP 和 UDP 协议均可使用端口映射。

NAT 常见问题解答

NAT 是否在所有 Azure VPN 网关 SKU 上都受支持?

VpnGw2 到 VpnGw25 和 VpnGw2AZ 到 VpnGw5AZ 支持 NAT。

是否可以在 VNet 到 VNet 连接或 P2S 连接上使用 NAT?

错误。

在一个 VPN 网关上可以使用多少个 NAT 规则?

在一个 VPN 网关上最多可以创建 100 个 NAT 规则(包括传入和传出规则)。

是否可以在 NAT 规则名称中使用斜杠 (/)?

否。 你将收到错误。

NAT 是否应用于 VPN 网关上的所有连接?

NAT 应用于带有 NAT 规则的连接。 如果某个连接没有 NAT 规则,则 NAT 不会对该连接生效。 在同一个 VPN 网关上,可以将一些带有 NAT 的连接与其他不带有 NAT 的连接一起使用。

VPN 网关支持哪些类型的 NAT?

VPN 网关仅支持静态 1:1 NAT 和动态 NAT。 它们不支持 NAT64。

NAT 是否可在主动-主动 VPN 网关上正常工作?

是的。 NAT 可以在主动-主动和主动-备用 VPN 网关上正常工作。 每个 NAT 规则都将应用于 VPN 网关的单个实例。 在主动-主动网关中,请通过“IP 配置 ID”字段为每个网关实例创建单独的 NAT 规则。

NAT 是否适用于 BGP 连接?

是,可将 BGP 与 NAT 配合使用。 下面是一些重要注意事项:

  • 若要确保基于与连接关联的 NAT 规则,将获知的路由和播发的路由转换为执行 NAT 后的地址前缀(外部映射),请在 NAT 规则的配置页上选择“启用 BGP 路由转换”。 本地 BGP 路由器必须播发 IngressSNAT 规则中定义的确切前缀。

  • 如果本地 VPN 路由器使用普通的非 APIPA 地址,但该地址与 VNet 地址空间或其他本地网络空间有冲突,请确保 IngressSNAT 规则会将 BGP 对等节点 IP 转换为唯一的不重叠地址。 请将执行 NAT 后的地址置于本地网关的“BGP 对等节点 IP 地址”字段中。

  • BGP APIPA地址不支持NAT。

是否需要为 SNAT 规则创建匹配的 DNAT 规则?

否。 单个源网络地址转换 (SNAT) 规则定义特定网络的双向转换

  • IngressSNAT 规则定义从本地网络进入 VPN 网关的源 IP 地址的转换。 它还会处理离开虚拟网络并进入同一本地网络的目标 IP 地址的转换。

  • EgressSNAT 规则定义离开 VPN 网关后进入本地网络的 VNet 源 IP 地址的转换。 它还会处理通过那些带有 EgressSNAT 规则的连接进入虚拟网络的数据包的目标 IP 地址转换。

无论哪种情况,你都不需要目标网络地址转换 (DNAT) 规则。

如果我的 VNet 或本地网络网关地址空间具有两个或更多个前缀,该怎么办? 是可以将 NAT 应用于所有这些前缀,还是只能应用于其中的一部分?

每个前缀都需要创建一个 NAT 规则,因为每个 NAT 规则只能包含 NAT 的一个地址前缀。 例如,如果本地网关的地址空间包括 10.0.1.0/24 和 10.0.2.0/25,则你可以创建两个规则:

  • IngressSNAT 规则 1:将 10.0.1.0/24 映射到 192.168.1.0/24。
  • IngressSNAT 规则 2:将 10.0.2.0/25 映射到 192.168.2.0/25。

这两个规则必须与相应地址前缀的前缀长度相匹配。 该准则同样适用于 VNet 地址空间的 EgressSNAT 规则。

重要

如果只将一个规则链接到上述连接,则不会转换其他地址空间。

我可以使用哪些 IP 范围进行外部映射?

你可以根据需要使用任何适合外部映射的 IP 范围,其中包括公共 IP 和专用 IP。

是否可以使用不同的 EgressSNAT 规则将 VNet 地址空间转换为本地网络的不同前缀?

是的。 可为同一个 VNet 地址空间创建多个 EgressSNAT 规则,然后将 EgressSNAT 规则应用于不同的连接。

是否可以在不同的连接上使用同一个 IngressSNAT 规则?

是的。 当连接是针对同一个本地网络时,通常使用相同的 IngressSNAT 规则来提供冗余。 如果这些连接是针对不同的本地网络,则不能使用同一个传入规则。

一个 NAT 连接上是否既需要使用传入规则,又需要使用传出规则?

如果本地网络地址空间与 VNet 地址空间重叠,则在同一连接上既需要使用传入规则,又需要使用传出规则。 如果 VNet 地址空间在所有连接的网络中是独一无二的,则不需要在这些连接上使用 EgressSNAT 规则。 可以使用传入规则来避免本地网络之间出现地址重叠的情况。

选择什么作为 IP 配置 ID?

“IP 配置 ID”只是你希望 NAT 规则使用的 IP 配置对象的名称。 使用此设置,只需选择适用于 NAT 规则的网关公共 IP 地址。 如果在创建网关时未指定任何自定义名称,则会将网关的主 IP 地址分配给“默认”IP 配置,将辅助 IP 分配给“activeActive”IP 配置。

后续步骤

有关为跨界连接配置 NAT 的步骤,请参阅在 Azure VPN 网关上配置 NAT