DNS

2023-07-30 (日) 22:07:36

DNS とは

名称

  • Domain Name System

概要

  • IPアドレスドメイン名(ホスト名)の対応表を管理して、利用者から提示されるドメイン名に対応するIPアドレスを応答する仕組み

DNSの利用

DNSの仕様

通信プロトコル(トランスポート層)

  • UDP
    • 一般的なDNSサーバへの接続はUDPが使われている。
    • 最大512B
    • 1往復
    • EDNS0
      • Extension mechanism for DNS version 0
      • DNSの拡張機構
      • UDPのパケットサイズを最大65,535Bまで拡張することを可能とする
      • 1220, 4096 が指定されることが多い
      • OPTリソースレコードでUDPパケットサイズを識別する
  • TCP
    • TCPフォールバック
      • UDPのサイズ(512B)に収まらない場合に限り、TCP fallbackされる仕様(RFC1123)
    • ゾーン転送要求は53/TCPで行われる
    • 3 way handshake

ポート番号

  • 53/UDP ※サイズが512B以下の場合、またはサイズが512Bを超過してEDNS0を使う場合
  • 53/TCP ※サイズが512Bを超過してTCPフォールバックを使う場合

DNSリクエストの暗号化方式

スタブリゾルバとフルリゾルバ間

フルリゾルバと権威リゾルバ間

DNSの構成要素

リゾルバ

  • Resolver
  • 名前解決を行う
    • ホスト名とIPアドレスを紐づけ、ホスト名をIPアドレスに変換する機能。
    • メールアドレスとメールサーバを紐づける機能。
  • リゾルバには、スタブリゾルバとフルリゾルバの2種類ある。

スタブリゾルバ

  • Stub Resolver
  • 別称
    • DNSクライアント
  • パソコンやスマホなどの端末上に搭載されている機能
  • フルリゾルバに対して名前解決を要求する(再帰的要求)

フルリゾルバ

  • Full Resolver
  • 別称
    • フルサービスリゾルバ
    • キャッシュサーバ、DNSキャッシュサーバ、キャッシュDNSサーバ
    • 参照サーバ
    • ネームサーバ、DNSサーバ
  • スタブリゾルバからの名前解決要求(再起的要求)を受けて、権威サーバに対して名前解決の為の問い合わせ(非再帰的要求)を行う
    • 権威サーバへの問い合わせはルートサーバから始まり、名前解決するまで権威サーバの階層をたどって問い合わせを行う
    • ルートサーバのIPアドレスが記載された一覧(ヒントファイル)を保持する
    • ヒントファイルの情報を使ってルートサーバから最新のルートサーバのIPアドレスを得る仕組み(プライミング)
  • 名前解決した内容はキャッシュに保存し、次回の同じ名前解決要求があった場合は、キャッシュに保存されている内容を応答する
    • 名前解決の結果、目的のリソースレコードが見つからなかった場合は、見つからなかったことをキャッシュに保存する(ネガティブキャッシュ)
  • 個人と企業
    • 個人の場合は、契約しているISPが管理しているフルリゾルバを利用する。
    • 企業の場合は、情報システム部門が管理しているフルリゾルバを利用する。
  • フルリゾルバの設定(Linux)
    • /etc/resolv.conf の「nameserver」で指定する。

オープンリゾルバ

(補足) フォワーダ

  • スタブリゾルバとフルリゾルバの間に配置される
  • スタブリゾルバからの名前解決要求を受けて、フルリゾルバに転送する
  • 家庭用のルータなどが備えている機能

権威サーバ

  • 別称
    • 権威DNSサーバ
    • ゾーンサーバ
    • コンテンツサーバ、DNSコンテンツサーバ
    • ネームサーバ、DNSサーバ
  • 権威サーバは、ルートサーバを頂点とした階層構造で構成される。
  • 自身が委任を受けたゾーンの情報と、自身が委任しているゾーンの委任情報を保持する。
  • フルリゾルバからの名前解決要求を受けて(非再帰的要求)、保持している情報を応答する。
  • ゾーンの情報(ゾーンデータ)は、リソースレコードという形式で保持する。

ルートサーバ

  • 別称
    • ルートネームサーバ、DNSルートサーバ
  • ドメイン名空間の頂点(TLS)に位置するサーバ。
  • ドメイン名の名前解決において、TLDの名前解決を行う。

可用性の向上

  • プライマリとセカンダリ
  • 権威サーバはプライマリとセカンダリの2台構成で運用する必要がある。
    • プライマリサーバ(プライマリDNSサーバ)
    • セカンダリサーバ(セカンダリDNSサーバ)
  • ゾーンデータを持つ権威サーバ(プライマリサーバ)のゾーンデータは、ゾーンデータを持たない権威サーバ(セカンダリサーバ)にコピーされる(ゾーン転送)
  • 一般的に、自社の権威サーバをプライマリサーバ、上位プロバイダの権威サーバをセカンダリサーバにする
  • ゾーン転送
    • 権威サーバのプライマリとセカンダリが登録情報を同期させるために行う登録情報の転送機能のこと
    • ゾーン転送要求は、セカンダリサーバからプライマリサーバに対して行われる。
      • 53ポート/TCPで行われる
    • 転送方法の種類
      • AXFR(Authoritative Transfer):ゾーンの全ての情報を転送する
      • IXFR(Incremental Transfer):差分の情報を転送する
    • DNS NOTIFY
      • プライマリサーバでゾーンデータに更新があったことをセカンダリサーバに通知する仕組み

