配置 Windows Server 作为客户网关设备 - AWS Site-to-Site VPN

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 Windows Server 作为客户网关设备

您可以将一台运行 Windows Server 的服务器配置为 VPC 的客户网关设备。无论您是在 VPC 中的 EC2 实例上还是在自己的服务器上运行 Windows Server,都应执行以下过程。以下过程适用于 Windows Server 2012 R2 及更高版本。

配置您的 Windows 实例

如果将 Windows Server 配置在从 Windows AMI 启动的 EC2 实例上,请执行以下操作:

  • 禁用实例的源/目标检查:

    1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

    2. 选择您的 Windows 实例,然后依次选择 Actions(操作)、Networking(网络)、Change source/destination check(更改源/目标检查)。选择 Stop(停止),然后选择 Save(保存)。

  • 更新适配器设置,以便您可以路由来自其他实例的流量:

    1. 连接到您的 Windows 实例。有关更多信息,请参阅连接到您的 Windows 实例

    2. 打开控制面板,启动设备管理器。

    3. 展开网络适配器节点。

    4. 选择网络适配器(根据实例类型,可能是 Amazon Elastic Network Adapter 或 Intel 82599 虚拟功能),然后选择 Action(操作)、Properties(属性)。

    5. 高级选项卡中,禁用 IPv4 校验和卸载TCP 校验和卸载(IPv4)UDP 校验和卸载(IPv4) 属性,然后选择 确定

  • 向您的账户分配弹性 IP 地址并将该地址与实例关联。有关更多信息,请参阅使用弹性 IP 地址。请记下此地址 – 您在 VPC 中创建客户网关时将需要此地址。

  • 确保实例的安全组规则允许出站 IPsec 流量。默认情况下,安全组允许所有出站流量。不过,如果安全组的出站规则已修改为非原始状态,则必须针对 IPsec 流量创建以下出站自定义协议规则:IP 协议 50、IP 协议 51 和 UDP 500。

记下您的 Windows 实例所在网络的 CIDR 范围,例如,172.31.0.0/16

步骤 1:创建 VPN 连接并配置您的 VPC

要从您的 VPC 创建 VPN 连接,请执行以下操作:

  1. 创建虚拟私有网关并将其连接到您的 VPC。有关更多信息,请参阅 创建虚拟专用网关

  2. 创建 VPN 连接和新的客户网关。对于客户网关,请指定 Windows Server 的公有 IP 地址。对于 VPN 连接,请选择静态路由,然后输入 Windows Server 所在网络的 CIDR 范围,例如 172.31.0.0/16。有关更多信息,请参阅 步骤 5:创建 VPN 连接

创建 VPN 连接后,请将 VPC 配置为启用通过 VPN 连接进行通信。

配置您的 VPC
  • 在 VPC 中创建私有子网(如果您还没有),以启动要与 Windows Server 通信的实例。有关更多信息,请参阅在 VPC 中创建子网

    注意

    私有子网是不路由到 Internet 网关的子网。下一个项目中描述了此子网的路由。

  • 更新您的 VPN 连接的路由表:

  • 为您的实例创建安全组,以允许在 VPC 与您的网络之间进行通信:

    • 添加允许来自您的网络的入站 RDP 或 SSH 访问的规则。这样,您可以从您的网络连接到 VPC 中的实例。例如,要允许您的网络中的计算机访问您的 VPC 中的 Linux 实例,请创建一个 SSH 类型、源设置为您的网络的 CIDR 范围(如 172.31.0.0/16)的入站规则。有关更多信息,请参阅 Amazon VPC 用户指南中的您的 VPC 的安全组

    • 添加允许来自您的网络的入站 ICMP 访问的规则。这样,通过从 Windows Server 对 VPC 中的实例执行 ping 操作,可以测试您的 VPN 连接。

步骤 2:下载 VPN 连接的配置文件

您可以使用 Amazon VPC 控制台为您的 VPN 连接下载 Windows Server 配置文件。

下载配置文件
  1. 通过 https://console.aws.amazon.com/vpc/ 打开 Amazon VPC 控制台。

  2. 在导航窗格中,选择 Site-to-Site VPN Connections(Site-to-Site VPN 连接)。

  3. 选择您的 VPN 连接,然后选择 Download Configuration(下载配置)。

  4. 选择 Microsoft 作为供应商,Windows Server 作为平台,2012 R2 作为软件。选择下载。您可以打开或保存文件。

配置文件包含与以下示例类似的信息部分。 您会看到此信息显示两次,每条隧道一次。

