InfraAcademy

InfraAcademy Blog

DNS入門講座まとめ【DNSサーバーの概要や構築方法など解説】

| #Linux #DNS #Linux入門

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、DNSの入門講座のまとめです。DNSを理解するために必要な知識をまとめています。

結論から言うと、DNSとはサーバーのホスト名とIPアドレスを紐づけて、名前解決を行う仕組みのことです。この仕組みを理解すると、インターネットの裏側がぐっと見えるようになります。

DNSの概要から構築方法まで様々な内容です。インフラ初心者の方やDNSを勉強したい方は是非ご覧ください。

DNS入門講座の全体像と学習の進め方

DNSの勉強は、いきなりサーバー構築から始めるとつまずきやすい分野です。設定ファイルの意味が分からないまま、作業が丸暗記になってしまうんですよね。

そこで本講座では、概要の理解から動作確認まで、6つのステップで段階的に学べる構成にしました。まずは全体の流れを表で確認しておきましょう。

ステップ 学習内容 ゴール
①概要の理解 DNSと名前解決の役割 DNSが何をしているか説明できる
②仕組みの理解 名前解決の流れとサーバーの種類 問い合わせの流れをイメージできる
③サーバー構築 BINDのインストールと設定 LinuxでDNSサーバーを動かせる
④レコード登録 AレコードやCNAMEレコードなど 正引き・逆引きを設定できる
⑤応用技術 ゾーン転送・フォワーダ 冗長化や問い合わせの転送を設定できる
⑥動作確認 dig・nslookupコマンド 名前解決の結果を自分で確認できる

上から順番に読み進めれば、知識が積み上がるようになっています。すでに知っている部分は、読み飛ばしてもらって大丈夫ですよ。

【DNS入門①】DNSの概要を理解する

最初のステップは、DNSがそもそも何をしているのかを知ることです。

DNSサーバとは、名前解決をするサーバーです。サーバーのホスト名とIPアドレスを紐づけます。

例えば、Webサイトにアクセスするとき、https://www.google.com にアクセスします。この www.google.com とIPアドレスを紐づけているのがDNSサーバーです。

なぜDNSが必要なのか

そもそも、なぜ名前解決という仕組みが必要なのでしょうか。

コンピュータ同士の通信では、相手を特定するためにIPアドレスを使います。しかし、142.250.196.132 のような数字の羅列を、サイトごとに覚えるのは無理がありますよね。

そこで、人間が覚えやすいホスト名と、コンピュータが使うIPアドレスを変換する仕組みが生まれました。それがDNSです。

DNSは、よく電話帳にたとえられます。相手の名前から電話番号を調べるように、ホスト名からIPアドレスを調べているわけです。

ちなみに、DNSはDomain Name Systemの略称です。その名のとおり、ドメイン名を管理するための仕組み全体を指しています。

ドメインは階層構造で管理されている

DNSを理解するうえで欠かせないのが、ドメインの階層構造です。

ドメイン名は、ルートと呼ばれる頂点から枝分かれするツリー構造で管理されています。www.google.com なら、ルートの下に com があり、その下に google が続くイメージです。

階層ごとに管理を担当するサーバーが分かれているため、世界中の膨大なドメインを分散して管理できます。1台の巨大なサーバーが全てを管理しているわけではない、というのが重要なポイントです。

DNSサーバーの用途や仕組みをさらに詳しく知りたい方は、DNSサーバーとは何かを初心者向けに解説した記事をご覧ください。IPアドレスの基礎とセットで理解すると、DNSの全体像が一気につかみやすくなります。

【DNS入門②】名前解決の流れとDNSサーバーの種類

DNSの役割が分かったら、次は名前解決が実際にどう動いているのかを見ていきましょう。

DNSサーバーとひとことで言っても、実は役割の違う複数の種類があります。まずは代表的な4種類を表で整理します。

種類 役割
キャッシュDNSサーバー(フルリゾルバ) クライアントの代わりに各サーバーへ問い合わせる
権威DNSサーバー 自分が管理するドメインの正式な情報を回答する
ルートDNSサーバー 階層の頂点に立ち、TLDサーバーの場所を案内する
TLDサーバー comjp などのトップレベルドメインを管理する

名前解決の主役は、問い合わせを代行するキャッシュDNSサーバーと、正式な答えを持っている権威DNSサーバーの2つです。この役割分担を押さえると、DNSの仕組みが一気に理解しやすくなります。

名前解決の流れを順番に追ってみよう

では、ブラウザで www.google.com を開いたときの流れを追ってみましょう。

最初に、PCはキャッシュDNSサーバーへ問い合わせを送ります。キャッシュDNSサーバーは答えを知らなければ、まずルートDNSサーバーへ問い合わせます。

ルートDNSサーバーは com を管理するTLDサーバーを案内し、TLDサーバーは google.com の権威DNSサーバーを案内します。最後に権威DNSサーバーが、www.google.com のIPアドレスを回答するという流れです。