名前解決

名前解決の手順

  1. クライアント(スタブリゾルバ)は自ドメインのDNSサーバ(フルリゾルバ)に名前解決要求をする。
  2. 自ドメインのフルリゾルバは、ルートサーバから下位の権威サーバに向かって問い合わせを繰り返す。
  3. 自ドメインのフルリゾルバは、目的のホスト名の権威サーバからIPアドレスを取得し、スタブリゾルバに名前解決応答をする。

再帰的問い合わせと非再帰的問い合わせ

再帰的問い合わせ

  • recursive query
  • スタブリゾルバからフルリゾルバに対して行われる問い合わせ
  • 再帰的問い合わせを受けたフルリゾルバは、名前解決が完結するまで権威サーバをたどって問い合わせをした結果を応答する

非再帰的問い合わせ

  • non-recursive query
  • 反復問い合わせ (iterative query)
  • フルリゾルバから権威サーバに対して行われる問い合わせ
  • 非再帰的問い合わせを受けたフルリゾルバは、自身が応答できる情報のみを応答する(他のDNSサーバへの問い合わせは行わない)

正引きと逆引き

  • 正引き
    • ドメイン名に対応するIPアドレスを検索すること
  • 逆引き
    • IPアドレスに対応するドメイン名を検索すること
    • アクセスを受けた側がアクセス元を調べる際に使われる

ゾーン

  • 委任により管理を任された範囲のこと
  • ゾーンデータ
    • 対象のゾーンに設定されている情報のこと
  • ゾーンファイル
    • ゾーンデータを記述するファイル。プライマリサーバに設定される
    • RFC1035

リソースレコード

グルーレコード

  • DNSサーバのドメイン名に対応するIPアドレスを、問い合わせ対象のドメインの上位のDNSサーバに登録することで、上位のDNSサーバから問い合わせ対象のDNSサーバに繋がるようにすることで、名前解決できるようにすること。

DNSメッセージ

DNSメッセージの構造

  • 問い合わせと応答のメッセージは構造が同じ
  • 応答のメッセージには問い合わせのメッセージの内容がコピーして作成される
  • 応答情報の各セクションのデータがない場合はセクション自体が作成されない
  • メッセージ内のドメイン名の表現
    • <ラベルの長さ(16進数)><ラベル(16進数)>...<"00"(16進数)>

制御情報

  • Header セクション
    • 0〜15bit
      • ID(16) ※トランザクションID(応答は問い合わせと同じ)
    • 16〜31bit
      • QR(1) ※メッセージの種類[0:問い合わせ、1:応答]
      • OPCODE(4) ※問い合わせの種類[0:通常、4:NOTIFY、5:UPDATE]
      • AA(1)
      • TC(1)
      • RD(1) ※問い合わせ先[0:権威サーバ、1:フルリゾルバ]
      • RA(1) ※名前解決の可否[0:非サポート、1:サポート]
      • Z(1) ※予備("0")
      • AD(1)
      • CD(1)
      • RCODE(4) ※応答コード
    • 32〜47bit
      • QDCOUNT(16) ※Question セクションの数("1")
    • 48〜63bit
      • ANCOUNT(16) ※Answer セクションのリソースレコード数
    • 64〜79bit
      • NSCOUNT(16) ※Authority セクションのリソースレコード数
    • 80〜95bit
      • ARCOUNT(16) ※Additional セクションのリソースレコード数

問い合わせ情報

  • Question セクション

応答情報

  • Anser セクション
  • Authority セクション
  • Additional セクション

DNSのサービス

DNSサーバソフトウェア

権威サーバ

フルリゾルバ

DNS関連の攻撃手法

DNSを狙った攻撃

  • DNS水責め攻撃(ランダムサブドメイン攻撃、サブドメインテイクオーバー)

DNSの仕組みを悪用した他者への攻撃

その他

DNSリクエストの暗号化

暗号化アプリ

DNS関連のコマンド

bind-util

  • yum -y install bind-utils

kdig

mDNS

  • マルチキャストDNS

関連サイト

関連用語(DNS)

  • ゾーンカット
  • ゾーン頂点
  • ネームサーバ
  • lame delegation
    • 権威サーバの登録の問題で、委託元の権威サーバが委託先の権威サーバとして動作していない状態のこと
  • QNAME minimisation
    • フルリゾルバから権威サーバに問い合わせる際の情報を最小限にする技術
    • ルートサーバへの問い合わせは、問い合わせるドメインのTLD、NSリソースレコードのみ
    • TLD権威サーバへの問い合わせは、問い合わせるドメインの2LD、NSリソースレコードのみ
    • RFC 9156

関連用語