vgw-1a2b3c4d Tunnel1 -------------------------------------------------------------------- Local Tunnel Endpoint:       203.0.113.1 Remote Tunnel Endpoint:      203.83.222.237 Endpoint 1:                  [Your_Static_Route_IP_Prefix] Endpoint 2:                  [Your_VPC_CIDR_Block] Preshared key:               xCjNLsLoCmKsakwcdoR9yX6GsEXAMPLE
Local Tunnel Endpoint

在您创建 VPN 连接时,您为客户网关指定的 IP 地址。

Remote Tunnel Endpoint

虚拟专用网关的两个 IP 地址之一,用于终止连接 AWS 侧的 VPN 连接。

Endpoint 1

在您创建 VPN 连接时,您指定作为静态路由的 IP 前缀。您的网络中的这些 IP 地址被允许使用 VPN 连接访问您的 VPC。

Endpoint 2

连接到虚拟私有网关的 VPC 的 IP 地址范围(CIDR 块,例如 10.0.0.0/16)。

Preshared key

用于建立 Local Tunnel EndpointRemote Tunnel Endpoint 之间的 IPsec VPN 连接的预共享密钥。

我们建议您将两条隧道配置为 VPN 连接的一部分。 每条隧道都连接到 VPN 连接的 Amazon 一侧的独立 VPN 集中器。尽管一次只有一条隧道处于开启状态,但如果第一条隧道出现故障,第二条隧道会自动建立。 拥有冗余隧道可确保设备出现故障时的持续可用性。由于一次仅一条隧道可用,Amazon VPC 控制台指示一条隧道处于关闭状态。这是预期行为,因此无需您采取任何操作。

配置了两条隧道后,如果其中出现设备故障 AWS,您的 VPN 连接将在几分钟内自动故障转移到虚拟专用网关的第二条隧道。在您配置客户网关设备时,务必配置两条隧道。

注意

不时对虚拟专用网关 AWS 执行例行维护。这项维护可能会在短时间内禁用您的 VPN 连接的两条隧道中的一条。当我们执行维护任务时,您的 VPN 连接会自动故障转移到第二条隧道。

有关 Internet 密钥交换 (IKE) 和 IPsec 安全关联 (SA) 的信息已发布在下载的配置文件中。

MainModeSecMethods: DHGroup2-AES128-SHA1 MainModeKeyLifetime: 480min,0sess QuickModeSecMethods: ESP:SHA1-AES128+60min+100000kb QuickModePFS: DHGroup2
MainModeSecMethods

IKE SA 的加密和身份验证算法。这些是 VPN 连接的推荐设置和 Windows Server IPsec VPN 连接的默认设置。

MainModeKeyLifetime

IKE SA 密钥使用期限。  这是 VPN 连接的建议设置,也是 Windows Server IPsec VPN 连接的默认设置。

QuickModeSecMethods

IPsec SA 的加密和身份验证算法。这些是 VPN 连接的推荐设置和 Windows Server IPsec VPN 连接的默认设置。

QuickModePFS

我们建议您在 IPsec 会话中使用主密钥完美前向保密 (PFS)。

步骤 3:配置 Windows Server

在设置 VPN 隧道之前,您必须在 Windows Server 上安装并配置路由和远程访问服务。这将允许远程用户访问您的网络上的资源。

要安装路由和远程访问服务
  1. 登录您的 Windows Server。

  2. 转到开始菜单,然后选择服务器管理器

  3. 安装路由和远程访问服务:

    1. 管理菜单中,选择添加角色和功能

    2. 开始之前页面中,确认您的服务器满足先决条件,然后选择下一步

    3. 选择基于角色或基于功能的安装,然后选择下一步

    4. 选择 Select a server from the server pool(从服务器池中选择一个服务器),选择 Windows Server,然后选择 Next(下一步)。

    5. 在列表中选择网络策略和访问服务。在显示的对话框中选择添加功能以确认此角色所需的功能。

    6. 在同一列表中,依次选择远程访问下一步

    7. 选择功能页面上,选择下一步

    8. 网络策略和访问服务 页面中,选择下一步

    9. 远程访问页面上,选择下一步。在下一页上,选择DirectAccess 和 VPN (RAS)。在显示的对话框中选择添加功能以确认此角色服务所需的功能。在同一列表中,选择路由,然后选择下一步

    10. Web 服务器角色(IIS) 页面上,选择下一步。保留默认选择,然后选择下一步

    11. 选择安装。安装完成后,选择关闭

