【ネットワークスペシャリスト】DNSとDNSレコードについて

ネットワークスペシャリスト

ネットワークスペシャリストでは、「DNSレコード」に関する問題が出題されます。
この記事ではDNSの概要を紹介した後、実際の設定例とともにDNSレコードについて解説していきます。

そもそもDNSとは?

DNSとは、ドメインネームシステムの略称です。
※ DNS = ドメインネームサーバかと思っていました…

IPアドレス(数字の羅列)はコンピュータにとって扱いやすいですが、
人間にとっては覚えにくいので、別名を付けるための仕組みが考えられてきました。

最も単純なものはhostsファイルです。

hostsファイル

hostsファイルは、ローカル(端末内)に保存されているテキストファイルです。
IPアドレスとその別名(ドメイン)が記載されています。

Windowsの方は、Windowsボタン + Rで「ファイル名を指名して実行」画面を開き
C:\windows\system32\drivers\etc\hostsと入力、
Macの方は、コンソールで
vim /private/etc/hostsを実行するとhostsファイルの中身を見ることができます。

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host
# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
# Added by Docker Desktop
192.168.0.XXX host.docker.internal
192.168.0.XXX gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section

実際のhostsファイルです。(一部マスキングしています)
192.168.0.XXXとhost.docker.internalがバインドされています。

DNSサーバの登場

hostsファイルは、各端末に個別に設定する必要がある上、解決するドメインが増えてくると管理が大変です。

例えば、現在のインターネットの名前解決をhostsファイルで賄おうとすると、
世界中のすべてのドメインと紐づくIPアドレスを個別に端末にする必要があり、
さらに、ドメインが増えたり、紐づくIPアドレスが変わった場合、世界中の端末で同時に設定を変更しなければなりません。現実的ではないですよね。

そのため、名前解決を専門で行うDNSサーバが登場しました。

DNSサーバの概要はここまでです。

今回の記事のメインは、DNSレコードに関する紹介ですので名前解決の詳しい解説については割愛します。

DNSレコード

名前解決を行うために、DNSサーバはDB(単なるテキストデータ)を保持しています。
これをDNSレコードといいます。

DNSレコードには、いくつか種類があります。
すべてのDNSレコードについて知りたい方は、みんな大好きWikipediaをご参照ください。

当記事では代表的なものを紹介していきます。

項目説明
TXTレコードテキスト情報
Aドメインに紐づくIPアドレス(IPv4形式)
AAAAドメインに紐づくIPアドレス(IPv6形式)
NSどのサーバに実際のDNSレコードがあるかを示す
CNAMEドメインの正式名称
SOAドメインについての情報
MXそのドメインのメールサーバのIPアドレス
DNSレコードの種類

以降、それぞれのレコードについて解説していきます。

Aレコード

Aレコードは、ドメインとIPアドレスの紐付けを表現するためのレコードです。
hostsファイルに書く内容をイメージすると理解しやすいと思います。

nekonisi.info. 300 IN A 52.20.212.224

nslookup実行結果

$ nslookup -type=A nekonisi.info 8.8.8.8
Non-authoritative answer:
Server:  dns.google
Address:  8.8.8.8

Name:    nekonisi.info
Address:  52.20.212.224
解説

nekonisi.infoに紐づくIPアドレスが52.20.212.224であることを表しています。

AAAAレコード

AAAAレコードは、ドメインと、IPアドレス(IPv6)の紐付けを表現するためのレコードです。

AレコードIPv4が32bitの情報であるのに対して、IPv6が128bitの情報なので、
Aレコード(IPv4)の4倍→AAAAレコードとしているそうです。安直ですね笑

※ nekonisi.infoはIPv6に対応していないので、google.comのレコードを確認します。

google.com. 300 IN AAAA 2404:6800:4004:821::200e

nslookup実行結果

$ nslookup -type=AAAA google.com 8.8.8.8
Non-authoritative answer:
Server:  dns.google
Address:  8.8.8.8

Name:    google.com
Address:  2404:6800:400a:80c::200e
解説

google.comに紐づくIPアドレス(IPv6形式)が「2404:6800:4004:801::200e」であることを表しています。

NSレコード

NSレコードは、どのサーバに実際のDNSレコードがあるかを示します。

例えば、
hoge.com. 300 IN NS ns.hoge.com
というレコードがあるDNSサーバにhoge.comに関する問い合わせが飛んできた場合に、
ns.hoge.comに問い合わせを行うように誘導をします。

参考

nekonisi.info. 60 IN NS ns-1287.awsdns-32.org.

nslookup実行結果

