リモートネットワークからプライベートホストゾーンのレコードを解決するように、Amazon Route 53 Resolver のインバウンドのエンドポイントを設定したいと考えています。
簡単な説明
Amazon Virtual Private Cloud (Amazon VPC) を使用すると、VPC は Route 53 リゾルバーから自動 DNS 解決を受け取ることができます。VPC 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスは、リゾルバーに DNS クエリを送信できます。これを行うために、インスタンスは VPC CIDR IPv4 ネットワーク範囲のベースにあるリザーブド IP アドレスに 2 を加えたものを使用します。リモートネットワークと VPC の間にネットワーク接続がある場合、リモートネットワークの DNS リゾルバーは DNS クエリを VPC のリゾルバーに転送できます。この接続は、AWS ダイレクトコネクトまたは VPN 接続によって実現されます。ただし、リゾルバーは VPC ネットワーク範囲外の IP アドレスからの DNS クエリを受け付けません。これを解決するには、VPC にインバウンドエンドポイントを作成します。このインバウンドエンドポイントは、受信した DNS クエリをリゾルバーに転送します。これらのクエリの処理は、VPC 内から送信されるクエリの処理と同じです。
解決策
前提条件を満たす
まず、インバウンドエンドポイントを作成する VPC の DNS サポート属性で DNS ホスト名と DNS 解決を有効にします。
次に、該当するプライベートホストゾーンをその VPC に関連付けます。
プライベートホストゾーンと VPC が同じアカウントにある場合は、次の手順を実行してください。
- Route 53 コンソールを開きます。
- ナビゲーションペインで [ホストゾーン] を選択します。
- クエリするレコードを含むプライベートホストゾーンを選択します。
- 検索バーで、該当する VPC を検索します。次に、[新しい VPC を関連付ける] を選択します。
プライベートホストゾーンと VPC が異なるアカウントにある場合は、AWS コマンドラインインターフェイス (AWS CLI) を使用してアカウント間の関連付けを実行します。
注: AWS CLI コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください。
オンプレミスの DNS サーバーが再帰クエリのみを送信することを確認します。Route 53 インバウンドリゾルバーは反復クエリをサポートしません。
インバウンドエンドポイントリゾルバーを作成したサブネットに関連付けられているルートテーブルに、オンプレミスネットワークへのルートが含まれていることを確認します。
インバウンドエンドポイントを作成したサブネットでカスタムネットワークアクセスコントロールリスト (ネットワーク ACL) を使用する場合は、特定のトラフィックを許可する必要があります。ネットワーク ACL が次のポートのトラフィックを許可していることを確認します。
- 宛先ポート範囲が 1024 ~ 65535 のオンプレミス DNS サーバーへの UDP および TCP トラフィック (アウトバウンド NACL ルール)。
- ポート 53 上のオンプレミス DNS サーバーからの UDP および TCP トラフィック (インバウンド NACL ルール)。
- インバウンドに関連するセキュリティグループはすべて、オンプレミス DNS サーバーの IP アドレスからの TCP および UDP ポート 53 のトラフィックを許可する必要があります。
オンプレミスネットワークと AWS の間にファイアウォールがある場合、ファイアウォールは特定のトラフィックを許可する必要があります。オンプレミス DNS サーバーの IP アドレスに対する TCP および UDP ポート 53 のトラフィックを許可していることを確認します。
また、AWS Direct Connect 接続または VPN を介してインバウンドリゾルバーエンドポイント IP アドレスへの接続を確立している必要があります。
インバウンドエンドポイントの設定
1. Route 53 コンソールを開きます。
2. ナビゲーションペインで、[インバウンドエンドポイント] を選択します。
3. ナビゲーションバーで、インバウンドエンドポイントを作成する VPC の AWS リージョンを選択します。
4. [インバウンドエンドポイントの作成] を選択します。
5. インバウンドエンドポイントの一般設定を完了します。宛先ポート 53 のリモートネットワークからのインバウンド UDP および TCP トラフィックを許可するこのエンドポイントのセキュリティグループを選択します。
6. DNS クエリ用の IP アドレスを 2 ~ 6 個選択します。リゾルバーにサブネット内の使用可能な IP アドレスから IP アドレスを自動的に選択させることができます。または、IP アドレスを指定できます。少なくとも 2 つの異なるアベイラビリティーゾーンの IP アドレスを選択することをお勧めします。
7. 各 IP アドレスの サブネット には、次の値を持つサブネットを選択します。
**対応するルートテーブル:**これらのルートテーブルには、AWS Direct Connect または VPN を経由するリモートネットワーク上の DNS リゾルバーの IP アドレスへのルートが含まれている必要があります。
**ネットワーク ACL:**これらは、宛先ポート 53 のリモートネットワークからの UDP トラフィックと TCP トラフィックの両方を許可する必要があります。また、宛先ポート範囲 1024~65535 のリモートネットワークへの UDP トラフィックと TCP トラフィックの両方を許可する必要があります。クライアントタイプによっては、ネットワーク ACL に異なる範囲を使用する場合があります。
8. (オプション) [タグ] セクションを実行します。
9. [インバウンドエンドポイントの作成] を選択します。
**注:**インバウンドリゾルバーにはFQDNはありません。そのため、インバウンドエンドポイントを作成すると、Route 53 は選択したサブネットに Elastic Network Interface を作成します。これらのネットワークインターフェースの IP アドレスは DNS クエリを転送します。
設定をテストする
テストする前に、構成が次の条件を満たしていることを確認します。
- リモートネットワークの DNS サーバーは、プライベートホストゾーンのドメイン名の DNS クエリをインバウンドエンドポイントの IP アドレスに条件付きで転送する必要があります。
- リモート DNS サーバーは、ドメイン名の権限をインバウンドエンドポイントに委任するのではなく、ドメイン名の DNS クエリを転送する必要があります。
- インバウンドエンドポイントは、再帰的な DNS クエリのみをサポートする必要があります。インバウンドエンドポイントに送信される反復的な DNS クエリはタイムアウトします。オンプレミスの DNS サーバーが 再帰が必要 を 0 (false) に設定した DNS クエリを送信した場合、インバウンドエンドポイントは応答を返しません。この情報はパケットキャプチャで確認できます。
- AWS Transit Gateway を使用する場合は、サブネットが Transit Gateway アタッチメントに関連付けられていることを確認してください。これは DNS クエリを解決するために必要です。
設定をテストするには、リモートネットワーク上のクライアントからプライベートホストゾーンのレコードの 1 つの DNS 解決を実行します。次のコマンドでは、RECORD_NAME と RECORD_TYPE を適切な値に置き換えてください。
Linux または MacOS の場合は、次の例のように dig RECORD_NAME RECORD_TYPE を実行します。
dig example.com A
Windows の場合は、次の例のように nslookup RECORD\ _NAME RECORD\ _TYPE を実行します。
nslookup example.com
関連情報
VPC とネットワーク間の DNS クエリの解決
アウトバウンド DNS クエリをネットワークに転送する
アウトバウンドエンドポイントの管理
Route 53 リゾルバーのエンドポイントに関する DNS 解決の問題をトラブルシューティングするにはどうすれば良いですか?