

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 傳輸閘道與 Client VPN 整合
<a name="cvpn-tgw"></a>

您可以將 Client VPN 端點原生連接至 Transit Gateway，以安全地遠端存取多個 VPCs、內部部署網路，以及連接到 Transit Gateway 的其他資源。這不需要為每個 VPC 建立單獨的 VPN 端點，或管理透過中繼 VPCs複雜路由。

**Topics**
+ [概觀](#cvpn-tgw-overview)
+ [優勢](#cvpn-tgw-benefits)
+ [Transit Gateway 整合的運作方式](#cvpn-tgw-how-it-works)
+ [先決條件](#cvpn-tgw-prerequisites)
+ [建立 Transit Gateway Client VPN 端點](#cvpn-tgw-create)
+ [管理路由](#cvpn-tgw-routes)
+ [設定授權](#cvpn-tgw-authorization)
+ [管理可用區域](#cvpn-tgw-manage-azs)
+ [跨帳戶傳輸閘道存取](#cvpn-tgw-cross-account)
+ [考量和限制](#cvpn-tgw-limitations)

## 概觀
<a name="cvpn-tgw-overview"></a>

當您將 Transit Gateway 與 Client VPN 端點建立關聯時，如果 Client VPN 端點中設定了適當的路由和授權規則，連線的 VPN 用戶端可以存取連線至 Transit Gateway 的所有資源。

Transit Gateway 相關端點會保留用戶端來源 IP 地址。來源網路地址轉譯 (SNAT) 不會套用，這可增強用戶端流量的可見性。

**重要**  
您無法在單一 Client VPN 端點中混合 VPC 子網路關聯和傳輸閘道關聯。當您建立端點時，請選擇一種關聯類型。

## 優勢
<a name="cvpn-tgw-benefits"></a>

與 Client VPN 整合的 Transit Gateway 提供下列優點：
+ **簡化管理** — 消除每個 VPC 個別 VPN 端點的需求。不需要僅為 VPN 終止建立中繼 VPCs。
+ **集中式路由** — 利用 Transit Gateway 作為中央路由中樞。簡化整個網路的路由管理。
+ **增強可見**性 — 保留用戶端來源 IP 地址 （無 SNAT)。提供 Client VPN 的流程日誌支援。
+ **可擴展性** — 輕鬆將新的 VPCs 新增至您的 Transit Gateway，您可以透過 Client VPN 存取。擴展以支援大型遠端人力資源和業務單位。
+ **集中式安全** — 在所有連線網路中實作一致的安全政策。維護完整的稽核線索。

## Transit Gateway 整合的運作方式
<a name="cvpn-tgw-how-it-works"></a>

以下說明 Client VPN 如何與 Transit Gateway 搭配使用：

1. **建立端點** — 您可以建立 Client VPN 端點並指定 Transit Gateway ID。

1. **附件建立** — AWS `client-vpn` 自動為端點建立 類型的 Transit Gateway 附件。

1. **可用區域選擇** — 您可以指定要使用的可用區域，或自動 AWS 選取 2 個可用區域。

1. **路由組態** — 您可以將路由新增至 Client VPN 端點路由表，以透過 Transit Gateway 將用戶端流量導向目的地網路。

1. **用戶端連線流程** — 當用戶端連線時，流量會透過 Client VPN 端點從用戶端流向 Transit Gateway，然後根據 Transit Gateway 路由表流向目的地網路。

![使用 Client VPN 的傳輸閘道流量流程](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/cvpn-tgw-traffic-flow.png)


## 先決條件
<a name="cvpn-tgw-prerequisites"></a>

建立 Transit Gateway 關聯的 Client VPN 端點之前，請確認下列需求。

傳輸閘道需求  
+ 與 Client VPN 端點位於相同區域中的現有 Transit Gateway。
+ 對於跨帳戶存取，傳輸閘道必須透過 與您的帳戶共用 AWS Resource Access Manager。
+ Transit Gateway 必須指派 IPv4 CIDR 區塊。如果您計劃使用 IPv6 或雙堆疊組態，請同時指派 IPv6 CIDR 區塊。

網路需求  
+ 用戶端 CIDR 範圍不得與連接到 Transit Gateway 的 VPCs CIDR 範圍重疊。
+ 您選取的可用區域必須由 Transit Gateway 支援。
+ 傳回路由必須在 VPC 路由表中設定，將目的地為用戶端 CIDR 範圍的流量導向 Transit Gateway。

憑證需求  
+ 在與 Client VPN 端點相同區域中佈建的伺服器憑證 AWS Certificate Manager (ACM)。
+ 如果您使用交互身分驗證，則會在 ACM 中佈建用戶端憑證。

## 建立 Transit Gateway Client VPN 端點
<a name="cvpn-tgw-create"></a>

您可以使用 主控台或 建立與 Transit Gateway 相關聯的 Client VPN 端點 AWS CLI。

**建立 Transit Gateway Client VPN 端點 （主控台）**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Client VPN Endpoints (Client VPN 端點)**，然後選擇 **Create Client VPN Endpoint (建立 Client VPN 端點)**。

1. （選用） 針對**名稱標籤**和**描述**，輸入端點的名稱和描述。

1. 針對**流量 IP 地址類型**，選擇下列其中一項：
   + **IPv4** — 指定用戶端 IPv4 CIDR 範圍 （例如 `10.0.0.0/22`)。
   + **IPv6** — AWS 自動指派用戶端 IPv6 CIDR 範圍。
   + **雙堆疊** — 指定用戶端 IPv4 CIDR 範圍。 AWS 會自動指派用戶端 IPv6 CIDR 範圍。

1. 對於**伺服器憑證 ARN**，請為在 ACM 中佈建的 TLS 憑證指定 ARN。

1. 選擇您的身分驗證方法。如需詳細資訊，請參閱[中的用戶端身分驗證 AWS Client VPN](client-authentication.md)。

1. （選用） 對於**連線記錄**，開啟在**用戶端連線上啟用日誌詳細資訊**，並指定 CloudWatch Logs 日誌群組和日誌串流。

1. 針對**網路基礎設施**，選擇**傳輸閘道**。

1. 對於**傳輸閘道 ID**，從下拉式清單中選取傳輸閘道。

1. （選用） 針對**可用區域**，選取最多 5 個可用區域。如果您未選取可用區域， AWS 會自動選取 2。

1. （選用） 設定其他設定，例如 DNS 伺服器、傳輸通訊協定、分割通道、VPN 連接埠、工作階段逾時和登入橫幅。

1. 選擇 **Create Client VPN Endpoint** (建立 Client VPN 端點)。

**注意**  
建立之後，端點狀態為 `pending-associate`。Transit Gateway 附件會自動建立。用戶端可以在附件可用後進行連線。

**建立 Transit Gateway Client VPN 端點 (AWS CLI)**  
使用 [create-client-vpn-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-client-vpn-endpoint.html) 命令搭配 `--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 連接
<a name="cvpn-tgw-verify"></a>

建立端點之後，請確認已建立 Transit Gateway 附件。

**驗證 Transit Gateway 連接 （主控台）**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Transit Gateway Attachments** (傳輸閘道連接)。

1. 尋找**資源類型** = `client-vpn`且**資源 ID** 符合您 Client VPN 端點 ID 的附件。

1. 確認**狀態**為 `available`。

**驗證 Transit Gateway 連接 (AWS CLI)**  
使用 [describe-transit-gateway-attachments](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-transit-gateway-attachments.html) 命令。

```
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](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-client-vpn-endpoints.html) 命令：

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

輸出包含具有 Transit Gateway ID 和相關聯可用區域的`TransitGatewayConfiguration`物件。

## 管理路由
<a name="cvpn-tgw-routes"></a>

**重要**  
對於 Transit Gateway 相關端點，您在建立路由時不會指定目標子網路 ID。流量會自動導向 Transit Gateway 連接。

**新增路由 （主控台）**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Client VPN Endpoints** (Client VPN 端點)。

1. 選取 Client VPN 端點，選擇**路由表**，然後選擇**建立路由**。

1. 對於**路由目的地**，輸入目的地 CIDR 範圍 （例如，`10.1.0.0/16`VPC 或`0.0.0.0/0`所有流量）。

1. （選用） 針對**描述**，輸入路由的描述。

1. 選擇 **Create route (建立路由)**。

**新增路由 (AWS CLI)**  
使用 [create-client-vpn-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-client-vpn-route.html) 命令，而不使用 `--target-vpc-subnet-id` 參數。

```
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/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Client VPN Endpoints** (Client VPN 端點)。

1. 選取 Client VPN 端點，選擇**路由表**，選取路由，然後選擇**刪除路由**。

1. 選擇**刪除路由**進行確認。

**刪除路由 (AWS CLI)**  
使用 [delete-client-vpn-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-client-vpn-route.html) 命令。

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

## 設定授權
<a name="cvpn-tgw-authorization"></a>

**重要**  
Transit Gateway 關聯的 Client VPN 端點不支援安全群組型授權。您必須使用網路型授權規則來控制用戶端存取。

**新增授權規則 （主控台）**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Client VPN Endpoints** (Client VPN 端點)。

1. 選取 Client VPN 端點，選擇**授權規則**，然後選擇**新增授權規則**。

1. 若要**讓目的地網路啟用存取**，請輸入目的地 CIDR 範圍 （例如 `10.1.0.0/16`)。

1. 針對**授予存取權**，請選擇下列其中一項：
   + **允許所有使用者存取** — 所有已驗證的用戶端都可以存取目的地網路。
   + **允許特定存取群組中的使用者存取** — 在存取群組 ID 中輸入 Active Directory 群組 SID 或 IdP 群組名稱。 ****

1. 選擇 **Add authorization rule** (新增授權規則)。

**新增授權規則 (AWS CLI)**  
使用 [authorize-client-vpn-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-client-vpn-ingress.html) 命令。

下列範例授權所有使用者存取`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
```

## 管理可用區域
<a name="cvpn-tgw-manage-azs"></a>

您可以在建立後修改 Transit Gateway 相關 Client VPN 端點的可用區域。

**新增單一可用區域 (AWS CLI)**  
使用 [associate-client-vpn-target-network](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-client-vpn-target-network.html) 命令搭配 `--availability-zone` 參數。

```
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-networks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-client-vpn-target-networks.html) 命令來尋找可用區域的關聯 ID。

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

然後使用 [disassociate-client-vpn-target-network](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-client-vpn-target-network.html) 命令搭配關聯 ID。

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

## 跨帳戶傳輸閘道存取
<a name="cvpn-tgw-cross-account"></a>

您可以建立與不同 AWS 帳戶擁有的 Transit Gateway 相關聯的 Client VPN 端點。若要這樣做，傳輸閘道擁有者必須透過您的帳戶共用傳輸閘道 AWS Resource Access Manager。

先決條件  
+ **Transit Gateway 擁有者帳戶** — 現有的 Transit Gateway 和在其中建立資源共用的許可 AWS Resource Access Manager。
+ **Client VPN 端點帳戶** — 建立 Client VPN 端點並接受 AWS Resource Access Manager 資源共用的許可。

在 Client VPN 端點帳戶中，使用 [accept-resource-share-invitation](https://docs.aws.amazon.com/cli/latest/reference/ram/accept-resource-share-invitation.html) 命令在 AWS Resource Access Manager 主控台中接受資源共用。接受共享後，當您建立 Client VPN 端點時，傳輸閘道 ID 下拉式清單中會顯示傳輸閘道。

## 考量和限制
<a name="cvpn-tgw-limitations"></a>

當您使用 Transit Gateway 與 Client VPN 整合時，請考慮下列事項：
+ **關聯限制**
  + 您無法在單一端點中混合 VPC 子網路關聯和 Transit Gateway 關聯。
  + 每個端點只能使用一種關聯類型。
+ **安全群組**
  + Transit Gateway 端點不支援安全群組型授權。
  + 僅使用網路型授權規則。
+ **路由管理**
  + 不支援來自 Transit Gateway 的自動路由傳播。
  + 您必須手動定義目的地網路的路由。
+ **CIDR 重疊**
  + Client VPN CIDR 區塊不應與其他 Transit Gateway 附件或 Transit Gateway CIDR 區塊重疊。
  + Transit Gateway 不支援跨連接的 VPCs 重疊 CIDR 範圍。
+ **區域限制**
  + Client VPN 端點和 Transit Gateway 必須位於相同的 AWS 區域。
  + Client VPN 不支援跨區域傳輸閘道對等互連。
+ **可用區域**
  + 每個端點最多可以指定 5 個可用區域。
  + 如果未指定， AWS 會自動指派 2 個可用區域。
  + Client VPN 和 Transit Gateway 必須同時支援所有指定的可用區域。
+ **傳回路由**
  + 連接到 Transit Gateway 的 VPCs 必須設定傳回路由，以將目的地為 Client VPN CIDR 的流量路由回 Transit Gateway。
  + 如果沒有適當的傳回路由，VPN 用戶端無法存取 VPCs中的資源。
    + **對於 IPv4**：Client VPN CIDR 在端點建立時已知。
    + **對於 IPv6**：您必須描述傳輸閘道路由表，以判斷指派給 Client VPN 端點的 IPv6 CIDR 範圍 （與 Client VPN 端點相關聯的傳輸閘道路由表中的最大 CIDR 範圍），因為 IPv6 用戶端 CIDR 範圍會自動指派 AWS Client VPN。
+ **連線和流程日誌**
  + 您可以啟用[傳輸閘道流量日誌](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-flow-logs.html)，以擷取進出傳輸閘道之 IP 流量的相關資訊。您可以啟用 [Client VPN 連線日誌](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-working-with-connection-logs.html)，以擷取 Client VPN 連線事件的相關資訊。
  + 您可以比較 Transit Gateway 流量日誌事件中的用戶端 IP 和時間戳記與 Client VPN 連線日誌中的相同用戶端 IP 和期間，將 Transit Gateway 流量日誌事件與 Client VPN 連線關聯。
+ **網際網路連線**
  + 若要透過具有 Transit Gateway 的 Client VPN 存取網際網路，而不需要分割通道，連接的 VPC 必須設定 NAT。
    + **針對 IPv4**：設定 NAT 閘道，以公有 IPs地址取代 Client VPN 用戶端 IP。
    + **對於 IPv6**：請參閱[使用 IPv6 的集中式網際網路傳出流量](https://docs.aws.amazon.com/whitepapers/latest/ipv6-on-aws/advanced-dual-stack-and-ipv6-only-network-designs.html#centralized-internet-outbound-traffic-with-ipv6)。