※当サイトの記事には、広告・プロモーションが含まれます。

DNS(Domain Name System)のリソースレコードとAレコードとCNAMEレコードと

DNS(Domain Name System)は、『182.22.71.250』のようなIPアドレスを『www.yahoo.co.jp』のようなドメイン名(及びホスト名)と対応づけをしてくれるシステムです。(メールの宛先ホストを指示なども行っているようです。

Windowsのローカル環境だと、

C:¥Windows¥System32¥drivers¥etc¥hosts    

ファイルで簡易的なDNSを担ってる?と思われます。 

各OSのhostsファイルの場所

OS名 格納場所
UNIX/Linux /etc/hosts
Windows NT系列 %SystemRoot%¥System32¥drivers¥etc¥hosts
Windows 95系列 %WINDOWS%¥hosts
macOS /etc/hosts(シングルユーザーモードでのみ有効)
BeOS /boot/beos/etc/hosts

hosts - Wikipedia

⇩  DNSの仕組みについては下記サイトへ

IPアドレスとドメインを結びつける、DNSサーバの役割と名前解決の仕組み | OXY NOTES

とことんわかるインターネット基礎の基礎9 ページ2

DNSクライアントとDNSサーバ

DNSクライアントに関しては、 WindowsではWindows DNS クライアントというものがあらかじめパソコンに内蔵されているみたいです。

DNSサーバが、実際にIPアドレスドメイン名(及びホスト名)をデータベースとして保持しているようです。このデータベースが持つデータを「リソースレコード」と呼ぶようです。

DNSはサーバ・クライアントモデルとなっていて,DNSサーバとDNSクライアントの両方が必要です。

リソースレコード

リソースレコードの中身は

種類 データ長 意味
所有者(Owner) そのドメインの名前
名前(NAME) 可変長 リソースレコードの名前
タイプ(TYPE) 16bit リソースのタイプ
クラス(class) 16bit クラス。使用プロトコルが入る。通常は0x0001の値を取る。
TTL (Time to Live) 32bit リソースレコードのキャッシュ時間(秒)
RD長(RDLength) 16bit RDATAの長さ(オクテット)
RDATA 可変長 リソースの中身。TypeとClassによって中身が変化する。

リソースレコードの例 

Owner Name Type class TTL RDLength RDATA
gahoon.co.jp www 0001 0001 86400 4 192.168.0.1

⇩  下記サイトを参考にしてます。

DNSサーバの概要 ‹ 技術の犬小屋

リソースレコードにはいくつかの種類(レコードタイプ)が存在し、一般的に使用されている主なリソースレコードには次のものがあるようです。

リソースレコードのType

レコードタイプ 役割
1 A(アドレス) ホストのアドレス
2 NS(ネームサーバ) そのドメインが管理するネームサーバ
5 CNAME(キャノニカルネーム) ホストの別名(エイリアス)
6 SOA(スタートオブオーソリティ ゾーンの情報
12 PTR(ポインターレコード) ポインタ。逆引きに使用する
15 MX(メールエクスチェンジ) そのドメインのメールサーバ

DNSレコードタイプの一覧 - Wikipedia

 

Aレコード

Aレコードはドメイン名とIPアドレスの対応を記述するようです。

ドメイン名とIPアドレスの対応は必ずしも1対1である必要はなく、1つのドメイン名に複数のIPアドレスを対応させることもできるようです。

ASCII.jp:リソースレコードの種類と役割とは (1/2)|DNSのキホン

AレコードとCNAMEレコードの違い - Qiita

株式会社K-fix

f:id:ts0818:20170122173414p:plain

この場合、gahoon.co.jpは3つのIPアドレスと紐づいているので、DNSサーバー側には3つのAレコードがあることになります。 

実際に、WindowsでもLinuxなどで使われているdigコマンドをインストールすることでDNSサーバーの動作状況を確認できるようです。(Windowsの標準装備のnslookupコマンドでも可能ですが、将来的にnslookupは廃止される可能性もあるとのこと。)

「BIND」に付属しているdigコマンドをインストール

BINDとは、Wikipediaによると、 

BIND(Berkeley Internet Name Domain)

以前の呼名はBerkeley Internet Name Daemon

インターネットでもっとも利用されている DNSサーバである。

Unix系システムにおいては特にその傾向が著しい。

ISC(Internet Systems Consortium)によってサポートされているが、元はポール・ヴィクシーDECに在籍中の1988年に作り上げたソフトウェアである。

新しいバージョンのBIND9は、古いバージョンのBINDのコードが保守しづらくなったことと、DNSSEC(DNS Security Extensions)への対応のためにゼロから書き起こされた。

他の重要なBIND9の特徴としては、TSIG、DNS notify、nsupdate、IPv6、rndc flush、view、マルチプロセッサのサポート、そしてアーキテクチャーの移植性の向上がある。

BIND - Wikipedia

 

http://www.isc.org/downloads/ のページで「BIND」をクリックして表示される一覧から、「Current-Stable」(現行の安定版)であるバージョンをダウンロード。

f:id:ts0818:20170122213835j:plain

 

お使いのパソコンに合わせたものを選択します。自分は『BIND9.11.0-P2-win 64bit』を選択しました。

f:id:ts0818:20170122213836j:plain

ダウンロードしたzipフォルダの中で『BindInstall.exe』を実行しようとすと怒られるので、まずは適当な場所に『展開(解凍)』しましょう。

f:id:ts0818:20170122213838j:plain

とりあえず、Cドライブ直下にbindというフォルダを作り、そこに展開しました。 

f:id:ts0818:20170122213839j:plain

今度こそ、『BindInstall.exe』を実行(※管理者権限で実行してください。)。『Tools Only』にだけチェックをし、『Install』をクリックします。ここから先は管理者権限で実行しなかったための失敗例です。

f:id:ts0818:20170122213840j:plain

途中でVisual C++ランタイムのインストールが求められることがあるようで、64bit版と32bit版でインストールすべきVisual C++ランタイムのバージョンも違うようです。

f:id:ts0818:20170122213841j:plain

失敗しとるやん!

f:id:ts0818:20170122213842j:plain

失敗しとるやん!!!

f:id:ts0818:20170122213843j:plain

管理者権限で実行することを知らなかったので、やり直し。

管理者権限で『BindInstall.exe』を実行。

f:id:ts0818:20170122213845j:plain

『Tools Only』にだけチェックをし、『Install』をクリック。

Visual C++ランタイムの『repair』とか聞かれて、これを選択すると強制的にパソコンの再起動が始まって、上手くInstallerが成功にならなかったので、Visual C++ランタイムの部分は一度インストールしてしまった後は『いいえ』でいいかと、たぶん。

f:id:ts0818:20170122213846j:plain

インストールに成功すると、

f:id:ts0818:20170122220440j:plain

となるので、コマンドプロンプトでdigコマンドを試してみましょう。まだ環境変数を設定してないので、cdコマンドで、C:¥に移動してからインストールした場所にあるdig.exeまでのパスの後に半角スペースを入れ『-v』としてdigのバージョンが表示されればOKです。

f:id:ts0818:20170122213847j:plain

Windowsの『システム』>『システムの詳細設定』で 『環境変数』を選択し、pathに

C:¥Program Files¥ISC BIND 9¥bin;

を加えます。再度コマンドプロンプトを起動し、『dig -v』コマンドを実行してバージョンが表示されれば環境変数の設定もOKです。

f:id:ts0818:20170122213848j:plain

そして、GoogleのサイトのDNSを調査してみましょう。

dig google.com

とコマンドを打つと、 

f:id:ts0818:20170122213849j:plain

 

 

いろいろ表示されます。 

norecurseオプション(+norec)をつけると再帰的に問い合わせになるようです。

C:\>dig +norec @192.168.1.1 google3. com A

; <<>> DiG 9.11.0-P2 <<>> +norec @192.168.1.1 google3. com A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7808
;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 14

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google3. IN A

;; AUTHORITY SECTION:
. 149590 IN NS f.root-servers.net.
. 149590 IN NS h.root-servers.net.
. 149590 IN NS a.root-servers.net.
. 149590 IN NS l.root-servers.net.
. 149590 IN NS j.root-servers.net.
. 149590 IN NS i.root-servers.net.
. 149590 IN NS d.root-servers.net.
. 149590 IN NS k.root-servers.net.
. 149590 IN NS m.root-servers.net.
. 149590 IN NS b.root-servers.net.
. 149590 IN NS g.root-servers.net.
. 149590 IN NS c.root-servers.net.
. 149590 IN NS e.root-servers.net.

;; ADDITIONAL SECTION:
a.root-servers.net. 63252 IN A 198.41.0.4
b.root-servers.net. 470323 IN A 192.228.79.201
c.root-servers.net. 154126 IN A 192.33.4.12
d.root-servers.net. 412397 IN A 199.7.91.13
e.root-servers.net. 139741 IN A 192.203.230.10
f.root-servers.net. 457832 IN A 192.5.5.241
g.root-servers.net. 565566 IN A 192.112.36.4
h.root-servers.net. 565566 IN A 198.97.190.53
i.root-servers.net. 598829 IN A 192.36.148.17
j.root-servers.net. 565566 IN A 192.58.128.30
k.root-servers.net. 170033 IN A 193.0.14.129
l.root-servers.net. 56944 IN A 199.7.83.42
m.root-servers.net. 64410 IN A 202.12.27.33

;; Query time: 15 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Jan 22 22:28:40 ???? (?W???) 2017
;; MSG SIZE rcvd: 455

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42571
;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 14

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;com. IN A

;; AUTHORITY SECTION:
com. 152836 IN NS d.gtld-servers.net.
com. 152836 IN NS i.gtld-servers.net.
com. 152836 IN NS l.gtld-servers.net.
com. 152836 IN NS j.gtld-servers.net.
com. 152836 IN NS f.gtld-servers.net.
com. 152836 IN NS g.gtld-servers.net.
com. 152836 IN NS m.gtld-servers.net.
com. 152836 IN NS h.gtld-servers.net.
com. 152836 IN NS c.gtld-servers.net.
com. 152836 IN NS k.gtld-servers.net.
com. 152836 IN NS b.gtld-servers.net.
com. 152836 IN NS a.gtld-servers.net.
com. 152836 IN NS e.gtld-servers.net.

;; ADDITIONAL SECTION:
a.gtld-servers.net. 60548 IN A 192.5.6.30
b.gtld-servers.net. 79161 IN A 192.33.14.30
c.gtld-servers.net. 76538 IN A 192.26.92.30
d.gtld-servers.net. 786 IN A 192.31.80.30
e.gtld-servers.net. 68737 IN A 192.12.94.30
f.gtld-servers.net. 74411 IN A 192.35.51.30
g.gtld-servers.net. 76063 IN A 192.42.93.30
h.gtld-servers.net. 8968 IN A 192.54.112.30
i.gtld-servers.net. 76415 IN A 192.43.172.30
j.gtld-servers.net. 73029 IN A 192.48.79.30
k.gtld-servers.net. 84807 IN A 192.52.178.30
l.gtld-servers.net. 72547 IN A 192.41.162.30
m.gtld-servers.net. 81464 IN A 192.55.83.30

;; Query time: 17 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Jan 22 22:28:40 ???? (?W???) 2017
;; MSG SIZE rcvd: 464
 

再帰的問い合わせ

C:\>dig @192.168.1.1 google3. com A

; <<>> DiG 9.11.0-P2 <<>> @192.168.1.1 google3. com A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 56674
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google3. IN A

;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017012200 1800 900 604800 86400

;; Query time: 18 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Jan 22 22:32:47 ???? (?W???) 2017
;; MSG SIZE rcvd: 111

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62764
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;com. IN A

;; AUTHORITY SECTION:
com. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1485091950 1800 900 604800 86400

;; Query time: 18 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Jan 22 22:32:47 ???? (?W???) 2017
;; MSG SIZE rcvd: 105
 

dig コマンドを理解する - プログラマ 福重 伸太朗 ~基本へ帰ろう~

参考にさせていただいたサイトとdigコマンドの結果がだいぶ違ってはいますが、digコマンド少しずつ調べていきたいと思います。

CNAMEレコード

1つのIPアドレスに複数のドメイン名を持たせることができるようです。

IPアドレスが変更になるとき、CNAMEを使っていると手間を軽減させることができるようです。

CNAME利用前

  • www.gahoon-01.com A 192.168.10.1
  • www.gahoon-02.com A 192.168.10.2
  • www.gahoon-03.com A 192.168.10.3
  • www.gahoon-04.com A 192.168.10.4
  • www.gahoon-05.com A 192.168.10.5

CNAMEを使うと変更するレコードを1つにすることができます。

CNAME利用後

  • www.gahoon-01.com A 192.168.10.1
  • www.gahoon-02.com CNAME www.gahoon-01.com
  • www.gahoon-03.com CNAME www.gahoon-01.com
  • www.gahoon-04.com CNAME www.gahoon-01.com
  • www.gahoon-05.com CNAME www.gahoon-01.com

 

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

3 Minutes Networking No.64

 

DNSの触りの部分でもよく理解できないので、どこかでもう一度整理しないとです。

今回はこのへんで。