スキップしてコンテンツを表示

Fargate内からのドメイン名解決が特定のドメイン名のみ失敗する

0

Fargateで動作しているコンテナの中から、特定のドメイン名の名前解決を行うと、半々以上の割合で失敗します。

Fargateコンテナはawsvpcネットワークモードで動作しているのですが、同じVPCにあるEC2インスタンスからは普通に名前解決に成功します。 コンテナは特定のコンテナではなく、例えばnginxの公式のコンテナを同じECS Cluster上にDeployした場合にも、同様に特定のドメイン名解決に失敗します。

コンテナ内にログインしてdigコマンドをインストールし、+traceオプションをつけて実行すると、

;; UDP setup with 2600:9000:5300:3000::1#53(2600:9000:5300:3000::1) for a.b.example.net failed: network unreachable.

;; UDP setup with 2600:9000:5304:8600::1#53(2600:9000:5304:8600::1) for a.b.example.net failed: network unreachable.

;; UDP setup with 2600:9000:5306:7200::1#53(2600:9000:5306:7200::1) for a.b.example.net failed: network unreachable.

というように、IPv6で問い合わせようとして失敗している様子が確認できました。

VPCのIPv6設定は全てオフで、コンテナにもIPv6はリンクローカルアドレスのみが割り当てられています。 該当のドメインはRoute 53で運用されており、上記IPv6アドレスはawsdnsのaaaaレコードです。

上で書いた同じVPC内のEC2インスタンス上で+trace付きでdigしても、問い合わせは全てIPv4で行われていました。こちらに割り当てられているIPv6アドレスもリンクローカルのみとなります。

以上の現象ですが、何か原因および対処法等わかりますでしょうか?

1回答
-1

この問題は、AWS FargateコンテナでのDNS解決において、IPv6アドレスを使用しようとして失敗していることが原因と考えられます。以下に原因と対処法を説明します:

  1. 原因: Fargateコンテナ内のDNSリゾルバーが、IPv6アドレスを優先して使用しようとしていますが、VPCのIPv6設定がオフになっているため、IPv6通信ができず失敗しています。一方、EC2インスタンスではIPv4のみを使用しているため、問題が発生していません。

  2. 対処法: a. コンテナ内のDNS設定を変更し、IPv4のみを使用するように強制します。これは、/etc/resolv.confファイルに「options single-request-reopen」を追加することで実現できます。

    b. コンテナのDockerfileやECSタスク定義で、環境変数RES_OPTIONS="-u"を設定します。これにより、DNSクエリがUDPのみを使用するようになり、IPv6の使用を回避できます。

    c. VPCのDNS設定を確認し、必要に応じて調整します。AWS VPCのDNS設定で「enableDnsHostnames」と「enableDnsSupport」が有効になっていることを確認してください。

    d. Fargateタスクのネットワーク設定を見直し、DNSサーバーのIPアドレスが正しく設定されていることを確認します。

    e. セキュリティグループとネットワークACLの設定を確認し、必要なDNSトラフィック(ポート53)が許可されていることを確認します。

これらの対処法を試すことで、Fargateコンテナ内からの特定のドメイン名解決の問題が解決される可能性が高いです。問題が解決しない場合は、AWS supportに連絡して詳細な調査を依頼することをお勧めします。
Sources
Troubleshoot Amazon RDS for MySQL and Amazon RDS for MariaDB Errors | AWS Database Blog
Accelerate IPv6 application migration with AWS PrivateLink and dual stack Network Load Balancers UDP support | Networking & Content Delivery

回答済み 1年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