什么是 Azure NAT 网关?
作为负责解决 Azure VM 当前连接问题的主要系统工程师和 Azure 管理员,第一步是了解技术背景和 Azure NAT 网关的功能。
Azure NAT 网关是完全托管的云服务,在 Azure 中运行。 它高度可复原、可缩放且易于配置。 将 Azure NAT 网关与 Azure 中的现有虚拟网络一起使用时,单个 VM 或其他 Azure 资源可以保持完全专用,除非它们托管接受来自 Internet 的入站连接的服务。 所有从虚拟网络启动的出站连接都使用 NAT 网关的静态公共 IP 地址。
NAT 概述
NAT 不是一种新技术。 它已用于将本地 IP 地址映射到公用地址数十年。 NAT 的主要目的之一是保存公共 IPv4 地址,这对 Internet 服务提供商 (ISP) 特别有用。 这些公司可以使用 NAT 将许多专用 IPv4 地址范围映射到单个公共 IP 地址,或映射到少量的公共 IP 地址。
NAT 还用于家庭和本地网络。 如果你有连接到 Internet 的家庭路由器,则可能已经实现 NAT。 因此,只使用一个公共 IP 地址即可将所有设备路由到 Internet。 NAT 还会隐藏你的内部地址空间,因此所有出站流量似乎都来自单个公共 IP 地址。 该 IP 地址通常分配给路由器或网关设备。
使用 NAT 时,务必了解传输控制协议 (TCP) 端口及其用途。 端口地址转换允许专用网络中的每个主机使用单个公共 IP 地址在 Internet 上进行通信,因此,每个通信路径都是通过唯一的 TCP 端口建立的。 过程如下:
专用网络上的设备与 Internet 上的资源建立连接。 NAT 会将数据包标头中的内部设备 IP 地址替换为 NAT 设备的外部 IP 地址。
然后,端口地址转换从可用端口池中为连接分配端口号。
该端口号将插入到数据包标头中的“源端口”字段,然后数据包将被转发到 Internet。
NAT 设备随后会在网络转换表中记录条目:
- 对于建立的每个连接,此条目包含内部 IP 地址、原始源端口和转换的源端口。
- 来自相同内部源 IP 地址和端口号的后续数据包始终转换为相同的外部 IP 地址和端口号。
计算机在接收到已经历 NAT 的数据包后,会建立与已更改的数据包中所指定的端口和 IP 地址的连接,而无视提供的地址被转换这一事实。
下图描绘了 NAT 过程。
注意
NAT 主要用于建立到 Internet 的出站连接。 但是,它不能直接管理来自 Internet 的入站连接。 需要使用不同的技术来实现此目的。
Azure 中的 NAT 服务
在 Azure 中创建虚拟网络时,可为其分配一个专用地址空间,然后为该网络创建一个或多个子网。 当你在 Azure 中创建 VM,然后将其放置在该虚拟网络中时,它将从该网络获取其本地 IP 地址。 如果要接受 VM 上的出站 Internet 连接,还可以向该 VM 分配一个公共 IP 地址对象。
注意
没有分配公共 IP 地址的 Azure VM 仍可使用 Azure 网络地址转换或端口地址转换访问 Internet。 但是,在这种情况下,你无法控制将用于出站连接的公共 IP 地址。 此外,无法启用入站连接或使用远程桌面协议 (RDP) 从外部连接到这些 VM;相反,你将需要使用 Azure Bastion 主机。
若要帮助确保 Azure VM 和其他资源的安全、可控和可缩放的出站连接,可以创建 Azure NAT 网关服务实例。 然后,将该实例分配给 Azure 中同一虚拟网络内的一个或多个子网。
然后,Azure NAT 网关服务将帮助安全地将专用 IP 地址转换为公共 IP 地址,如下图所示: