DNSとは
DNS(Domain Name System)とはインターネットにおいてドメイン名(ホスト名)とIPアドレスとを相互に変換するための仕組みです。この変換のことを名前解決と呼びます。
インターネットに繋がるコンピューターは固有のIPアドレスを持っています。
例えば、今お読みいただいているこの記事が置いてあるコンピューターにも”202.230.201.173″というIPアドレスが割り振られています(2021年現在)。
IPアドレスは、言わばコンピューターのための住所ですが、”speever.jp”という人にわかりやすい文字列の住所で扱うことができるように、DNSという仕組みが存在します。
DNSサーバーとは
それでは実際にPCから”https://speever.jp/”へアクセスしようとした際に、”202.230.201.173″へ名前解決される流れをご説明しましょう。
PCがキャッシュDNSサーバーに”speever.jp”のIPアドレスを問い合わせる
キャッシュDNSサーバーはまず、最上位の権威DNSサーバー(ルートDNSサーバー)に問い合わせる。
ルートDNSサーバーは、下位の”.jp”を管轄する権威DNSサーバーである”JP DNS”の場所を回答し、こちらに問い合わせるよう指示する
キャッシュDNSサーバーは、”JP DNS”に”speever.jp”のIPアドレスを問い合わせる
“JP DNS”サーバーは、より下位の”speever.jp”の権威DNSサーバーの場所を回答し、これらに問い合わせるよう指示する
キャッシュDNSサーバーは、5で示されたサーバーに、”speever.jp”のIPアドレスを問い合わせる
“speever.jp”の権威DNSサーバーは、IPアドレス”202.230.201.173″を回答する。
DNSキャッシュサーバーは、7で得た回答をPCに送る。
このように名前解決の際には、複数のDNSサーバーと呼ばれるコンピューターが利用されます。
DNSサーバーは、おおむねキャッシュDNSサーバーと、権威DNSサーバーの2つに大別されます。
キャッシュDNSサーバー
キャッシュDNSサーバー(cache DNS server)は、インターネットに接続する端末(PCや携帯電話など)が名前解決をするために問い合わせる先のDNSサーバーです。
端末からの問い合わせを受けて、「ドメイン名(ホスト名)とIPアドレスとの変換表」を持っているDNSサーバー(後述する権威DNSサーバー)を探し出し、そこから受け取った名前解決の最終的な結果を端末に返します。
と、同時に、その結果を一定期間保持(キャッシュ)し続け、もし同じ問い合わせを受けたなら、今度は権威DNSサーバーに問い合わせることなく、保持した情報を返します。
通常はインターネット・サービス・プロバイダー(ISP)やネットワーク管理者が用意しますが、Googleなどが無償提供しているサーバーも使われることがあります(後述)。
権威DNSサーバー
権威DNSサーバー(authoritative DNS server)は、キャッシュDNSサーバーからの問い合わせを受けて、「ドメイン名(ホスト名)とIPアドレスとの変換表(ゾーン情報)」を回答します。
あるいは、変換表を持っていそうなより下位の権威DNSサーバーを紹介し、そちらに問い合わせるよう指示します。
権威DNSサーバーは通常、端末からの問い合わせを直接受けることはありません。
DNSコンテンツサーバーとも呼ばれます。
ルートDNSサーバー
権威DNSサーバーのうち、ルートDNSサーバー(root DNS server)が、その最上位に位置します。
キャッシュDNSサーバーはまずルートDNSサーバーに問い合わせ、ルートDNSサーバーはそのドメイン名に応じて、より下位の権威DNSサーバーを紹介し(.jpならここ、.comならここ、.netならここ…)、そちらに問い合わせるよう指示します。
全世界に13個あり、そのうちの1つは日本で管理されています。
Whoisネームサーバー
権威DNSサーバーのうち、最終的に「ドメイン名(ホスト名)とIPアドレスとの変換表(ゾーン情報)」を回答するサーバーは、Whoisと呼ばれるドメインの公開情報に記載されています。
![](https://speever.jp/speever2021/wp-content/uploads/2021/08/image-12.png)
speever.jpの場合はns01.domainserver.ne.jpとns02.domainserver.ne.jpとなっています(2021年現在)。
プライマリDNSサーバーとセカンダリDNSサーバー
Whoisネームサーバーは、通常2つ以上のサーバーが登録されています。
もし障害などで名前解決の問い合わせに回答できない事態になってしまうと、そのドメインのウェブサイトもメールも何もかもが利用できなくなってしまいます。
これを防ぐために、同じ回答ができるサーバーを複数用意することで冗長化を図っています。
とはいえ、ウェブサーバーのコンピューターを別のIPアドレスの機器にしたい時など、複数台それぞれの変換表を書き換えるのは面倒なです。そこで、オリジナルの変換表を持つサーバーは1つだけ用意して、2つ目以降はオリジナルのデータを自動で同期コピーしておくようにします。
このオリジナルのデータを持つサーバーをプライマリDNSサーバー(またはマスターDNSサーバー)、複製したサーバーをセカンダリDNSサーバー(またはスレーブDNSサーバー)と呼びます。
プライマリサーバーとセカンダリサーバーをどちらも公開することもあれば、プライマリサーバーは表に出さず、セカンダリサーバーのみ公開するといった運用を行うこともあります。
ゾーン情報
ドメイン名とIPアドレスとの変換表をゾーン情報と言います。実のところ、ゾーン情報にはそれ以外の情報もあり、代表的なものを以下で紹介します。
Aレコード
A(Address)レコードは、ドメイン名(ホスト名)に対応するIPアドレスを記した情報です。
例
- example.com
-
A 202.230.201.173
- blog.example.com
-
A 202.230.201.235
CNAMEレコード
CNAME(Canonical Name)レコードは、あるホスト名の「別名」と「正式名」とを定義する情報です。
例えば、
“example.com”
“www.example.com”
このどちらも、同じIPアドレスの機器で運用することに決めているなら、
- example.com
-
A 202.230.201.173
- www.example.com
-
CNAME speever.jp.
と登録することで、example.comのAレコードを書き換えた時には、自動的にwww.example.comの名前解決も変わるようになります。
MXレコード
MX(Mail Exchange)レコードは、そのドメイン宛のメールを、どのサーバーに送れば良いかを記した情報です。
MXレコードは優先度を指定します。
- example.com
-
MX 10 mail.example.com.
- example.com
-
MX 20 mail2.example.com.
「***@example.com 宛にメールを送る時は、まずmail.example.com宛に配送を試み、
無理な場合はmail2.example.comに配送を試みてください」という指示になります。
TXTレコード
TXT(Text)レコードは、ホスト名に対する付加情報を定義します。
DNSの仕様としては特に書式や用途は定められておりません。特定のサービスの利用時に、サービスが定めた書式で掲載することが求められることがあります。
良く使われるTXTレコードにSPFがあります。
SPF
SPF(Sender Policy Framework )は、「なりすましメール」対策に使われるTXTレコードです。
あるドメインを名乗るメールを受領したコンピューターは、メールの送り元と、ドメインのSPFに登録されたIPアドレスやホストを照会し、ここに記載されていないものを「なりすまし」と判断する材料にします。
- example.com
-
TXT “v=spf1 ip4:12.34.56.78 -all”
この書き方では、「***@example.comを名乗るメールを受け取った時、その送り元サーバーのIPアドレスが12.34.56.78でない場合は、なりすましと判断してください」という指示になります。
TTL
キャッシュDNSサーバーが権威DNSサーバーから回答を受け取ると、その情報を一定期間保持することは既に解説しました。
この保持する期間をゾーン情報内で指定するのがTTL(Time To Live)です。
例えばTTLを”24時間”にしておくと、同じキャッシュDNSサーバーからの繰り返しの問い合わせが最大でも24時間で1回に済むようになりますので、権威DNSサーバーの負荷低減に繋がります。
逆に、ゾーン情報の変更を頻繁に行う場合は、TTLを”1分”にしておくことで、権威DNSサーバーの負荷と引き換えに、キャッシュDNSサーバーがすぐに最新のゾーン情報を受け取ることができるようになります。
普段はTTLを長めにしておき、計画的なゾーンの変更を行う時にだけ、先にTTLを段階的に少なくしていき、変更後にTTLを元の時間戻す、といった運用がしばしば行われます。
その他のDNS関連用語
hostsファイル
WindowsなどのOSの設定ファイルの1つです。
hostsファイルにIPアドレスとドメイン名を対にして記載しておくと、DNSより先にこの内容を参照するようになります。
実際にゾーン情報を変える前にhostsファイルに登録しておくと、その端末のみが、あたかもゾーンが変わったかのように扱われます。
ゾーンの変更を行う前のウェブサイトの動作検証などに利用されます。
正引きと逆引き
ドメイン名やホスト名からIPアドレスを求めることを正引き、
逆にIPアドレスからドメイン名やホスト名を求めることを逆引きと言います。
nslookupまたはdig
Windowsコマンドプロンプトのコマンド(nslookup)またはLinuxのコマンド(dig)で、DNSレコードを確認することができます。
CUIによるコマンド入力に詳しくない人でも、GUIでnslookupやdigが使えるフリーのWebサービスを利用することもできます。
上記サービスで[ホスト名(FQDN)を指定してください]の欄に speever.jp と記入し、[nslookup実行]を押してみてください。
結果の[入力の逆引きまたは正引き]に、IPアドレス”202.230.201.173″が表示されているはずです(2021年現在)。
パブリックDNSサーバー
誰でも利用できるキャッシュDNSサーバーです。代表的なパブリックDNSサーバーにGoogle社の運営する”8.8.8.8″があります。
通常はパブリックDNSサーバーよりも、ISPやネットワーク管理者が設置した「ネットワーク的に近い」キャッシュDNSサーバーを使う方が、応答速度などの面でも有利です。ですが、例えば外出先でフリーWi-Fiなどのネットワークに接続する際など、そのキャッシュDNSサーバーが信用できない、または応答速度が遅いなどの理由で、パブリックDNSサーバーが利用されることがあります。