InfraAcademy

InfraAcademy Blog

DNSサーバーとは?仕組み・役割・名前解決を初心者向けに解説

| #Linux #Linux初心者 #DNS
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、エンジニアのryuです。

Webサイトへアクセスするとき、私たちはengineer-ninaritai.comのようなドメイン名を入力します。しかし、コンピューター同士の通信では、接続先を特定するためにIPアドレスが必要です。

では、ブラウザはドメイン名から接続先のIPアドレスをどうやって調べているのでしょうか。

そこで使われるのがDNSです。DNSサーバーは、ドメイン名とIPアドレスを対応させ、通信先を見つけるための仕組みを提供します。

この記事では、DNSサーバーの役割、名前解決の流れ、DNSレコード、キャッシュ、ゾーンや委任まで初心者向けに解説します。エンジニア歴10年の経験から、実務でよく使う確認コマンドや、トラブル時の考え方も紹介します。

DNSサーバーとは

DNSは、Domain Name Systemの略です。

ドメイン名とIPアドレスなどの情報を対応させ、利用者が覚えやすい名前でサーバーへアクセスできるようにします。この変換処理が名前解決です。

たとえば、WebサイトのURLにドメイン名を入力すると、DNSを使ってWebサーバーのIPアドレスを調べます。その後、ブラウザは取得したIPアドレスのサーバーへ接続します。

DNSは単なる一台のサーバーではありません。複数のDNSサーバーが役割を分担し、世界中のドメイン情報を階層的に管理しています。

DNSを理解するために必要なIPアドレスとドメイン名

DNSの動きを理解するには、IPアドレスとドメイン名の違いを押さえておきましょう。

IPアドレスとは

IPアドレスは、ネットワーク上の機器を識別するための番号です。

IPv4では192.168.1.10、IPv6では2001:db8::1のように表されます。データを正しい相手へ届けるには、宛先となるIPアドレスが必要です。

よく住所に例えられますが、実際にはネットワーク構成によって変わることもあります。まずは、通信相手を識別するための番号と理解しておけば大丈夫です。

IPアドレスの仕組みから確認したい方は、次の記事も参考にしてください。

【関連記事】IPアドレスとは?概要と仕組みを初心者向けに解説

ドメイン名とは

ドメイン名は、インターネット上のサービスを人が識別しやすくするための名前です。

たとえば、engineer-ninaritai.comがドメイン名です。www.example.commail.example.comのように、ホスト名まで含めた名前はFQDNと呼ばれます。

数字だけのIPアドレスを利用者が覚えるのは大変です。そのため、覚えやすいドメイン名を使い、DNSでIPアドレスへ変換します。

DNSサーバーはドメイン名からIPアドレスを調べる

DNSの基本的な役割は、ドメイン名に対応する情報を返すことです。

DNSサーバーへ問い合わせる流れ

利用者がWebサイトへアクセスすると、端末はDNSへ問い合わせます。DNSからIPアドレスが返ると、そのIPアドレスを使ってWebサーバーとの通信を開始します。

ここで覚えておきたいのは、DNSがWebページそのものを返しているわけではないことです。DNSは接続先を見つけるための情報を返し、実際のWeb通信はその後に行われます。

Webサイトが表示されるまでの名前解決の流れ

DNSの名前解決では、端末、キャッシュDNSサーバー、権威DNSサーバーなどが連携します。

大まかな流れは次のとおりです。

順番 動作
1 利用者がブラウザへURLを入力する
2 端末がOSやブラウザ内のキャッシュを確認する
3 情報がなければキャッシュDNSサーバーへ問い合わせる
4 キャッシュDNSサーバーが必要に応じて上位DNSへ問い合わせる
5 ドメインを管理する権威DNSサーバーから回答を得る
6 端末へIPアドレスが返る
7 ブラウザがWebサーバーへ接続する

キャッシュDNSサーバーの役割

キャッシュDNSサーバーは、利用者に代わって名前解決を行うサーバーです。フルサービスリゾルバーや再帰DNSサーバーと呼ばれることもあります。

一度取得した回答は一定時間保存されます。同じドメインへの問い合わせに保存済みの情報を返せるため、毎回すべてのDNSサーバーへ問い合わせる必要がありません。

