View a markdown version of this page

Transit Gateway 与客户端 VPN 集成 - AWS Client VPN

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

Transit Gateway 与客户端 VPN 集成

您可以将客户端 VPN 端点本地连接到 Transit Gateway VPCs,以便安全地远程访问多个本地网络以及连接到 Transit Gateway 的其他资源。这样就无需为每个 VPC 创建单独的 VPN 端点或通过中间端管理复杂路由 VPCs。

概述

当您将 Transit Gateway 与客户端 VPN 终端节点关联时,如果在客户端 VPN 终端节点中配置了适当的路由和授权规则,则连接的 VPN 客户端可以访问连接到 Transit Gateway 的所有资源。

与传输网关关联的终端节点会保留客户端源 IP 地址。未应用源网络地址转换 (SNAT),这样可以增强对客户端流量的可见性。

重要

您不能在单个 Client VPN 终端节点中混用 VPC 子网关联和 Transit Gateway 关联。创建端点时选择一种关联类型。

优势

Transit Gateway 与 Client VPN 集成具有以下好处:

  • 简化管理 — 无需为每个 VPC 设置单独的 VPN 终端节点。无需VPCs 仅为 VPN 终止创建中间体。

  • 集中路由 — 利用 Transit Gateway 作为中央路由中心。简化整个网络的路由管理。

  • 增强可见性-保留客户端源 IP 地址(无 SNAT)。为 Client VPN 提供流日志支持。

  • 可扩展性 — 轻松添加可通过 Client VPN 访问的 Transit Gateway 的新 VPCs内容。扩展以支持大型远程员工和业务部门。

  • 集中式安全-在所有连接的网络中实施一致的安全策略。保持全面的审计跟踪。

Transit Gateway 集成的工作原

以下内容介绍了 Client VPN 如何与 Transit Gateway 配合使用:

  1. 创建终端节点-创建客户端 VPN 终端节点并指定 Transit Gateway ID。

  2. 创建附件 — AWS 自动为终端节点创建类型为 Transit Gateway client-vpn 的附件。

  3. 可用区选择-您可以指定要使用的可用区,或者自动 AWS 选择 2 个可用区。

  4. 路由配置-将路由添加到客户端 VPN 终端节点路由表,将客户端流量通过 Transit Gateway 定向到目标网络。

  5. 客户端连接流 — 当客户端连接时,流量通过客户端 VPN 终端节点流向 Transit Gateway,然后根据 Transit Gateway 路由表流向目标网络。

使用 Client VPN 的 Transit Gateway 流量流

先决条件

在创建与传输网关关联的 Client VPN 终端节点之前,请验证以下要求。

Transit Gatewa
  • 与 Client VPN 终端节点位于同一区域的现有 Transit Gateway。

  • 要进行跨账户访问,必须通过 AWS Resource Access Manager与您的账户共享 Transit Gateway。

  • 必须为 Transit Gateway 分配一个 IPv4 CIDR 块。如果您计划使用 IPv6 或双堆栈配置,请同时分配一个 IPv6 CIDR 块。

网络要求
  • 客户端 CIDR 范围不得与VPCs 连接到 Transit Gateway 的 CIDR 范围重叠。

  • Transit Gateway 必须支持您选择的可用区。

  • 必须在 VPC 路由表中配置返回路由,才能将发往客户端 CIDR 范围的流量定向到 Transit Gateway。

证书要求
  • 在 AWS Certificate Manager (ACM) 中配置的服务器证书,该证书与 Client VPN 端点位于同一区域。

  • 如果您使用双向身份验证,则是在 ACM 中配置的客户端证书。

创建 Transit Gateway Client VPN 端点

您可以使用控制台或 Transit Gateway 创建与 Transit Gateway 关联的 Client VPN 终端节点 AWS CLI。

创建 Transit Gateway Client VPN 终端节点(控制台)
  1. 打开位于 https://console.aws.amazon.com/vpc/ 的 Amazon VPC 控制台。

  2. 在导航窗格中,选择 Client VPN Endpoints(Client VPN 端点),然后选择 Create Client VPN Endpoint(创建 Client VPN 端点)。

  3. (可选)在名称标签描述中,输入端点的名称和描述。

  4. 对于流量 IP 地址类型,请选择以下选项之一:

    • IPv4— 指定客户端 IPv4 CIDR 范围(例如,10.0.0.0/22)。

    • IPv6— AWS 自动分配客户端 IPv6 CIDR 范围。

    • 双堆栈-指定客户端 IPv4 CIDR 范围。 AWS 自动分配客户端 IPv6 CIDR 范围。

  5. 对于服务器证书 ARN,请为在 ACM 中配置的 TLS 证书指定 ARN。

  6. 选择您的身份验证方法。有关更多信息,请参阅 中的客户端身份验证 AWS Client VPN

  7. (可选)对于 “连接日志”,打开 “启用客户端连接的日志详细信息”,然后指定 CloudWatch 日志组和日志流。

  8. 对于网络基础设施,请选择 T ransit Gateway

  9. 对于 T ransit Gateway ID,请从下拉列表中选择 Transit Gateway。

  10. (可选)对于可用区,最多选择 5 个可用区。如果您不选择可用区,则 AWS 会自动选择 2。

  11. (可选)配置其他设置,例如 DNS 服务器、传输协议、分割隧道、VPN 端口、会话超时和登录标语。

  12. 选择 Create Client VPN Endpoint(创建 Client VPN 终端节点)。

注意

创建后,端点状态为pending-associate。Transit Gateway 附件是自动创建的。客户端可以在附件可用后进行连接。

创建 Transit Gateway Client VPN 终端节点 (AWS CLI)

create-client-vpn-endpoint 命令与 --transit-gateway-id 参数一起使用。

以下示例创建具有特定可用区的 Client VPN 终端节点:

aws ec2 create-client-vpn-endpoint \
    --client-cidr-block 10.0.0.0/22 \
    --server-certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE \
    --authentication-options Type=certificate-authentication,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:123456789012:certificate/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE} \
    --connection-log-options Enabled=false \
    --transit-gateway-id tgw-0a1b2c3d4e5f6EXAMPLE \
    --availability-zone-list us-east-1a us-east-1b us-east-1c

输出示例:

{
    "ClientVpnEndpointId": "cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE",
    "Status": {
        "Code": "pending-associate"
    },
    "DnsName": "cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE.prod.clientvpn.us-east-1.amazonaws.com"
}

要 AWS 自动选择 2 个可用区,请省略以下--availability-zone-list参数:

aws ec2 create-client-vpn-endpoint \
    --client-cidr-block 10.0.0.0/22 \
    --server-certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE \
    --authentication-options Type=certificate-authentication,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:123456789012:certificate/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE} \
    --connection-log-options Enabled=false \
    --transit-gateway-id tgw-0a1b2c3d4e5f6EXAMPLE

验证 Transit Gateway 的连接

创建终端节点后,验证 Transit Gateway 连接是否已创建。

验证 Transit Gateway 连接(控制台)
  1. 打开位于 https://console.aws.amazon.com/vpc/ 的 Amazon VPC 控制台。

  2. 在导航窗格中,选择 Transit Gateway Attachments(中转网关连接)。

  3. 找到资源类型 = client-vpn 的附件,资源 ID 与您的 Client VPN 端点 ID 相匹配。

  4. 验证状态是否为available

验证 Transit Gateway 的连接 (AWS CLI)

使用 describe-transit-gateway-attachments 命令。

aws ec2 describe-transit-gateway-attachments \
    --filters Name=transit-gateway-id,Values=tgw-0a1b2c3d4e5f6EXAMPLE Name=resource-type,Values=client-vpn

