【基礎】DNSの仕組みを知る② | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

前回に引き続き、DNSについて学んでいきます。

今回は、DNSの基本的な登録方法を中心にまとめます。

 

前回の記事はこちら

 

 

もくじ

1.ゾーンファイル

2.DNSレコードの種類

3.クライアント側でのDNSの設定(Linux)

4.小規模or内部ネットワークでの名前解決(Linux)

 

■ゾーンファイル

DNSコンテンツサーバ(権威サーバ)はゾーンファイルを持っている。

ゾーンファイルは、IPアドレスとドメイン名の対応関係表のようなもので、

DNSコンテンツサーバは、ゾーンファイルをもとに、問い合わせに応じている。

 

ゾーンファイルの各行を「DNSレコード」と言い、

DNSレコードには複数の種類が存在する。

 

■代表的なDNSレコード

◎Aレコード

最もスタンダードなレコード。
IPアドレス(IPv4形式)とドメイン名+ホスト名の対応関係が登録されている。
<例>

example.com IN A 100.200.50.100

 

◎AAAAレコード

IPアドレスとドメイン名+ホスト名の対応関係が登録されている。
ただしIPアドレス形式はIPv6。
(IPv4とIPv6の違いはここでは省略。知りたい方はググってください)

<例>

example.com IN AAAA fd00::1

 

◎CNAMEレコード

正式なドメイン名+ホスト名とは異なる、別名(エイリアス)を登録できる。
 

<例>

example.com IN A 100.200.50.100

example.com IN CNAME hello-world.com

 

例の意味:

正式なドメイン名+ホスト名「example.com」は、100.200.50.100というIPアドレスに対応する。
また、正式なドメイン名+ホスト名「example.com」は「hello-world.com」というエイリアスを持つ。
 

エイリアスを登録すると、
100.200.50.100(example.com)が指すサーバへのアクセスは、
エイリアスである「hello-wolrd.com」にアクセスすることで可能になる。

エイリアスを登録しておけば、万一、IPアドレスが変更になったり、正式なドメイン名+ホスト名を変えることになったりしても、
外部から当該サーバへのアクセスは変更前と同様、「hello-wolrd.com」にアクセスできる。

変更の影響を最小限に留めることが出来るのである。
 

◎PTRレコード

これまでは、ドメイン名+ホスト名 → IPアドレス 方向のマッピングだったが、逆方向がPTRレコードである。

<例>

100.200.50.100 IN PTR example.com


◎NSレコード

参照すべきDNSサーバを指定するためのレコード。

<例>

test.example.com IN NS dns1.example.com

 

例の意味:
「ドメイン名 IN NS DNSサーバ名」という記述の仕方。

「test.example.com」というドメインに関する情報は、「dns1.example.com」というDNSサーバに聞いてくれ、という意味になる。

 

◎TXTレコード

ホスト名に関連付けたい文字列があれば、登録しておける。
よくある使い方は、自ドメインで送信を許可するメールサーバ指定時に、認証情報を記載しておくなど。
書き方は環境によってまちまちな模様。。

 

DNSレコードの種類は他にもあるが(とくにメールサーバ関連とか)、ここでの紹介は以上とする。

 

■クライアント側でのDNSの設定

Linuxにおいて、名前解決のために利用するDNSキャッシュサーバなどを指定する必要がある。
指定にあたっては、/etc/resolv.confという設定ファイルを用いる。
 

◎resolv.confの記述内容

・nameserver

 当該マシンが、名前解決に利用するDNSサーバの情報(最低限必要な情報)
・domain

 当該マシンの所属するドメイン(ドメインなのでホスト名は含まない)
・search

 domainを複数指定したい場合に記述

◎記述例

nameserver 192.168.1.0

nameserver 100.200.50.100

search localdomain test.com

 

例の意味:

 まず、「localdomain」というドメイン内に、名前解決したいホストが含まれているかを確認し、含まれていればそのIPアドレスを返して名前解決となる。

 次に、「test.com」というドメイン内に、名前解決したいホストが含まれているかを確認し、含まれていればそのIPアドレスを返して名前解決となる。

 次に、「192.168.1.0」というDNSサーバに、名前解決の問い合わせを行う。

 ここまでで名前解決できなかった場合、「100.200.50.100」というDNSサーバに、名前解決の問い合わせを行う。

 

domain、search系のものを先に検索し、なければnameserverで設定したDNSサーバに問い合わせを行う順となっている。

また、それぞれ複数指定されている場合は、searchは左から順、nameserverは上から順に検索される。

 

 

■小規模なネットワーク内での名前解決

名前解決は、通常DNSサーバの階層構造の仕組みを使って行われる。

ただローカルネットワークなど、小規模なネットワークや外部公開していないネットワーク内での名前解決は、DNSの仕組みを使わない。

代わりに、hostsファイルと呼ばれる、IPとホスト名の対応表が用いられる。

 

hostsファイルを、内部ネットワーク内の全クライアントに配置することで、

各クライアントから、ネットワーク内のホスト名の名前解決が出来るようになる。

(ただし、最初の配置に加え、ホスト名や対応するIPが変わったときに、全クライアントのhostsファイルを修正しないといけない面倒さがある)

 

◎hostsファイルの所在と記述方法(Linux)

 ・所在:   /etc/hosts

 ・記述例: 192.168.0.1 test.host   ←「IP ホスト名」で記述する

 

※Windows10も書き方は同じな模様。

所在は C:\Windows\System32\drivers\etc でした。

(Mac、およびWindowsの他のバージョンは調べてない)

 

 

今回は以上!