DNSの仕組みと設定完全ガイド【2026年版】

インターネットを支える基盤技術であるDNS(Domain Name System)の仕組みを理解し、正確な設定を行うことは、システム管理者やネットワークエンジニアにとって必須のスキルです。DNSの設定ミスはウェブサイトのアクセス不能やメールの送受信障害を引き起こすだけでなく、セキュリティリスクを高める要因にもなります。本ガイドでは、DNSの基本原理から実践的な設定方法、セキュリティ対策、トラブルシューティングまでを網羅的に解説します。特に、2026年に向けた最新の動向や技術仕様の変化にも対応した内容となっていますので、これからDNSを学ぶ方はもちろん、経験者にとっても実務に直結する知識を提供します。


目次


DNSとは何か?その役割と重要性

DNS(Domain Name System)は、人間が理解しやすいドメイン名(例:example.com)を、コンピュータが理解できるIPアドレス(例:192.0.2.1)に変換するためのシステムです。インターネット上のあらゆるサービスはIPアドレスを基盤として動作しており、DNSはその「翻訳機」として機能しています。例えば、ウェブブラウザでhttps://www.google.comにアクセスする際、裏ではDNSによってwww.google.com142.250.190.46(IPv4)や2607:f8b0:4005:80a::2004(IPv6)に変換されています。

DNSの重要性は、単なる「翻訳」にとどまりません。DNSが正常に動作しないと、以下のような深刻な問題が発生します。

  • ウェブサイトへのアクセス不能:DNSサーバが応答しない場合、ブラウザはドメイン名を解決できず、エラーメッセージ(例:「DNS_PROBE_FINISHED_NXDOMAIN」)が表示されます。
  • メールの送受信障害:SMTPサーバがDNSを介してMXレコード(メールサーバのIPアドレス)を取得できない場合、メールの送受信ができなくなります。
  • セキュリティリスクの増大:DNSの脆弱性を悪用した攻撃(例:DNSキャッシュポイズニング、DNSトンネリング)により、機密情報の漏洩や不正アクセスが発生する可能性があります。

総務省の調査によると、2023年の時点で日本国内のインターネット利用者の約85%がDNSを介してウェブサイトにアクセスしており、DNSは現代社会のインフラとして欠かせない存在となっています(出典: 総務省「令和4年度 情報通信利用動向調査」)。そのため、DNSの仕組みと設定を正しく理解し、適切に管理することは、システムの安定稼働とセキュリティ確保のために不可欠です。


DNSの仕組み:名前解決の流れを徹底解説

DNSの仕組みを理解するためには、名前解決のプロセスと、その中で使用される主要な要素(階層構造、クエリの種類、レコードタイプ)を把握する必要があります。以下では、これらの要素を順に解説します。

DNSの階層構造とドメイン名の仕組み

DNSは、階層的な構造を持つ分散データベースです。ドメイン名は、右から左に読むと「ルートドメイン → トップレベルドメイン(TLD) → セカンドレベルドメイン → サブドメイン」という階層になっています。例えば、www.example.co.jpというドメイン名は以下のように解釈されます。

階層レベルドメイン名説明
ルートドメイン.(ドット)DNSの最上位。グローバルなDNSサーバ(ルートサーバ)が管理しています。
トップレベルドメイン(TLD)jp国別コード(ccTLD)やジェネリックTLD(gTLD)などがあります。jpは日本を表すccTLDです。
セカンドレベルドメインco組織種別を表すラベル。coは「会社」を意味します。
サードレベルドメインexample組織が所有する固有のドメイン名です。
サブドメインwww組織内で定義されたサブドメインです。wwwはウェブサーバを表す慣習的な名前です。

この階層構造により、DNSはドメイン名をIPアドレスに変換する際に、必要な情報を段階的に取得します。例えば、www.example.co.jpのIPアドレスを取得するには、以下の手順でDNSサーバに問い合わせます。

  1. ルートDNSサーバjpのTLDサーバのIPアドレスを問い合わせる。
  2. jp TLDサーバco.jpのネームサーバのIPアドレスを問い合わせる。
  3. co.jpネームサーバexample.co.jpのIPアドレスを問い合わせる。
  4. example.co.jpネームサーバwww.example.co.jpのIPアドレス(Aレコード)を取得する。

このプロセスは「再帰的な名前解決」と呼ばれ、DNSの分散性と効率性を支えています。

DNSクエリの種類と処理の流れ

