AWS Route53で設定していたDNSが不安定になる現象が発生しました。本記事では、その概要、発生した現象、原因、解決方法を詳しく解説します。
概要
AWS Route53を利用して、ステージング環境と本番環境のDNS設定を行っていました。しかし、ステージング環境の特定のサブドメインに対するDNSクエリが不安定になり、期待通りの結果が返ってこない問題が発生しました。この問題を解決するために行った設定変更とその技術的背景についてご紹介します。
現象
以下のようなDNS設定を行っていました。
ステージング環境の設定
stg.app.example.comのホストゾーン
本番環境の設定
example.comのホストゾーンapp.example.comのホストゾーン
以下のレコードが設定されていました。
example.comのホストゾーンにapp.example.comのNSレコードexample.comのホストゾーンにstg.app.example.comのNSレコード
この設定により、stg.app.example.com のDNSサーバーからレコードの返却が不安定になる現象が発生しました。具体的には、dig +short stg.app.example.com a コマンドでクエリを行うと、結果が返却されたりされなかったりしました。
原因
現象の原因を分析したところ、以下の要因が考えられました。
1. DNSキャッシュの影響
DNSクライアントや中間のリゾルバーがNSレコードやAレコードをキャッシュすることがあります。キャッシュされた情報が古くなっていたり、不完全だったりすると、時折正しい結果が返されないことがあります。
2. 複数のネームサーバー間の同期の問題
example.com ゾーンに存在する stg.app.example.com のNSレコードが、app.example.com ゾーンにある stg.app.example.com のNSレコードと不整合を起こしている可能性があります。この不整合により、DNSクエリが異なるネームサーバーに問い合わせを行い、異なる結果を返すことがあります。
3. DNSデリゲーションの問題
example.com のホストゾーンに stg.app.example.com のNSレコードを追加したことが問題でした。これは、 stg.app.example.com のゾーンデリゲーションを不適切に行っているためです。親ゾーン( example.com )のNSレコードが、適切な子ゾーン( stg.app.example.com )のネームサーバーに指示を出す必要がありますが、 example.com のホストゾーンに設定した stg.app.example.com のNSレコードは、 app.example.com のホストゾーンのNSレコードと競合し、不整合が生じました。
解決方法
以下の設定変更を行うことで、DNSの不安定な挙動を改善しました。
1. example.com のホストゾーンに設定された stg.app.example.com のNSレコードを削除
example.com のホストゾーンから stg.app.example.com のNSレコードを削除しました。これにより、ネームサーバーのデリゲーションの不整合が解消されました。
2. app.example.com のホストゾーンに stg.app.example.com のNSレコードを追加
stg.app.example.com のネームサーバーを app.example.com のホストゾーンに追加しました。これにより、 stg.app.example.com のネームサーバーは適切に app.example.com のサブドメインとしてデリゲーションされ、DNSクエリが正しいネームサーバーに到達し、安定した結果が得られるようになりました。
まとめ
本記事では、AWS Route53で発生したDNSの不安定な挙動について、その原因と解決方法を解説しました。適切なDNSデリゲーション設定を行うことの重要性を再確認できる事例でした。DNS設定においては、ゾーン間のデリゲーションやレコードの整合性を十分に確認することが重要です。今後の設定変更においても、今回の経験を活かして、安定したDNS運用を目指していきましょう。




