DNS 如何與我的 AWS Client VPN 端點搭配使用?

4 分的閱讀內容
0

我要建立一個 AWS Client VPN 端點。我需要指定我的最終使用者必須查詢網域名稱解析的 DNS 伺服器。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本

在建立新的 Client VPN 端點時,請指定 DNS 伺服器 IP 地址。使用 AWS 管理主控台create-client-vpn-endpoint AWS CLI 命令或 CreateClientVpnEndpoint API 在「DNS 伺服器 IP 地址」參數中指定 IP 地址。或者,修改現有的 Client VPN 端點。使用 AWS 管理主控台、modify-client-vpn-endpoint AWS CLI 命令或 ModifyClientVpnEndpoint API 修改「DNS 伺服器 IP 地址」。

設定「DNS 伺服器 IP 地址」參數

為了獲得高可用性,最佳實務是指定兩個 DNS 伺服器。如果主要 DNS 伺服器變得無法連線,最終使用者裝置會將查詢重新傳送給次要 DNS 伺服器。

**注意:**如果主要 DNS 伺服器以 SERVFAIL 回應,則 DNS 請求不會再次傳送至次要 DNS 伺服器。

確認最終使用者在使用者連線到 Client VPN 端點之後,可以連線到兩部指定的 DNS 伺服器。如果無法連上 DNS 伺服器,則 DNS 請求可能會失敗並導致連接問題。

「DNS 伺服器 IP 地址」參數是選用的。如果沒有指定 DNS 伺服器,則會使用在最終使用者裝置上設定的 DNS IP 地址來解析 DNS 查詢。

如果您的 Client VPN DNS 伺服器是 AmazonProvidedDNS 或 Amazon Route 53 Resolver 入埠端點,則遵循以下準則:

  • 您可以解析與虛擬私有雲端 (VPC) 關聯的 Route 53 私有託管區域的資源記錄。
  • 如果已啟用「私有 DNS」,則可從 VPN 介面預約存取的 Amazon RDS 公用主機名稱會解析為私有 IP 地址。對於可從 VPC 介面端點存取的 AWS 服務端點名稱也是如此。
    **注意:**請確定已針對關聯的 VPC 啟用「DNS 解析」和「DNS 主機名稱」。

Client VPN 端點使用來源 NAT 連線至關聯 VPC 中的資源。

用戶端裝置建立 Client VPN 通道之後,「DNS 伺服器 IP 地址」參數會套用至全通道或分割的通道:

  • **全通道:**用戶端裝置建立通道之後,透過 VPN 通道傳輸所有流量的路由會新增至最終使用者裝置的路由表。然後,所有流量 (包括 DNS 流量) 都會透過 Client VPN 通道路由傳送。如果關聯的 VPC 沒有連線 DNS 伺服器的路由,則查詢會失敗。
  • **分割的通道:**建立 Client VPN 通道後,Client VPN 路由表中的路由會新增至最終使用者裝置的路由表。如果您可以透過關聯的 VPC 連線 DNS 伺服器,則在 Client VPN 路由表中新增 DNS 伺服器 IP 地址的路由。

下列範例示範常見情況中的 DNS。它們適用於 Windows 和 Linux 環境。在 Linux 環境中,範例只有在最終使用者的主機使用通用網路設定時才能正常運作。

情況 1: 使用「DNS 伺服器 IP 地址」參數的全通道已關閉

範例 1 組態:

  • 最終使用者用戶端的 IPv4 CIDR = 192.168.0.0/16。
  • Client VPN 端點 VPC 的 CIDR = 10.123.0.0/16。
  • 本機 DNS 伺服器 IP 地址 = 192.168.1.1。
  • 「DNS 伺服器 IP 地址」參數已關閉。DNS 伺服器 IP 地址未指定。

由於「DNS 伺服器 IP 地址」參數已關閉,因此最終使用者的主機會使用本機 DNS 伺服器來解析 DNS 查詢。

此 Client VPN 以全通道模式設定。為透過 VPN 傳送所有流量 (utun1 的目的地 0/1),新增了指向虛擬介面卡的路由。但是,DNS 流量仍然不會透過 VPN 傳輸,因為未設定「DNS 伺服器 IP 地址」參數。用戶端和 DNS 伺服器之間的 DNS 流量仍保留在本機。用戶端機器已經有連接到本機 DNS 伺服器 IP 地址 (en0 的目的地 192.168.1.1/32) 以到達 DNS 解析器的偏好靜態路由。將網域名稱解析為相應的 IP 地址後,傳輸至已解析 IP 地址的應用程式流量會透過 VPN 通道傳輸。

範例片段

$ cat /etc/resolv.conf | grep nameservernameserver 192.168.1.1