DNSクエリには主に以下の3種類があり、それぞれの用途と処理方法が異なります。

クエリタイプ説明処理方法使用シナリオ
再帰的クエリ(Recursive Query)クライアント(例:ウェブブラウザ)がDNSサーバに対して完全な名前解決を要求する。DNSサーバが自ら他のDNSサーバに問い合わせ、最終的にIPアドレスを返す。一般的なPCやスマートフォンがDNSを利用する際に使用される。
反復的クエリ(Iterative Query)DNSサーバが他のDNSサーバに対して、次の階層のDNSサーバの情報を問い合わせる。DNSサーバは自分が知っている情報のみを返し、クライアントはその情報を基に次の問い合わせを行う。ルートDNSサーバやTLDサーバが他のDNSサーバに問い合わせる際に使用される。
非再帰的クエリ(Non-Recursive Query)DNSサーバがキャッシュに保持している情報を返す。DNSサーバはローカルのキャッシュから直接応答を返す。既に名前解決が行われたドメイン名に対して再度問い合わせる際に使用される。

DNSクエリの処理の流れを具体例で説明します。例えば、ユーザーがwww.example.comにアクセスする際の流れは以下の通りです。

  1. ローカルDNSキャッシュの確認:PCやスマートフォンは、まずローカルのDNSキャッシュ(OSやブラウザが保持する一時的なDNS情報)を確認します。キャッシュに情報があれば、そのIPアドレスを使用します。
  2. ローカルDNSサーバへの問い合わせ:ローカルキャッシュに情報がない場合、PCは設定されたローカルDNSサーバ(例:ISPのDNSサーバやGoogle Public DNS8.8.8.8)に再帰的クエリを送信します。
  3. ローカルDNSサーバの処理:ローカルDNSサーバは、まず自身のキャッシュを確認します。キャッシュに情報がない場合、以下の手順で名前解決を行います。
    1. ルートDNSサーバへの問い合わせcomのTLDサーバのIPアドレスを取得します。
    2. TLDサーバへの問い合わせexample.comの権威DNSサーバのIPアドレスを取得します。
    3. 権威DNSサーバへの問い合わせwww.example.comのAレコード(IPv4アドレス)を取得します。
  4. 結果の返却とキャッシュ:ローカルDNSサーバは取得したIPアドレスをPCに返却すると同時に、自身のキャッシュに保存します。これにより、次回以降の問い合わせは高速化されます。

このプロセスは、DNSの分散性と効率性を支える基盤となっています。しかし、DNSサーバの設定ミスやネットワークの問題により、名前解決が失敗することがあります。そのため、DNSの仕組みを理解し、適切な設定と監視を行うことが重要です。

主要なDNSレコードタイプとその役割

DNSレコードは、ドメイン名とIPアドレスの対応関係や、メールサーバの情報など、さまざまなリソースを定義するためのデータです。以下に、主要なDNSレコードタイプとその役割をまとめます。

レコードタイプ略称説明使用例
AレコードAドメイン名をIPv4アドレスにマッピングします。example.com. IN A 192.0.2.1
AAAAレコードAAAAドメイン名をIPv6アドレスにマッピングします。example.com. IN AAAA 2001:db8::1
CNAMEレコードCNAMEドメイン名を別のドメイン名にエイリアスします。AレコードやAAAAレコードと併用します。www.example.com. IN CNAME example.com.
MXレコードMXドメインのメールサーバを指定します。優先度(Preference)とメールサーバのホスト名で構成されます。example.com. IN MX 10 mail.example.com.
TXTレコードTXTテキスト情報を格納します。主にメール認証(SPF、DKIM、DMARC)やドメイン所有者の検証に使用されます。example.com. IN TXT "v=spf1 include:_spf.example.com ~all"
NSレコードNSドメインの権威DNSサーバを指定します。example.com. IN NS ns1.example.com.
SOAレコードSOAゾーンの管理情報を格納します。ゾーンの更新頻度やメールアドレス、シリアル番号などが含まれます。example.com. IN SOA ns1.example.com. admin.example.com. 2024010101 3600 1800 604800 86400
PTRレコードPTRIPアドレスをドメイン名に逆引きします。主にメールサーバの逆引き検証に使用されます。1.2.0.192.in-addr.arpa. IN PTR example.com.
SRVレコードSRVサービスの場所(ホスト名とポート番号)を指定します。主にXMPPやSIPなどのサービスで使用されます。_xmpp-server._tcp.example.com. IN SRV 5 0 5269 xmpp.example.com.
CAAレコードCAAドメインのSSL/TLS証明書を発行できる認証局(CA)を指定します。セキュリティ強化に使用されます。example.com. IN CAA 0 issue "letsencrypt.org"

