DNS は AWS クライアント VPN エンドポイントとどのように連携しますか?

所要時間4分
0

AWS クライアント VPN のエンドポイントを作成しています。ドメイン名解決のために、エンドユーザーがクエリしなければならない DNS サーバーを指定する必要があります。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーを受け取った場合は、最新の AWS CLI バージョンを使用していることを確認してください

新しいクライアント VPN エンドポイントを作成するときは、DNS サーバーの IP アドレスを指定します。AWS マネジメントコンソールcreate-client-vpn-endpoint AWS CLI コマンド、または CreateClientVpnEndpoint API を使用して、「DNS サーバー IP アドレス」パラメータに IP アドレスを指定します。または、既存のクライアント VPN エンドポイントを変更します。AWS マネジメントコンソール、modify-client-vpn-endpoint AWS CLI コマンド、または ModifyClientVpnEndpoint API を使用して「DNS サーバー IP アドレス」を変更します。

「DNS サーバーの IP アドレス」パラメータを設定する

高可用性を実現するには、2 つの DNS サーバーを指定するのがベストプラクティスです。プライマリ DNS サーバーにアクセスできなくなった場合、エンドユーザーデバイスはクエリをセカンダリ DNS サーバーに再送信します。

注: プライマリ DNS サーバーが SERVFAIL で応答した場合、DNS 要求はセカンダリ DNS サーバーに再送信されません。

エンドユーザーがクライアント 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 ホスト名」が有効になっていることを確認してください。

クライアント VPN エンドポイントは、ソース NAT を使用して、関連する VPC 内のリソースに接続します。

クライアントデバイスがクライアント VPN トンネルを確立すると、「DNS サーバー IP アドレス」パラメータがフルトンネルまたはスプリットトンネルに適用されます。

  • **フルトンネル:**クライアントデバイスがトンネルを確立すると、VPN トンネルを通過するすべてのトラフィックのルートがエンドユーザーデバイスのルートテーブルに追加されます。次に、DNS トラフィックを含むすべてのトラフィックは、クライアント VPN トンネルを経由してルーティングされます。関連する VPC に、DNS サーバーに到達するルートがない場合、検索は失敗します。
  • **スプリットトンネル:**クライアント VPN トンネルが作成されると、クライアント VPN ルートテーブル内のルートがエンドユーザーデバイスのルートテーブルに追加されます。関連する VPC 経由で DNS サーバーにアクセスできる場合は、DNS サーバーの IP アドレスのルートをクライアント VPN ルートテーブルに追加します。

次の例は、一般的なシナリオでの DNS を示しています。これらは Windows 環境と Linux 環境の両方に適用されます。Linux 環境では、エンドユーザーのホストマシンが汎用ネットワーク設定を使用する場合にのみ、例が説明どおりに機能します。

シナリオ 1: 「DNS サーバー IP アドレス」パラメータをオフにしたフルトンネル

例 1 の設定:

  • エンドユーザークライアントの IPv4 CIDR = 192.168.0.0/16。
  • クライアント VPN エンドポイント VPC の CIDR = 10.123.0.0/16。
  • ローカル DNS サーバーの IP アドレス = 192.168.1.1。
  • 「DNS サーバー IP アドレス」パラメータはオフになっています。DNS サーバーの IP アドレスは指定されていません。

「DNS サーバー IP アドレス」パラメータがオフになっているため、エンドユーザーのホストマシンはローカル DNS サーバーを使用して DNS クエリを解決します。

このクライアント VPN はフルトンネルモードに設定されています。すべてのトラフィックを VPN 経由 (utun1 上の送信先 0/1) で送信するには、仮想アダプターを指すルートが追加されます。ただし、「DNS サーバー IP アドレス」パラメータが設定されていないため、DNS トラフィックはまだ VPN を経由しません。クライアントと DNS サーバー間の DNS トラフィックはローカルのままです。DNS リゾルバーに到達するために、クライアントマシンにはローカル DNS サーバーアドレス (en0 上の送信先 192.168.1.1/32) への優先スタティックルートがすでに設定されています。ドメイン名がそれぞれの 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。
  • クライアント 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 にはスタティックルートがないため、このトラフィックはクライアント VPN トンネルを経由します。クライアント 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。
  • クライアント 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 とトランジットゲートウェイに関連付けられているクライアント VPN エンドポイントに接続します。
  • 関連する VPC には「DNS ホスト名」と「DNS サポート」が有効になっており、関連する Route 53 プライベートホストゾーン (example.local) があります。

このクライアント VPN は split-tunnel モードで設定されています。クライアント 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.22810.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 トンネルを経由してクライアント VPN VPC に送信される DNS クエリを発行します。次に、DNS リクエストはトランジットゲートウェイを介して Route 53 Resolver エンドポイントに転送されます。ドメインが IP アドレスに解決されると、アプリケーショントラフィックも確立された VPN トンネルを通過します。これは、解決された宛先 IP アドレスがクライアント 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公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