$ netstat -nr -f inet | grep -E 'utun1|192.168.1.1'0/1                192.168.0.1        UGSc           16        0   utun1
192.168.1.1/32     link#4             UCS             1        0     en0
(...)

$ dig amazon.com;; ANSWER SECTION:
amazon.com.        32    IN    A    176.32.98.166
;; SERVER: 192.168.1.1#53(192.168.1.1)
(...)

範例 2 組態:

  • 最終使用者用戶端的 IPv4 CIDR = 192.168.0.0/16。
  • Client VPN 端點 VPC 的 CIDR = 10.123.0.0/16。
  • 本機 DNS 伺服器 IP 地址設定為公共 IP = 8.8.8.8。
  • 「DNS 伺服器 IP 地址」參數已關閉。DNS 伺服器 IP 地址未指定。

在此範例中,用戶端不是在 198.168.1.1 上使用本機 DNS 服務器,而是在 8.8.8.8 上使用公共 DNS 地址。因為 en0 上的 8.8.8.8 沒有靜態路由,所以此流量透過 Client VPN 通道傳輸。如果 Client VPN 端點未設定為存取網際網路,則無法連線至 8.8.8.8 上的公共 DNS。然後,請求查詢會逾時。

$ cat /etc/resolv.conf | grep nameservernameserver 8.8.8.8

$ netstat -nr -f inet | grep -E 'utun1|8.8.8.8'0/1                192.168.0.1      UGSc            5        0   utun1

$ dig amazon.com(...)
;; connection timed out; no servers could be reached

情況 2: 使用「DNS 伺服器 IP 地址」參數的分割通道已啟用

範例組態:

  • 最終使用者用戶端的 IPv4 CIDR = 192.168.0.0/16。
  • Client VPN 端點的 VPC CIDR = 10.123.0.0/16。
  • 「DNS 伺服器 IP 地址」參數已開啟,並設定為 10.10.1.228 和 10.10.0.43。這些 IP 地址代表位於另一個 VPC (10.10.0.0/16) 中的 Route 53 Resolver 入埠端點的 IP 地址。IP 地址連線至與傳輸閘道相關聯 VPC 的 Client VPN 端點。
  • 關聯的 VPC 已開啟「DNS 主機名稱」和「DNS 支援」,並具有關聯的 Route 53 私有託管區域 (example.local)。

此 Client VPN 以分割通道模式設定。Client VPN 路由表中的路由新增至使用者主機路由表中:

$ netstat -nr -f inet | grep utun1(...)
10.10/16           192.168.0.1        UGSc            2        0   utun1 # Route 53 Resolver inbound endpoints VPC CIDR
10.123/16          192.168.0.1        UGSc            0        0   utun1 # Client VPN VPC CIDR
(...)

在此範例中,「DNS 伺服器 IP 地址」參數已啟用。10.10.1.228 and 10.10.0.43 設定為 DNS 伺服器。在用戶端建立 VPN 通道時,DNS 伺服器參數會推送至使用者的主機。

$ cat /etc/resolv.conf | grep nameservernameserver 10.10.1.228 # Primary DNS server
nameserver 10.10.0.43 # Secondary DNS server

用戶端機器發出會透過 VPN 通道傳送至 Client VPN VPC 的 DNS 查詢。接下來,DNS 請求會透過傳輸閘道轉送至 Route 53 Resolver 端點。將網域解析為 IP 地址後,應用程式流量也會透過建立的 VPN 通道傳輸。只要解析的目的地 IP 地址符合 Client VPN 端點路由表中的路由,就會發生這種情況。

透過此組態,終端使用者可以解析使用標準 DNS 解析的外部網域名稱。此組態也會解析來自與 Route 53 Resolver VPC 關聯的私有託管區域的記錄。它還會解析介面端點 DNS 名稱和 EC2 公共 DNS 主機名稱。

$ dig amazon.com;; ANSWER SECTION:
amazon.com.        8    IN    A    176.32.103.205
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)

$ dig test.example.local # Route 53 private hosted zone record ;; ANSWER SECTION:
test.example.local. 10 IN A 10.123.2.1
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)

$ dig ec2.ap-southeast-2.amazonaws.com # VPC interface endpoint to EC2 service in Route 53 Resolver VPC;; ANSWER SECTION:
ec2.ap-southeast-2.amazonaws.com. 60 IN    A    10.10.0.33
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)

$ dig ec2-13-211-254-134.ap-southeast-2.compute.amazonaws.com # EC2 instance public DNS hostname running in Route 53 Resolver VPC;; ANSWER SECTION:
ec2-13-211-254-134.ap-southeast-2.compute.amazonaws.com. 20 IN A 10.10.1.11
;; SERVER: 10.10.1.228#53(10.10.1.228)
(...)
AWS 官方
AWS 官方已更新 10 個月前