A nameserver is a DNS server that translates domain names into IP addresses and other data by either holding authoritative zone records or acting as a recursive resolver that queries other nameservers on behalf of clients. Nameservers receive DNS queries over UDP port 53, check local zone data or cached answers, and either respond directly or refer clients to appropriate servers, with responses exceeding UDP size limits being retried over TCP. Poor nameserver management causes visible outages through lame delegations, single points of failure, stale records, and security vulnerabilities, making redundant servers on separate networks and proper monitoring essential for reliable network operations.
ネームサーバーの仕組み
ネームサーバーはDNS クエリを受信すると、自身が把握している情報を確認し、回答するか、回答できるサーバーをクライアントに案内します。この動作は、そのサーバーが権威サーバー、再帰サーバー、あるいはその両方であるかによって異なります。
- クエリの受信:ネームサーバーは、通常ポート53のUDP経由で、名前、レコードタイプ、およびクラスを含むクエリを受け取ります。
- ローカルデータの確認:権威サーバーは自身のゾーンデータを参照します。再帰サーバーは、キャッシュ内に保存されており、有効期限が切れていない応答がないか確認します。
- 応答またはリファレンス:サーバーにデータがある場合は、レコードを返します。ない場合は、権威サーバーはエラーを返すか、子ゾーンの委任されたネームサーバーへのリファレンスを返します。
- 必要に応じて再帰処理を行う:キャッシュされた回答がない場合、再帰型リゾルバーはルートネームサーバー、次にトップレベルドメインのネームサーバー、さらにそのゾーンの権威サーバーへと順にクエリを送信し、回答が得られるまでリファラルを追跡します。
- 応答とキャッシュ:リゾルバーは最終的な回答をクライアントに送信し、レコードの有効期間(TTL)で設定された時間だけそれをキャッシュします。
UDPのサイズ制限を超える応答、または信頼性が求められる応答は、DNS規格に記載されている通り、TCP経由で再送信されます。ゾーンは通常、少なくとも2台のネームサーバーによって提供され、セカンダリサーバーはゾーン転送を通じてプライマリサーバーからデータをコピーします。
ネームサーバーに関するよくある問題
親ゾーンのNSレコードが、そのゾーンに対して権威ある応答を行わないサーバーを指している場合(移行後や運用終了後によく見られます)。リゾルバーは、一部のクエリでタイムアウトやSERVFAILが発生し、他のクエリでは検索速度が低下します。
親ゾーンに公開されているNSレコードと、ゾーン自体に含まれるNSレコードが異なる場合があります。これは通常、一方のみが更新されたことが原因です。リゾルバーは、キャッシュされているセットに応じて異なるサーバーを使用する場合があり、その結果、障害が断続的に発生することがあります。
ゾーン転送の失敗やSOAシリアル番号のインクリメントが行われなかったために、セカンダリネームサーバーの同期が遅れてしまいます。クライアントは、接続したサーバーによって異なる応答を受け取ることになります。
権威サーバーとなることを意図したサーバーは、あらゆる送信元からの再帰クエリにも応答します。そのため、増幅攻撃やキャッシュプロービングの悪用対象となる可能性があります。