これらのレコードタイプを適切に設定することで、DNSはドメイン名の名前解決だけでなく、メールの送受信、ウェブサイトのホスティング、セキュリティの強化など、さまざまな機能を提供します。次章では、これらのDNSレコードを実際に設定する方法について解説します。


DNSサーバの設定方法:実践ガイド

DNSサーバの設定は、使用するソフトウェアや環境によって異なります。本章では、代表的なDNSサーバソフトウェアであるBIND(Berkeley Internet Name Domain)、Windows ServerのDNSサーバ、およびクラウドサービス(AWS Route 53、Google Cloud DNS)の設定方法を解説します。これらの設定を正しく行うことで、安定したDNSサービスを提供できます。

BIND(Berkeley Internet Name Domain)のインストールと設定

BINDは、最も広く使用されているDNSサーバソフトウェアの一つです。LinuxやUnix系システムで動作し、柔軟な設定が可能です。以下では、BIND 9.xのインストールと基本的な設定方法を解説します。

BINDのインストール

BINDのインストールは、パッケージマネージャを使用して行います。以下に、主要なLinuxディストリビューションごとのコマンドを示します。

  • Ubuntu/Debian
    sudo apt update
    sudo apt install bind9
  • CentOS/RHEL
    sudo yum install bind
    sudo systemctl enable named
    sudo systemctl start named
  • Fedora
    sudo dnf install bind
    sudo systemctl enable named
    sudo systemctl start named

インストール後、BINDサービスが起動していることを確認します。

sudo systemctl status named

BINDの基本設定

BINDの設定ファイルは、主に以下の3つのファイルで構成されています。

  • /etc/bind/named.conf:メインの設定ファイル
  • /etc/bind/named.conf.options:グローバルオプションの設定
  • /etc/bind/named.conf.local:ローカルゾーンの定義

まず、named.conf.optionsファイルを編集し、DNSサーバの基本的な動作を設定します。

options {
    directory "/var/cache/bind";
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    dnssec-validation auto;
    listen-on { any; };
    allow-query { any; };
    recursion yes;
};

主なオプションの説明は以下の通りです。

  • directory:BINDの作業ディレクトリを指定します。
  • forwarders:外部のDNSサーバ(例:Google Public DNS)に問い合わせる際の転送先を指定します。
  • dnssec-validation:DNSSECの検証を有効にします。
  • listen-on:DNSサーバがリッスンするIPアドレスを指定します。
  • allow-query:DNSクエリを許可するクライアントのIPアドレスを指定します。
  • recursion:再帰的クエリを許可するかどうかを指定します。

次に、named.conf.localファイルを編集し、管理するゾーンを定義します。

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
};

zone "2.0.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192.0.2";
};

この設定では、example.comという正引きゾーンと、192.0.2.0/24という逆引きゾーンを定義しています。

DNSレコードの設定

ゾーンファイル(例:/etc/bind/zones/db.example.com)を作成し、DNSレコードを定義します。以下は、基本的なDNSレコードを含むゾーンファイルの例です。

$TTL 86400
@   IN  SOA ns1.example.com. admin.example.com. (
    2024010101 ; Serial
    3600       ; Refresh
    1800       ; Retry
    604800     ; Expire
    86400      ; Minimum TTL
)

; Name Servers
    IN  NS  ns1.example.com.
    IN  NS  ns2.example.com.

; A Records
ns1     IN  A   192.0.2.1
ns2     IN  A   192.0.2.2
www     IN  A   192.0.2.10
mail    IN  A   192.0.2.20

; AAAA Records (IPv6)
www     IN  AAAA    2001:db8::10

; CNAME Records
ftp     IN  CNAME   www.example.com.

; MX Records
    IN  MX  10 mail.example.com.

; TXT Records
    IN  TXT "v=spf1 include:_spf.example.com ~all"

このゾーンファイルでは、以下のレコードが定義されています。

  • SOAレコード:ゾーンの管理情報(シリアル番号、リフレッシュ間隔など)を定義します。
  • NSレコード:権威DNSサーバを指定します。
  • Aレコード:ドメイン名をIPv4アドレスにマッピングします。
  • AAAAレコード:ドメイン名をIPv6アドレスにマッピングします。
  • CNAMEレコード:ドメイン名を別のドメイン名にエイリアスします。
  • MXレコード:メールサーバを指定します。
  • TXTレコード:テキスト情報(例:SPFレコード)を格納します。