配置和启用路由和远程访问服务器。
  1. 在仪表板上,选择通知 (旗帜图标)。此时应该还有一项任务是完成部署后配置。选择打开开始向导链接。

  2. 选择仅部署 VPN

  3. Routing and Remote Access (路由和远程访问) 对话框中,选择服务器名称,选择 Action (操作),然后选择 Configure and Enable Routing and Remote Access (配置并启用路由和远程访问)

  4. 路由和远程访问服务器安装向导的第一个页面上,选择下一步

  5. Configuration (配置) 页面上,选择 Custom Configuration (自定义配置)Next (下一步)

  6. 依次选择 LAN 路由下一步完成

  7. 当出现路由和远程访问对话框提示时,选择启动服务

步骤 4:设置 VPN 隧道

通过运行所下载的配置文件中的 netsh 脚本,或者使用 Windows Server 用户界面,可以配置 VPN 隧道。

重要

我们建议您在 IPsec 会话中使用主密钥完全向前保密 (PFS)。 如果您选择运行 netsh 脚本,它会包含一个用于启用 PFS () qmpfs=dhgroup2 的参数。您不能使用 Windows 用户界面启用 PFS,而是必须使用命令行来启用。

选项 1:运行 netsh 脚本

复制已下载配置文件中的 Netsh 脚本,并更换变量。以下为示例脚本。

netsh advfirewall consec add rule Name="vgw-1a2b3c4d Tunnel 1" ^ Enable=Yes Profile=any Type=Static Mode=Tunnel ^ LocalTunnelEndpoint=Windows_Server_Private_IP_address ^ RemoteTunnelEndpoint=203.83.222.236 Endpoint1=Your_Static_Route_IP_Prefix ^ Endpoint2=Your_VPC_CIDR_Block Protocol=Any Action=RequireInClearOut ^ Auth1=ComputerPSK Auth1PSK=xCjNLsLoCmKsakwcdoR9yX6GsEXAMPLE ^ QMSecMethods=ESP:SHA1-AES128+60min+100000kb ^ ExemptIPsecProtectedConnections=No ApplyAuthz=No QMPFS=dhgroup2

Name:您可以用自己选择的名称替换建议名称(vgw-1a2b3c4d Tunnel 1)

LocalTunnelEndpoint:输入您网络上的 Windows 服务器的私有 IP 地址。