保存期間の目安を決める値がTTLです。TTLが切れるまでは古い情報が残ることがあるため、DNS設定を変更してもすぐに全利用者へ反映されるとは限りません。

ルート・TLD・権威DNSサーバー

キャッシュに情報がない場合、キャッシュDNSサーバーはDNSの階層をたどります。

最初にルートDNSサーバーへ問い合わせ、次に.com.jpを担当するTLD DNSサーバーを確認します。その後、対象ドメインを管理する権威DNSサーバーへ問い合わせ、最終的な回答を得ます。

権威DNSサーバーは、自分が管理するゾーンについて正式な回答を返すサーバーです。

DNSはどのような場面で使われるのか

DNSはWebサイトへのアクセスだけでなく、メール、社内システム、クラウドサービスなど、多くの通信で使われています。

ブラウザからFQDNを名前解決するイメージ

Webサイトへのアクセス

ブラウザへURLを入力すると、URLに含まれるホスト名をDNSで名前解決します。

取得したIPアドレスへHTTPまたはHTTPSで接続し、Webページを表示します。DNSが正常に動作していないと、サーバー自体が稼働していてもドメイン名ではアクセスできません。

メールの送受信

メールを送るときは、宛先ドメインのMXレコードを調べます。

MXレコードには、そのドメインのメールを受け取るサーバーが登録されています。送信側のメールサーバーは、DNSで配送先を確認してからメールを送ります。

メールサーバーでもDNSを利用する例

社内システムやクラウド

社内では、サーバーのIPアドレスを直接指定せず、app.example.localのような名前でアクセスすることがあります。

AWSなどのクラウドでも、ロードバランサー、データベース、CDNなどの接続先にDNS名が使われます。クラウドエンジニアにとっても、DNSは避けて通れない知識です。

DNSレコードの種類

DNSには、IPアドレス以外にもさまざまな情報を登録できます。その一つひとつがDNSレコードです。

実務でよく見るレコードを整理すると、次のようになります。

レコード 主な役割
A ホスト名をIPv4アドレスへ対応させる www.example.com → 192.0.2.10
AAAA ホスト名をIPv6アドレスへ対応させる www.example.com → 2001:db8::10
CNAME 別のホスト名を別名として指定する blog.example.com → service.example.net
MX メールを受信するサーバーを指定する mail.example.com
NS ゾーンを管理するDNSサーバーを指定する ns1.example.com
TXT 文字列情報を登録する SPFやドメイン所有確認
PTR IPアドレスからホスト名を調べる 逆引きDNS
SOA ゾーンの基本情報を管理する 管理DNS、シリアル番号、更新間隔

AレコードとCNAMEレコードは似ていますが、AレコードはIPアドレスを直接登録し、CNAMEは別の名前を参照します。

メールの迷惑メール対策では、TXTレコードへSPF、DKIM、DMARCに関する情報を登録することもあります。

DNSゾーンと委任の仕組み

DNSゾーンとは、ある権威DNSサーバーが管理する名前空間の範囲です。

DNSゾーンの範囲を説明する図

たとえば、example.comのゾーンでは、www.example.commail.example.comなどのレコードを管理できます。

ただし、sub.example.comの管理を別のDNSサーバーへ任せることも可能です。これが委任です。

管理していないドメインはどう調べるのか

一台のDNSサーバーが、世界中のドメイン情報をすべて管理しているわけではありません。

自分が管理していない情報は、DNSの階層をたどって管理先を見つけます。ルートからTLD、各ドメインの権威DNSへつながることで、分散して管理されている情報を調べられます。

DNSの委任と問い合わせを説明する図

フォワーダーを設定し、自分で外部へ問い合わせず、別のDNSサーバーへ問い合わせを転送する構成もあります。社内DNSから上位のDNSへ名前解決を任せる場面などで利用されます。

プライマリDNSとセカンダリDNS

権威DNSサーバーは、可用性を高めるために複数台で構成されます。

従来はマスターDNS、スレーブDNSと呼ばれることが多くありましたが、現在はプライマリDNS、セカンダリDNSという表現も広く使われています。

プライマリDNSで管理するゾーン情報を、セカンダリDNSへ複製する仕組みがゾーン転送です。

DNSのマスター・スレーブ構成を説明する旧図

※画像には旧来のマスター・スレーブという表記が含まれています。この記事ではプライマリ・セカンダリを基本表記とします。