ゾーンファイルの所有者とパーミッションを設定します。

sudo chown -R bind:bind /etc/bind/zones
sudo chmod -R 750 /etc/bind/zones

BINDの起動と動作確認

BINDを再起動し、設定が正しく動作していることを確認します。

sudo systemctl restart named
sudo systemctl status named

動作確認には、digコマンドやnslookupコマンドを使用します。

dig @localhost www.example.com

正しく設定されていれば、以下のような応答が返されます。

; <<>> DiG 9.16.1-Ubuntu <<>> @localhost www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.example.com.       IN  A

;; ANSWER SECTION:
www.example.com.    86400   IN  A   192.0.2.10

;; AUTHORITY SECTION:
example.com.        86400   IN  NS  ns1.example.com.
example.com.        86400   IN  NS  ns2.example.com.

;; ADDITIONAL SECTION:
ns1.example.com.    86400   IN  A   192.0.2.1
ns2.example.com.    86400   IN  A   192.0.2.2

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jan 01 00:00:00 UTC 2024
;; MSG SIZE  rcvd: 123

この出力から、www.example.comのAレコードが192.0.2.10であることが確認できます。

Windows ServerでのDNSサーバ設定

Windows Serverでは、GUI(グラフィカルユーザーインターフェース)を使用してDNSサーバを設定できます。以下では、Windows Server 2022を例に、DNSサーバのインストールと設定方法を解説します。

DNSサーバのインストール

  1. サーバーマネージャーを開く:スタートメニューから「サーバーマネージャー」を起動します。
  2. 役割と機能の追加:「管理」メニューから「役割と機能の追加」を選択します。
  3. DNSサーバの選択:「サーバーの役割」で「DNSサーバー」を選択し、インストールします。
  4. インストールの完了:インストールが完了したら、サーバーマネージャーの「ツール」メニューから「DNSマネージャー」を開きます。

DNSサーバの基本設定

  1. 正引きゾーンの作成
    1. DNSマネージャーで「正引きゾーン」を右クリックし、「新しいゾーン」を選択します。
    2. ゾーンの種類として「プライマリゾーン」を選択します。
    3. ゾーン名としてexample.comを入力します。
    4. ゾーンファイル名は自動的にexample.com.dnsとなります。
    5. 動的更新は「セキュリティで保護された動的更新を許可しない」を選択します(セキュリティ上の理由から)。
  2. DNSレコードの追加
    1. 作成したexample.comゾーンを右クリックし、「新しいホスト(A)」を選択します。
    2. ホスト名としてwwwを入力し、IPアドレスとして192.0.2.10を入力します。
    3. 同様に、mailというホスト名で192.0.2.20を追加します。
    4. MXレコードを追加するには、「新しいメール exchanger(MX)」を選択し、優先度として10、メールサーバとしてmail.example.comを入力します。
  3. 逆引きゾーンの作成
    1. DNSマネージャーで「逆引きゾーン」を右クリックし、「新しいゾーン」を選択します。
    2. ゾーンの種類として「プライマリゾーン」を選

      この記事で学んだスキルをさらに深めたい方へ

      DNSの仕組みをより深く理解するための技術書です。ネットワーク基礎と合わせて学ぶと効果的です。

      Amazonアソシエイトプログラムを利用しています。

      【編集・制作ポリシー】
      本記事はRoute Bloom編集部が公式ドキュメント・技術仕様書の一次情報をもとに作成しています。ITインフラ・技術情報は急速に変化するため、実装前に最新の公式ドキュメントをご確認ください。情報の正確性には万全を期していますが、最新情報は各公式サイトをご確認ください。
      【編集・制作ポリシー】
      本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
      【編集・制作ポリシー】
      本記事はRoute Bloom編集部が各ベンダー・技術標準の公式ドキュメントをもとに作成しています。 インフラ・クラウド技術に関する最終判断は実際の環境・バージョンで検証のうえ実施してください。 情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。

      編集ポリシー:この記事は、Route Bloom の編集チームが最新情報を元に執筆・監修しています。情報の正確性を保つために定期的な見直しを行っています。

      ABOUT ME
      たから
      サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営