Endpoint1:Windows Server 所在网络的 CIDR 块,例如 172.31.0.0/16。用双引号 (") 将此值括起来。

Endpoint2:您的 VPC 或 VPC 中的子网的 CIDR 块,例如,10.0.0.0/16。用双引号 (") 将此值括起来。

在 Windows Server 上的命令提示行窗口中运行已更新的脚本。(^可让您剪切和粘贴命令行中的折叠文本)。要设置此 VPN 连接的第二条 VPN 隧道,请使用配置文件中的第二个 Netsh 脚本重复该过程。

完成后,请转到 配置 Windows 防火墙

有关 netsh 参数的更多信息,请参阅 Microsoft 库中的 Netsh AdvFirewall Consec 命令。 TechNet

选项 2:使用 Windows Server 用户界面

您还可以使用 Windows Server 用户界面以设置 VPN 隧道。

重要

您无法使用 Windows Server 用户界面启用主密钥完美前向保密 (PFS)。您必须如启用主密钥完全向前保密所述使用命令行启用 PFS。

为 VPN 隧道配置安全规则

在这部分中,将在 Windows Server 上配置安全规则以创建 VPN 隧道。

为 VPN 隧道配置一个安全规则
  1. 打开服务器管理器,选择 Tools(工具),然后选择Windows Defender Firewall with Advanced Security(高级安全 Windows Defender 防火墙)。

  2. 选择连接安全规则操作新建规则

  3. 新建连接安全规则向导中的规则类型页面上,选择隧道,然后选择下一步

  4. Tunnel Type (隧道类型) 页面中的 What type of tunnel would you like to create (您希望创建什么类型的隧道) 下,选择 Custom Configuration (自定义配置)。在 Would you like to exempt IPsec-protected connections from this tunnel (是否要免除此隧道的受 IPsec 保护的连接?) 下,保留选中默认值(No. Send all network traffic that matches this connection security rule through the tunnel (否。通过隧道发送与该连接安全规则匹配的所有网络流量)),然后选择 Next (下一步)

  5. 在 “要求” 页面上,选择 “要求对入站连接进行身份验证”。不要为出站连接建立隧道,然后选择 Next

  6. Tunnel Endpoints (隧道终端节点) 页面上,在 Which computers are in Endpoint 1 (终端节点 1 中的计算机) 下,选择 Add (添加)。输入您的网络的 CIDR 范围(在 Windows Server 客户网关设备之后,例如 172.31.0.0/16),然后选择 OK(确定)。该范围可以包含您的客户网关设备的 IP 地址。

  7. 什么是本地隧道终结点(最接近终结点 1 中的计算机) 下,选择编辑。在 IPv4 address(IPv4 地址)字段中,输入您的 Windows Server 私有 IP 地址,然后选择 OK(确定)。

  8. 什么是远程隧道终结点(最接近终结点 2 中的计算机) 下,选择编辑。在 IPv4 地址字段中,输入配置文件中隧道 1 的虚拟专用网关的 IP 地址 (请参阅 Remote Tunnel Endpoint),然后选择确定

    重要

    如果您正在对隧道 2 重复此步骤,请确保选择隧道 2 的终端节点。

  9. 终结点 2 中的计算机下,选择添加。在此 IP 地址或子网字段中,输入您的 VPC 的 CIDR 块,然后选择确定

    重要

    您必须在此对话框中进行滚动,直至您找到 Which computers are in Endpoint 2 (终端节点 2 中的计算机) 为止。在完成此步骤之前请勿单击下一步,否则您将无法连接到您的服务器。

    新连接安全规则向导:隧道终端节点
  10. 确认您指定的所有设置都正确,然后选择 Next (下一步)

  11. 身份验证方法页面上,选择高级,然后选择自定义

  12. 第一身份验证方法下,选择添加

  13. 选择 Preshared key (预共享密钥),输入配置文件中的预共享密钥值,然后选择 OK (确定)

    重要

    如果要对隧道 2 重复此步骤,请确保选择隧道 2 的预共享密钥。

  14. 确保未选中第一身份验证可选,然后选择确定

  15. 选择下一步

  16. Profile (配置文件) 页面上,选中所有三个复选框:Domain (域)Private (私有)Public (公有)。选择下一步

  17. 名称页面中,为您的连接规则输入名称;例如 VPN to Tunnel 1,然后选择 Finish(完成)

重复以上过程,从配置文件中指定隧道 2 的数据。

完成后,您的 VPN 连接即配置了两条隧道。

确认隧道配置

确认隧道配置
  1. 打开服务器管理器,选择工具,选择高级安全 Windows 防火墙,然后选择连接安全规则

  2. 验证两条隧道的以下设置:

    • Enabled (已启用)Yes

    • 终结点 1 是您的网络的 CIDR 块

    • 终结点 2 是您的 VPC 的 CIDR 块

    • Authentication mode (身份验证模式)Require inbound and clear outbound

    • Authentication method (身份验证方法)Custom

    • Endpoint 1 port (终端节点 1 端口)Any

    • Endpoint 2 port (终端节点 2 端口)Any

    • Protocol (协议)Any

  3. 选择第一个规则,然后选择属性

  4. Authentication (身份验证) 选项卡上的 Method (方法) 下,选择 Customize (自定义)。确认 First authentication methods (第一身份验证方法) 包含隧道配置文件中的正确预共享密钥,然后选择 OK (确定)

  5. Advanced (高级) 选项卡中,验证 Domain (域)Private (私有)Public (公有) 都已被选定。

  6. IPsec 隧道下,选择自定义。验证以下 IPsec 隧道设置,然后两次选择确定,再关闭对话框。

    • Use IPsec tunneling (使用 IPsec 隧道) 已选定。

    • 本地隧道终端节点(最接近终端节点 1) 包含 Windows Server 的 IP 地址。如果客户网关设备是 EC2 实例,这就是该实例的私有 IP 地址。

    • Remote tunnel endpoint (closest to Endpoint 2) (本地隧道终端节点 (最接近终端节点 2)) 中包含此隧道的虚拟专用网关的 IP 地址。

  7. 打开您的第二条隧道的属性。对此隧道重复第 4 步到第 7 步。

启用主密钥完全向前保密

您可以使用命令行启用主密钥完全向前保密。此功能不能通过用户界面启用。

启用主密钥完全向前保密
  1. 在您的 Windows Server 中打开新的命令提示符窗口。

  2. 输入以下命令,并将 rule_name 替换为您为第一个连接规则提供的名称。

    netsh advfirewall consec set rule name="rule_name" new QMPFS=dhgroup2 QMSecMethods=ESP:SHA1-AES128+60min+100000kb
  3. 对第二条隧道重复执行步骤 2,这次使用您为第二个连接规则提供的名称替换 rule_name

配置 Windows 防火墙

在您设置了服务器的安全规则之后,您需要配置一些基本 IPsec 设置以供虚拟专用网关使用。

配置 Windows 防火墙
  1. 打开 Server Manager(服务器管理器),依次选择 Tools(工具)、Windows Defender Firewall with Advanced Security(高级安全 Windows Defender 防火墙)和 Properties(属性)。

  2. IPsec 设置选项卡中的 IPsec 免除下,确认从 IPsec 免除 ICMP 已设置为否(默认值)。验证“IPsec tunnel authorization”为“None”。

  3. IPsec 默认值下,选择自定义

  4. 密钥交换(主模式) 下,选择高级,然后选择自定义

  5. Customize Advanced Key Exchange Settings (自定义高级密钥交换设置) 中的 Security methods (安全方式) 下,验证第一个条目是否使用了以下默认值。

    • 完整性:SHA-1

    • 加密术:AES-CBC 128

    • 密钥交换算法:Diffie-Hellman Group 2

    • 在“Key lifetimes”选项下,验证“Minutes”为480,并且“Sessions”为0

    以下设置与配置文件中的条目对应。

    MainModeSecMethods: DHGroup2-AES128-SHA1,DHGroup2-3DES-SHA1 MainModeKeyLifetime: 480min,0sec
  6. 密钥交换选项下,选择将 Diffie-Hellman 用于增强的安全性,然后选择确定

  7. 数据保护(快速模式)下,选择高级,然后选择自定义

  8. 选择要求所有使用这些设置的连接安全规则使用加密

  9. Data integrity and encryption (数据完整性和加密算法) 选项下,保留默认值:

    • 协议:ESP

    • 完整性:SHA-1

    • 加密术:AES-CBC 128

    • 使用期限:60 分钟

    这些值与配置文件中的以下条目对应。

    QuickModeSecMethods: ESP:SHA1-AES128+60min+100000kb
  10. 选择确定以返回自定义 IPsec 设置对话框,然后再次选择确定以保存配置。

步骤 5:启用失效网关检测

接下来,配置 TCP,以删除无法使用的网关。也可以修改注册表键以完成此操作:HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters。在完成前面的部分之前,不要执行此步骤。在您更改注册密钥之后,您必须重新启动服务器。

启用失效网关检测
  1. 在 Windows 服务器上,启动命令提示符或 PowerShell 会话,然后输入 regedit 以启动注册表编辑器。

  2. 展开 HKEY_LOCAL_ MACHINE,展开 SYSTE M,展开,展开 “服务CurrentControlSet,展开 Tcpi p,然后展开 “参数”。

  3. 编辑菜单中,选择新建,然后选择 DWORD (32-位)值

  4. 输入名称 EnableDeadgwDetect

  5. 选择 EnableDeadGWDetec t,然后选择编辑修改

  6. 值数据中,输入 1,然后选择确定

  7. 关闭注册表编辑器,并重新启动服务器。

有关更多信息,请参阅 Microsoft TechNet 库中的 EnableDeadGWDetec t

步骤 6:测试 VPN 连接

要测试 VPN 连接是否正常工作,请在 VPC 中启动一个实例,并确保该实例没有 Internet 连接。启动实例后,从您的 Windows Server 对该实例的私有 IP 地址执行 ping 操作。从客户网关设备生成流量时,VPN 隧道将出现。因此,ping 命令也将启动 VPN 连接。

有关测试 VPN 连接的步骤,请参阅测试 Site-to-Site VPN 连接

如果 ping 命令失败,请检查以下信息:

  • 确保您配置了安全组规则以允许 ICMP 流向您的 VPC 中的实例。如果您的 Windows Server 是 EC2 实例,请确保其安全组出站规则允许 IPsec 流量。有关更多信息,请参阅 配置您的 Windows 实例

  • 确保您向其发送 ping 命令的实例上的操作系统已配置为响应 ICMP。我们建议您使用 Amazon Linux AMI 之一。

  • 如果您向其发送 ping 命令的实例是 Windows 实例,请连接该实例,然后在 Windows 防火墙上启用入站 ICMPv4。

  • 确保为您的 VPC 或子网正确配置了路由表。有关更多信息,请参阅 步骤 1:创建 VPN 连接并配置您的 VPC

  • 如果客户网关设备是 EC2 实例,请确保您已禁用该实例的源/目标检查。有关更多信息,请参阅 配置您的 Windows 实例

在 Amazon VPC 控制台的 VPN Connections 页面上,选择 VPC 连接。第一条隧道处于 UP 状态。第二条隧道应同时配置,但除非第一条隧道出现故障,否则第二条隧道将无法使用。稍候几分钟,以建立加密隧道。