要查看终端节点的 Transit Gateway 配置,请使用以下describe-client-vpn-endpoints命令:

aws ec2 describe-client-vpn-endpoints \
    --client-vpn-endpoint-ids cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE

输出包括一个具有 Transit Gateway ID 的TransitGatewayConfiguration对象和关联的可用区。

管理路线

重要

对于与 Transit Gateway 关联的终端节点,在创建路由时无需指定目标子网 ID。流量会自动通过 Transit Gateway 附件定向。

添加路由(控制台)
  1. 打开位于 https://console.aws.amazon.com/vpc/ 的 Amazon VPC 控制台。

  2. 在导航窗格中,选择 Client VPN Endpoints(Client VPN 终端节点)。

  3. 选择 Client VPN 终端节点,选择路由表,然后选择创建路由

  4. 路由目标中,输入目标 CIDR 范围(10.1.0.0/16例如,VPC 或0.0.0.0/0所有流量)。

  5. (可选)在描述中,输入路径的描述。

  6. 选择创建路由

添加路线 (AWS CLI)

使用不带--target-vpc-subnet-id参数的create-client-vpn-route命令。

aws ec2 create-client-vpn-route \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --destination-cidr-block 10.1.0.0/16

要添加多条路由,请为每个目标 CIDR 范围运行命令:

# Route to VPC 1
aws ec2 create-client-vpn-route \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --destination-cidr-block 10.1.0.0/16

# Route to VPC 2
aws ec2 create-client-vpn-route \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --destination-cidr-block 10.2.0.0/16

# Route to on-premises network
aws ec2 create-client-vpn-route \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --destination-cidr-block 192.168.0.0/16
删除路由(控制台)
  1. 打开位于 https://console.aws.amazon.com/vpc/ 的 Amazon VPC 控制台。

  2. 在导航窗格中,选择 Client VPN Endpoints(Client VPN 终端节点)。

  3. 选择 Client VPN 终端节点,选择路由表,选择路由,然后选择删除路由

  4. 选择删除路径进行确认。

要删除路线 (AWS CLI)

使用 delete-client-vpn-route 命令。

aws ec2 delete-client-vpn-route \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --destination-cidr-block 10.1.0.0/16

配置授权

重要

与 Transit Gateway 关联的 Client VPN 终端节点不支持基于安全组的授权。必须使用基于网络的授权规则来控制客户端访问。

添加授权规则(控制台)
  1. 打开位于 https://console.aws.amazon.com/vpc/ 的 Amazon VPC 控制台。

  2. 在导航窗格中,选择 Client VPN Endpoints(Client VPN 终端节点)。

  3. 选择 Client VPN 端点,选择授权规则,然后选择添加授权规则

  4. 要使目标网络启用访问权限,请输入目标 CIDR 范围(例如10.1.0.0/16)。

  5. 对于 “授予访问权限”,请选择以下选项之一:

    • 允许所有用户访问-所有经过身份验证的客户端都可以访问目标网络。

    • 允许访问特定访问组中的用户-在访问组 ID 中输入 A ctive Directory 组 SID 或 IdP 名称。

  6. 选择添加授权规则

添加授权规则 (AWS CLI)

使用 authorize-client-vpn-ingress 命令。

以下示例授权所有用户访问10.1.0.0/16网络:

aws ec2 authorize-client-vpn-ingress \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --target-network-cidr 10.1.0.0/16 \
    --authorize-all-groups

以下示例授权特定的 Active Directory 组:

aws ec2 authorize-client-vpn-ingress \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --target-network-cidr 10.1.0.0/16 \
    --access-group-id S-1-2-34-1234567890-1234567890-1234567890-1234

管理可用区

创建后,您可以修改与传输网关关联的 Client VPN 终端节点的可用区。

添加单个可用区 (AWS CLI)

使用带--availability-zone参数的 associate-client-vpn-target-network 命令。