キャッシュDNSサーバーは、受け取ったIPアドレスをPCへ返します。PCはそのIPアドレスを使って、Webサーバーへアクセスできるようになるわけです。

階層を上からたどって少しずつ絞り込んでいく動きが、DNSの分散管理を支えています。郵便物が都道府県から市町村へと絞り込まれて届く様子と似ていますね。

DNSキャッシュとTTLの役割

毎回ルートから順番に問い合わせていては、時間もネットワークの負荷もかかってしまいますよね。

そこでキャッシュDNSサーバーは、一度調べた結果を一定時間保存しておきます。この保存期間の長さを決めているのが、TTLという値です。

TTLが有効なあいだはキャッシュから即座に回答が返るため、2回目以降の名前解決は高速になります。サーバー移転の前にTTLを短くしておくと切り替えの影響を抑えられるなど、実務でも重要になる概念です。

【DNS入門③】LinuxでDNSサーバーを構築する

仕組みを理解できたら、実際にDNSサーバーを構築してみましょう。自分の手で動かしてみると、ここまでの知識が一気に定着します。

LinuxでDNSサーバーを構築するときの定番ソフトウェアが、BINDです。世界中で長年使われ続けている、DNSサーバーの代表的な実装です。

なお、BINDの9.18系は2026年6月にサポートが終了しました。これから学習を始める方は、現行の安定版である9.20系を利用するのがおすすめです。

RedHat系のLinuxであれば、次のコマンドでインストールできます。

$ sudo dnf install bind bind-utils
$ sudo systemctl start named
$ sudo systemctl enable named

インストールできたら、/etc/named.conf という設定ファイルを編集していきます。問い合わせを受け付ける範囲や、管理するゾーンの情報をこのファイルに記述します。

ゾーンとは、そのDNSサーバーが責任を持って管理するドメインの範囲のことです。設定ファイルの具体的な書き方は、bindを設定してDNSサーバーを構築する手順を解説した記事で1つずつ説明しています。

firewalldが動いている環境では、DNSが使う53番ポートの開放も忘れずに行いましょう。設定は正しいのに名前解決ができないときは、ポートが閉じているケースがよくあります。

設定を変更したあとは、named-checkconf コマンドで設定ファイルの文法をチェックできます。サービスを再起動する前に確認する習慣をつけておくと、設定ミスによる起動失敗を防げますよ。

【DNS入門④】DNSレコードを理解して登録する

DNSサーバーを構築したら、次はレコードの登録に進みます。

DNSサーバーでは、レコードと呼ばれる情報を登録します。DNSサーバーは登録したレコードを基に名前解決を行います。

つまりレコードは、名前解決の答えそのものと言える大切な情報です。代表的なレコードの種類を表にまとめました。

レコードの種類 用途
Aレコード ホスト名にIPv4アドレスを対応させる
AAAAレコード ホスト名にIPv6アドレスを対応させる
CNAMEレコード ホスト名に別名を付ける
MXレコード メールの配送先サーバーを指定する
NSレコード ゾーンを管理するDNSサーバーを指定する
PTRレコード IPアドレスからホスト名を逆引きする
TXTレコード テキスト情報を登録する(送信ドメイン認証などで利用)

ゾーンファイルには、たとえば次のようにレコードを記述します。

www     IN  A      192.168.1.10
mail    IN  A      192.168.1.20
blog    IN  CNAME  www

この例では、www というホスト名に 192.168.1.10 を対応させています。blogwww の別名なので、blog への問い合わせも最終的に 192.168.1.10 へたどり着きます。

ホスト名からIPアドレスを調べることを正引き、反対にIPアドレスからホスト名を調べることを逆引きと呼びます。逆引きにはPTRレコードを使い、専用の逆引きゾーンに登録します。

各レコードの詳しい使い方は、DNSのレコードの種類と設定方法を解説した記事をご覧ください。実際にBINDへ登録しながら覚えるのが、いちばんの近道ですよ。

【DNS入門⑤】ゾーン転送とフォワーダを設定する

基本の構築とレコード登録ができたら、一歩進んだ技術にも挑戦してみましょう。

実際の運用では、DNSサーバーを1台だけで動かすことはほとんどありません。障害への備えとして、複数台での運用が基本になります。

ゾーン転送でDNSサーバーを冗長化する

複数台での運用で登場するのが、ゾーン転送という仕組みです。

ゾーン転送とは、プライマリサーバーが持つゾーン情報を、セカンダリサーバーへ複製する仕組みです。プライマリサーバーが停止しても、同じ情報を持つセカンダリサーバーが名前解決を続けてくれます。

DNSが止まると、WebサイトもメールもIPアドレスを直接指定しないと使えなくなってしまいます。だからこそ、冗長化はDNS運用の必須知識と言えます。

具体的な設定手順は、DNSゾーン転送の仕組みと設定方法を解説した記事で紹介しています。

フォワーダで問い合わせを転送する