$ nslookup -type=NS nekonisi.info 8.8.8.8
Non-authoritative answer:
Server:  dns.google
Address:  8.8.8.8

nekonisi.info    nameserver = ns-1287.awsdns-32.org
nekonisi.info    nameserver = ns-1667.awsdns-16.co.uk
nekonisi.info    nameserver = ns-207.awsdns-25.com
nekonisi.info    nameserver = ns-728.awsdns-27.net
解説

nekonisi.info.というドメインのNSが下記であることを示しています。

  • ns-1287.awsdns-32.org
  • ns-1667.awsdns-16.co.uk
  • ns-207.awsdns-25.com
  • ns-728.awsdns-27.net

これらはAWSのDNSサーバのドメインです。
「名前解決のための情報がこれらのドメイン(のサーバ)に存在するので、こちらに問い合わせてね」
という内容になります。

CNAMEレコード

CNAMEレコードは、別名を正式名称に正すレコードです。
CNAMEは「canonical name(完全に同じ名前)」の略のようです。

例えば、
info.hoge.com IN CNAME service.hoge.com
というようなレコードが合った場合に、info.hoge.comの名前解決を
service.hoge.comに置き換えて名前解決を続けます。

www.nekonisi.info. 300 IN CNAME nekonisi.info.

nslookup実行結果

nslookup実行結果
$ nslookup -type=CNAME www.nekonisi.info
Non-authoritative answer:
Server:  dns.google
Address:  8.8.8.8

www.nekonisi.info        canonical name = nekonisi.info
解説

www.nekonisi.infoに対してリクエストがあった場合、
「nekonisi.infoが正式名称なので、そちらで名前解決してね」と誘導しています。

SOAレコード

SOAレコードは、DNSサーバの動作を決めるための基本情報を記載します。
例えば、他のDNSサーバのキャッシュ領域に情報を残す許可時間やリクエスト間隔などを登録します。

SOAレコードの書式

【ドメイン名】 【クラス名】 SOA 【DNSサーバのドメイン名】 【連絡先】 (
【シリアル番号】
【更新チェックの間隔】
【リトライ間隔】
【問い合わせ諦めるぜ期間】
【ネガティブキャッシュの有効期限】 )

SOAレコード【DNSレコード】とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

nekonisi.info. 900 IN SOA nekonisi.info. admin.nekonisi.info. 1 7200 900 1209600 86400

nslookup実行結果

$ nslookup -type=SOA nekonisi.info
Non-authoritative answer:
Server:  dns.google
Address:  8.8.8.8

nekonisi.info
        primary name server = nekonisi.info
        responsible mail addr = admin.nekonisi.info
        serial  = 1
        refresh = 7200 (2 hours)
        retry   = 900 (15 mins)
        expire  = 1209600 (14 days)
        default TTL = 86400 (1 day)
解説

ドメイン名「nekonisi.info」の権威情報を取得しています。

それぞれの項目に関する説明は下記のとおりです。

項目名説明
primary name serverドメイン名nekonisi.info
responsible mail addr管理者のメールアドレスadmin.nekonisi.info
serial serialシリアル値(SOAのバージョン情報)1
refreshゾーンファイルの更新チェック間隔7200 (2 hours)
retryゾーンファイルの再問い合わせまでの間隔900 (15 mins)
expireゾーンファイルの問い合わせのタイムアウト時間1209600 (14 days)
default TTLMaxのTTL数86400 (1 day)
SOAレコードの説明

MXレコード

MXレコードは、メールの配信先のドメインが登録されています。

google.com MX preference = 20, mail exchanger = alt1.aspmx.l.google.com

nslookup実行結果

$ nslookup -type=MX google.com
Non-authoritative answer:
Server:  dns.google
Address:  8.8.8.8

google.com      MX preference = 20, mail exchanger = alt1.aspmx.l.google.com
google.com      MX preference = 40, mail exchanger = alt3.aspmx.l.google.com
google.com      MX preference = 50, mail exchanger = alt4.aspmx.l.google.com
google.com      MX preference = 10, mail exchanger = aspmx.l.google.com
google.com      MX preference = 30, mail exchanger = alt2.aspmx.l.google.com
解説

○○@google.comに対して、メールを送信した際に
メールを具体的にどこに送信するかが表示されています。

preferenceについて

preference(優先度)が低い値ほど優先されます。
例の場合は、「aspmx.l.google.com」に対してメールが送信されます。
うまく行かない場合は、「alt1.aspmx.l.google.com」に対してメールが送信されます。

参考文献

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

Wikipedia

以上

コメント

タイトルとURLをコピーしました