aws ec2 associate-client-vpn-target-network \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --availability-zone us-east-1c
移除单个可用区 (AWS CLI)

首先,使用 describe-client-vpn-target-network s 命令查找可用区的关联 ID。

aws ec2 describe-client-vpn-target-networks \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE

然后使用带有关联 ID 的 disassociate-client-vpn-target-network 命令。

aws ec2 disassociate-client-vpn-target-network \
    --client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6EXAMPLE \
    --association-id cvpn-assoc-0a1b2c3d4e5f6EXAMPLE

跨账户访问 Transit Gateway

您可以创建与不同 AWS 账户拥有的 Transit Gateway 关联的 Client VPN 终端节点。为此,Transit Gateway 所有者必须通过与您的账户共享 Transit Gateway AWS Resource Access Manager。

先决条件
  • Transit Gateway 所有者账户 — 现有的 Transit Gateway 和在其中创建资源共享的权限 AWS Resource Access Manager。

  • 客户端 VPN 终端节点帐户-创建客户端 VPN 端点和接受 AWS Resource Access Manager 资源共享的权限。

在 Client VPN 终端节点帐户中,在 AWS Resource Access Manager 控制台中或使用accept-resource-share-invitation命令接受资源共享。接受共享后,当您创建客户端 VPN 终端节点时,Transit Gateway 会显示在 Transit Gateway ID 下拉列表中。

注意事项和限制

将 Transit Gateway 与 Client VPN 集成使用时,请考虑以下几点:

  • 协会限制

    • 您不能在单个终端节点中混用 VPC 子网关联和 Transit Gateway 关联。

    • 每个端点必须仅使用一种关联类型。

  • 安全组

    • Transit Gateway 终端节点不支持基于安全组的授权。

    • 仅使用基于网络的授权规则。

  • 路线管理

    • 不支持从 Transit Gateway 自动传播路由。

    • 您必须手动定义目的网络的路由。

  • CIDR 重叠

    • 客户端 VPN CIDR 区块不应与其他 Transit Gateway 附件或 Transit Gateway CIDR 块重叠。

    • Transit Gateway 不支持连接 VPCs之间重叠的 CIDR 范围。

  • 区域限制

    • 客户端 VPN 终端节点和 Transit Gateway 必须位于同一 AWS 区域。

    • Client VPN 不支持跨区域 Transit Gateway 对等互连。

  • 可用区

    • 每个终端节点最多可以指定 5 个可用区。

    • 如果未指定,则 AWS 自动分配 2 个可用区。

    • Client VPN 和 Transit Gateway 必须同时支持所有指定的可用区。

  • 返回路由

    • VPCs 连接到 Transit Gateway 的返回路由必须配置为将发往客户端 VPN CIDR 的流量路由回 Transit Gateway。

    • 如果没有正确的返回路由,VPN 客户端就无法访问中的资源 VPCs。

      • 对于 IPv4:Client VPN CIDR 在创建端点时已知。

      • 对于 IPv6:您必须描述 Transit Gateway 路由表以确定分配给客户端 VPN 终端节点的 IPv6 CIDR 范围(与客户端 VPN 终端节点关联的 Transit Gateway 路由表中最大 CIDR 范围),因为 IPv6 客户端 CIDR 范围由自动分配。 AWS Client VPN

  • 连接和流日志

    • 可以启用 T@@ ransit Gateway 流日志,以捕获有关进出您的传输网关的 IP 流量的信息。可以启用 Client VPN 连接日志,以捕获有关客户端 VPN 连接事件的信息。

    • 通过将 Transit Gateway 流日志事件中的客户端 IP 和时间戳与客户端 VPN 连接日志中的相同客户端 IP 和时间段进行比较,可以将 Transit Gateway 流日志事件与客户端 VPN 连接关联起来。

  • 互联网连接

    • 要通过 Transit Gateway 的 Client VPN 访问互联网,如果不使用分割隧道,则连接的 VPC 必须配置 NAT。