セカンダリDNSを用意すると、一台の権威DNSサーバーが停止した場合でも、別のサーバーが問い合わせへ回答できます。

権威DNSサーバーとキャッシュDNSサーバーの違い

DNSサーバーは、すべて同じ動きをしているわけではありません。

権威DNSサーバーは、自分が管理するゾーン情報について回答します。キャッシュDNSサーバーは、利用者に代わって複数のDNSサーバーへ問い合わせます。

コンテンツサーバーとフルリゾルバーの役割を説明する図

古い資料では、権威DNSサーバーをコンテンツサーバー、キャッシュDNSサーバーをフルリゾルバーと表現することがあります。

役割を分けることで、外部からの再帰問い合わせを制限し、不要な攻撃対象を減らせます。DNSキャッシュポイズニングなどのリスクを考えるうえでも、両者の違いは重要です。

DNSを確認するコマンド

DNSのトラブルでは、ブラウザを再読み込みするだけでなく、どの情報が返っているのかを確認します。

LinuxやmacOSではdig、WindowsではnslookupやPowerShellのResolve-DnsNameを利用できます。

digでAレコードを確認する

dig example.com A

回答部分だけを短く確認したい場合は、次のように実行します。

dig +short example.com

NSレコードやMXレコードを確認する

dig example.com NS
dig example.com MX

どのDNSサーバーがゾーンを管理しているか、どのメールサーバーが登録されているかを確認できます。

特定のDNSサーバーへ問い合わせる

dig @8.8.8.8 example.com

利用中のDNSサーバーと別のDNSサーバーで結果を比べたいときに使います。

DNS障害を調べるときは、ドメイン名の入力ミス、レコード、TTL、権威DNS、キャッシュ、端末設定の順に確認しましょう。手当たり次第にレコードを変更すると、原因が分からなくなります。

LinuxでDNSサーバーを構築してみよう

DNSは、仕組みを読んだ後に実際の構築を経験すると理解しやすくなります。

Linuxでは、BINDなどのソフトウェアを使い、権威DNSサーバーやキャッシュDNSサーバーを構築できます。設定ファイルへゾーンを定義し、AレコードやNSレコードを登録して、digで結果を確認します。

構築の流れは、次のとおりです。

順番 作業
1 DNSサーバーの役割を決める
2 BINDをインストールする
3 ゾーンとレコードを設定する
4 設定ファイルの構文を確認する
5 DNSサービスを起動する
6 digで正引き・逆引きを確認する
7 ログを確認してエラーを修正する

具体的な構築手順は、次の記事で解説しています。

【関連記事】BINDを設定してDNSサーバーを構築する手順

InfraAcademyでDNSとサーバー構築を実践する

InfraAcademyでは、Linux、ネットワーク、サーバー構築、AWSなど、インフラエンジニアに必要な分野を体系的に学べます。

DNS講座では、仕組みを読むだけでなく、Linux環境を操作しながら設定と確認を進めます。Webサーバー、SSH、データベースなどの講座と組み合わせることで、DNSがシステム全体でどのように使われるかも理解できます。

法人プランでは、教材、演習環境、練習問題、進捗管理をWeb上で利用できます。管理者は、受講者ごとの進捗率、最終学習日、練習問題の正答率などを確認可能です。

未経験者向けの新人研修、Linux運用案件への配属準備、待機期間中の学習などにも活用できます。

InfraAcademy法人プランの機能と料金を見る

まとめ

DNSサーバーは、ドメイン名とIPアドレスなどの情報を対応させ、通信先を見つけるための仕組みです。

Webサイトだけでなく、メール、社内システム、クラウドなど、多くのサービスで利用されています。

初心者は、まずIPアドレスとドメイン名の違いを理解しましょう。その後、キャッシュDNSサーバー、権威DNSサーバー、DNSレコード、ゾーン、委任の順番で学ぶと整理しやすくなります。

DNS設定を変更したときは、TTLやキャッシュの影響も考える必要があります。dignslookupを使い、実際に返ってくる情報を確認する習慣を付けてください。

そして、理解を深めるには、自分でDNSサーバーを構築することが効果的です。設定し、問い合わせ、ログを確認するまで経験すると、名前解決の仕組みが一本につながります。

Next Action

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

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

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

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

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

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

講座一覧を見る