DNS のバックアップ(No.14)


DNS とは

名称

  • Domain Name System

概要

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

DNSの利用

ゾーン

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

ネームサーバ

DNSの仕様

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

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

ポート番号

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

DNSリクエストの暗号化方式(クライアントとフルリゾルバ間)

  • UDPの代わりにHTTPSまたはTLSを使う。
    • DoH -DNS over HTTPS
    • DoT -DNS over TLS

DNSリクエストの暗号化方式(フルリゾルバと権威リゾルバ間)

DNSの構成要素

リゾルバ

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

スタブリゾルバ

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

フルサービスリゾルバ

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

(補足) フォワーダ

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

権威サーバ

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

ルートサーバ

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

可用性の向上

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

DNSサーバ

  • DNSサーバには、コンテンツ機能とキャッシュ機能がある。

コンテンツサーバ

キャッシュサーバ(フルサービスリゾルバ)

  • Webブラウザはフルサービスリゾルバに対して問い合わせをする。
  • 個人と企業
    • 個人の場合は、契約しているISPが管理しているフルサービスリゾルバを利用する。
    • 企業の場合は、情報システム部門が管理しているフルサービスリゾルバを利用する。
  • フルリゾルバの設定(Linux)
    • /etc/resolv.conf の「nameserver」で指定する。

名前解決について

名前解決の手順

  1. クライアントは自ドメインのDNSサーバに問い合わせをする。
  2. 自ドメインのDNSサーバは、ルートサーバから下位のDNSサーバに向かって問い合わせを繰り返す。
  3. 自ドメインのDNSサーバは、目的のホスト名のDNSサーバからIPアドレスを取得し、クライアントに応答する。

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

再帰的問い合わせ

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

非再帰的問い合わせ

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

正引きと逆引き

  • 正引き
    • ドメイン名に対応するIPアドレスを検索すること
  • 逆引き
    • IPアドレスに対応するドメイン名を検索すること

リソースレコード

グルーレコード

  • 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サーバソフトウェア

  • OpenDNS
  • OpenNIC

DNSサーバを使ったセキュリティ上の攻撃手法

  • DNSリフレクション攻撃

DNSリクエストの暗号化

暗号化アプリ

DNS関連のコマンド

bind-util

  • yum -y install bind-utils

kdig

mDNS

  • マルチキャストDNS

関連サイト

関連用語(DNS)

  • ゾーンカット
  • ゾーン頂点

関連用語