AWS Client VPN エンドポイントで DNS はどのように機能しますか?

最終更新日: 2020 年 4 月 10 日

AWS Client VPN エンドポイントを作成しています。エンドユーザー (AWS Client VPN に接続されているクライアント) がドメイン名解決のためにクエリを実行する DNS サーバーを指定する必要があります。AWS Client VPN エンドポイントで DNS はどのように機能しますか?

解決方法

新しい Client VPN エンドポイントを作成するときに、DNS サーバーの IP アドレスを指定できます。これを行うには、AWS マネジメントコンソールAWS コマンドラインインターフェイス (AWS CLI)、または API を使用して、「DNS サーバーの IP アドレス」パラメータで IP アドレスを指定します。

既存の Client VPN エンドポイントを変更して、DNS サーバーの IP アドレスを指定することもできます。これを行うには、AWS マネジメントコンソールAWS CLI、または API を使用して「DNS サーバーの IP アドレス」パラメータを変更します。

「DNS サーバーの IP アドレス」パラメータの設定に関する考慮事項

  • 高可用性を実現するには、2 つの DNS サーバーを指定することがベストプラクティスです。プライマリ DNS サーバーへの到達ができなくなると、エンドユーザーのデバイスはセカンダリ DNS サーバーにクエリを再送信します。
    注意: プライマリ DNS サーバーが「SERVFAIL」で応答した場合、DNS リクエストはセカンダリ DNS サーバーに再送信されません。
  • エンドユーザーが Client VPN エンドポイントに接続した後、指定された両方の DNS サーバーに到達できることを確認します。DNS ルックアップは、「DNS サーバーの IP アドレス」パラメータに依存します。DNS サーバーに到達できない場合、DNS リクエストが失敗し、接続の問題が発生する場合があります。
  • 「DNS サーバーの IP アドレス」パラメータはオプションです。DNS サーバーが指定されていない場合、エンドユーザーのデバイスに設定されている DNS IP アドレスを使用して DNS クエリが解決されます。
  • AmazonProvidedDNS (または Route 53 リゾルバーの受信エンドポイント) を Client VPN DNS サーバーとして使用する場合:
    • VPC に関連付けられた Amazon Route 53 プライベートホストゾーンのリソースレコードを解決できます。
    • Amazon Relational Database Service (Amazon RDS) パブリックホスト名と (「プライベート DNS」が有効となっている) VPC インターフェイスエンドポイントからアクセス可能な AWS のサービスのエンドポイント名は、プライベート IP アドレスに解決されます。
      注意: 関連付けられている VPC で「DNS 解決」および「DNS ホスト名」が有効になっていることを確認してください。
  • Client VPN エンドポイントはソース NAT を使用して、関連付けられた VPC 内のリソースに接続することに留意してください。
  • クライアントデバイスが Client VPN トンネルを確立した後、「DNS サーバーの IP アドレス」パラメータが適用されます。フルトンネルでもスプリットトンネルでも適用されます。
    • フルトンネル: クライアントデバイスがトンネルを確立した後、VPN トンネルを経由するすべてのトラフィックのルートがエンドユーザーのデバイスのルートテーブルに追加されます。これにより、すべてのトラフィック (DNS トラフィックを含む) が Client VPN トンネルを介してルーティングされます。Client VPN に関連付けられた VPC (サブネット) と Client VPN ルートテーブルに、設定された DNS サーバーに到達するための適切なルートがない場合、DNS ルックアップは失敗する場合があります。
    • スプリットトンネル: Client VPN トンネルが確立されると、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 サーバーの IP アドレス」パラメータが設定されていないため、DNS トラフィックはまだ VPN を経由しません。クライアントと DNS サーバー間の DNS トラフィックはローカルのままです。クライアントマシンには、ローカル DNS リゾルバーへの到達を可能とするため、ローカル DNS サーバーの IP (en0 上の送信先 192.168.1.1/32) への設定された静的ルートがすでに存在しています。ドメイン名がそれぞれの IP に解決された後、解決された IP へのアプリケーショントラフィックは VPN トンネルを通過します。

以下は、この例のスニペットです。

$ cat /etc/resolv.conf | grep nameserver
nameserver 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 アドレスが指定されていない)。

このシナリオでは、クライアントは、ローカル DNS サーバーの IP アドレスとして、198.168.1.1 のローカル DNS サーバーを使用するのではなく、パブリック DNS を使用します (この例では 8.8.8.8)。en0 を使用する 8.8.8.8 の静的ルートがないため、8.8.8.8 に送信されるトラフィックは Client VPN トンネルを経由します。Client VPN エンドポイントがインターネットにアクセスするように設定されていない場合、パブリック DNS (8.8.8.8) に到達できず、リクエストクエリがタイムアウトします。

$ cat /etc/resolv.conf | grep nameserver
nameserver 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 アドレスは、Client VPN エンドポイントに関連付けられた VPC へのトランジットゲートウェイで接続された別の VPC (10.10.0.0/16) に存在する Route 53 リゾルバーの受信エンドポイントの IP アドレスを表します。
  • 関連付けられた 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 および 10.10.0.43 が DNS サーバーとして設定されているため、クライアントが VPN トンネルを確立すると、これらの DNS サーバーのパラメータがエンドユーザーのホストマシンにプッシュされます。

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

クライアントマシンによって発行された DNS クエリは、VPN トンネルを経由して Client VPN VPC に移動します。次に、DNS リクエストはソース NAT され、トランジットゲートウェイ経由で Amazon Route 53 リゾルバーエンドポイントに転送されます。ドメインが IP アドレスに解決された後、アプリケーショントラフィックも確立された VPN トンネルを通過します (解決された送信先 IP が Client VPN エンドポイントのルートテーブルからのルートと一致する場合のみ)。

この設定を使用すると、エンドユーザーは以下を解決できます。

  • 標準 DNS 解決を使用する外部ドメイン名。
  • Route 53 リゾルバー 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)
(...)

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合