もう1つ覚えておきたいのが、フォワーダという機能です。

フォワーダとは、自分で解決できない問い合わせを、別のDNSサーバーへ転送する設定のことです。社内のDNSサーバーが、外部ドメインの問い合わせをプロバイダのDNSサーバーへ任せる、といった構成でよく使われます。

BINDでは forwarders という設定項目で転送先を指定します。設定方法はbindのforwardersの設定方法を解説した記事で詳しく解説しています。

【DNS入門⑥】dig・nslookupで名前解決を確認する

構築と設定が終わったら、名前解決が正しく動くかを必ず確認しましょう。

動作確認に使う代表的なコマンドが、digとnslookupです。2つの違いを表で比べてみます。

コマンド 特徴
dig 出力が詳細で、Linuxでの調査の定番
nslookup 出力がシンプルで、Windowsにも標準搭載

digコマンドは、次のように使います。

$ dig www.google.com

;; ANSWER SECTION:
www.google.com.   300   IN   A   142.250.196.132

ANSWER SECTIONに、ホスト名へ対応するIPアドレスが表示されます。左から2番目にある300という数字が、先ほど紹介したTTLです。

digは、問い合わせ先のDNSサーバーを指定して実行することもできます。たとえば dig @8.8.8.8 www.google.com のように、@に続けてサーバーのIPアドレスを指定します。

nslookupの場合は、次のように実行します。

$ nslookup www.google.com
Server:    192.168.1.1
Address:   192.168.1.1#53

Non-authoritative answer:
Name:   www.google.com
Address: 142.250.196.132

出力にある Non-authoritative answer は、キャッシュDNSサーバーが保存していた情報から回答したという意味です。エラーではないので、安心してください。

この表示の詳しい意味は、Non-authoritative answerとは何かを解説した記事で紹介しています。意味を知っておくと、動作確認の結果を正しく読み取れるようになりますよ。

DNS入門でよくある疑問

最後に、DNSを学び始めた方からよく聞かれる疑問に答えていきます。

DNSの学習はどこから始めればいい?

まずは名前解決の仕組みを理解することから始めるのがおすすめです。

仕組みが分からないまま構築へ進むと、設定ファイルの意味がつかめずに作業が丸暗記になってしまいます。本記事のステップ①と②を押さえてから、構築に進んでみてください。

構築の練習は、仮想マシンなど壊しても困らない環境で行うのが安心です。何度も作っては壊すことで、手順が自然と身についていきます。

自分のPCはどのDNSサーバーを使っている?

普段の名前解決は、プロバイダや社内ネットワークが用意したキャッシュDNSサーバーが担当しています。Linuxであれば、/etc/resolv.conf というファイルで参照先のDNSサーバーを確認できます。

また、8.8.8.8 はGoogleが無償で公開しているパブリックDNSサーバーのIPアドレスです。誰でも利用できるキャッシュDNSサーバーとして有名なので、名前解決の切り分けにも役立ちますよ。

nslookupコマンドが見つからないと言われたら?

Linuxで nslookup: command not found と表示されるのは、コマンドを含むパッケージがインストールされていないためです。RedHat系なら bind-utils パッケージを追加すれば使えるようになります。

digコマンドも同じパッケージに含まれています。動作確認を始める前に、インストールされているかを確認しておきましょう。

LPICや基本情報技術者試験でもDNSは出題される?

はい、DNSはインフラ系の資格試験で頻出のテーマです。

LPICではBINDの設定ファイルや、dig・nslookupコマンドの使い方が問われます。基本情報技術者試験でも、DNSサーバーの役割を問う問題が繰り返し出題されています。

この講座で手を動かしながら学んだ内容は、そのまま資格対策につながります。実際に構築した経験があると、暗記に頼らず自信を持って解答できるようになりますよ。

さらに詳しく学べる参考書はある?

さらにDNSについて詳しく知りたい方はこちらの参考書をご覧ください。

DNSがよくわかる教科書は、DNSの仕組みを体系的に学べる1冊です。この記事の内容から一歩踏み込んで理解したい方にぴったりです。

DNSをはじめようは、ドメインの取得からトラブルシューティングまで実践的に学べる1冊です。手を動かしながら覚えたい方には、こちらがおすすめです。

まとめ

今回は、DNS入門講座のまとめとして、DNSの概要から構築・応用技術・動作確認までの学習の流れを紹介しました。

DNSとは、ホスト名とIPアドレスを紐づけて名前解決を行う仕組みでしたね。キャッシュDNSサーバーと権威DNSサーバーが連携することで、世界中の名前解決が成り立っています。

学習の順番は、概要の理解、サーバー構築、レコード登録、応用技術、動作確認という流れがおすすめです。1つずつ手を動かしながら進めれば、DNSはきっと得意分野になりますよ。

DNSサーバーを構築できるようになったら、次はWebサーバーの構築にも挑戦してみましょう。Webサーバー入門講座のまとめ記事で、構築方法や概要を詳しく解説しています。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る