ネットワークスペシャリストでは、「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アドレス |
以降、それぞれのレコードについて解説していきます。
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 TTL | MaxのTTL数 | 86400 (1 day) |
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用語辞典
以上
コメント