DNS
DNSはFQDNからIPアドレスに変換すると説明してきましたが他にも機能があり、トラブル発生時はDNSが影響している場合が少なからずあります。トラブル解決のためにはDNSについてもう少し詳しく知っておく必要があるため、本項ではDNSの機能について説明します。
これまで説明してきたFQDNからIPアドレスを解決する事を正引きと言います。例えばtest1.aaa.bbb.cccというFQDNがあった場合、aaa.bbb.cccを管理するDNSサーバーではホスト名test1のIPアドレスは192.168.2.1というように設定されています。
通常は複数のホストが登録されているため、以下のような対応付けされたファイルがあり、これを読み込んで回答しています。この対応付けをAレコードと言います。
ホスト名 | IPアドレス |
---|---|
test1 | 192.168.2.1 |
test2 | 192.168.2.2 |
test3 | 192.168.3.3 |
test4 | 192.168.4.4 |
正引きがFQDNからIPアドレスを解決するのに対してIPアドレスからFQDNを解決する事を逆引きと言います。例えば192.168.2.1/24というIPアドレスのホストがあった場合、192.168.2.0/24を管理するDNSサーバーがあり、1というホストアドレスのFQDNはtest1.aaa.bbb.cccというように設定されています。
通常は複数のホストが登録されているため、以下のような対応付けされたファイルがあり、これを読み込んで回答しています。この対応付けをPTRレコードと言います。
ホストアドレス | FQDN |
---|---|
1 | test1.aaa.bbb.ccc. |
2 | test2.aaa.bbb.ccc. |
3 | test3.ddd.eee.fff. |
4 | test4.ggg.hhh.iii. |
FQDNの後に「.」が付いているのには訳があります。DNSでは「.」が付いていないとドメインネームが自動的に保管されます。つまり、FQDNで記載する場合は「.」が必須になります。
逆引きも正引きと同じように階層構造になっています。
正引きでは最初のホスト名がドメインを管理する側で自由に割り当てられますが、IPアドレスは逆で最後のホストアドレス部分がサブネットを管理する側で自由に割り当てられます。このためIPアドレスを逆さにしてドメインと同じように最初が自由に割り当てられる番号にして表記します。
このように表記する事で正引きの階層構造の中に組み込んでいます。
arpaは逆引きを管理するドメインネームで、in-addrはIPv4を管理しています。
基本編の「便利な住所録」で示したDNSの動作と同様に以下の順で逆引きを行います。
尚、上記では説明のためプライベートアドレスで示していますが、インターネットではグローバルアドレスで管理されています。
NSレコードはDNSサーバーのFQDNを定義します。つまり自身のFQDNを定義するのですが、それ以外にも2点大きな役割があります。
1点目はDNSサーバーは通常プライマリとセカンダリがあり、セカンダリはプライマリで定義された内容を自動的にコピーされるようになっています。NSレコードではこのプライマリ、セカンダリ両方を登録します。
2点目として下位のドメインのNSサーバーを定義します。例えば、aaa.bbb.cccというドメインネームに対してxxx.aaa.bbb.cccというドメインも作成していた場合、xxx.aaa.bbb.cccを管理するDNSサーバーのFQDNを定義します。xxx.aaa.bbb.cccはサブドメインと言って、xxx.aaa.bbb.cccを管理するDNSサーバーが別にいるためです。
このため以下のような定義がされています。
ドメインネーム | FQDN | 説明 |
---|---|---|
(空白) | ns1.aaa.bbb.ccc. | プライマリ |
(空白) | ns2.aaa.bbb.ccc. | セカンダリ |
xxx | ns1.xxx.aaa.bbb.ccc. | サブドメインを管理するプライマリ |
xxx | ns2.xxxaaa.bbb.ccc. | サブドメインを管理するセカンダリ |
各サーバーのIPアドレスはAレコードで定義します。
DNSではルートから順に下位のサーバーに問い合わせを行いますが、途中の各サーバーはこのNSレコードを回答して下位のサーバーへ問い合わせ出来るようになっています。
逆引き用にも同様の設定があり、下位のサーバーへ問い合わせが出来るようになっています。
メールを送信する際、username@aaa.bbb.cccといったアドレスで送ると思いますが、この時メールサーバーはaaa.bbb.cccのメールサーバーのIPアドレスをDNSで確認した後に送信しています。
この時に回答されるアドレスがMXレコードです。MXレコードはメールサーバーのFQDNを定義するため、以下のような定義がされています。
ドメインネーム | プリファレンス値 | FQDN |
---|---|---|
(空白) | 10 | mail1.aaa.bbb.ccc. |
(空白) | 20 | mail2.aaa.bbb.ccc. |
プリファレンス値は優先度です。値が小さい程優先されるため、上記では常にmail1側にメールを送ろうとし、応答がない場合にmail2側に送ります。優先度が同じ場合はmail1,mail2のFQDNが順番にDNSで回答されるため、最初はmail1,次はmail2側に送られるというように順番に送られます。このように順番に送られる事をラウンドロビンと言います。
メールサーバーのIPアドレス自体はAレコードで定義されます。
CANMEレコードは別名です。例えば、test1.aaa.bbb.cccというサーバーがあってWebサーバとDNSサーバーを兼用していてwww.aaa.bbb.cccとns1.aaa.bbb.cccでアクセスさせたい場合等に利用します。
定義は以下のようになっています。
別名 | ホスト名 |
---|---|
www | test1 |
ns1 | test1 |
このため、正引きでwww.aaa.bbb.cccのIPアドレスを確認し、そのIPアドレスで逆引きすると本来のFQDNであるtest1.aaa.bbb.cccが回答されて違うFQDNになる事があります。
ホスト名に対するIPアドレス自体はAレコードで定義されています。
Aレコードは以下のように記述出来ます。
ホスト名 | IPアドレス |
---|---|
test1 | 192.168.2.1 |
test1 | 192.168.2.2 |
test1 | 192.168.2.3 |
test1 | 192.168.2.4 |
同じホスト名に対して複数のIPアドレスが定義されていますが、この場合、DNSサーバーは問い合わせに対して順番にIPアドレスを回答します。1番目の問い合わせでは192.168.2.1、2番目では192.168.2.2と回答します。これをDNSラウンドロビンと言います。
DNSラウンドロビンは負荷分散の役割が出来ます。例えば、1台のサーバーで賄えないアクセスがあるWebサーバーがあった場合、DNSラウンドロビンで違うIPアドレスを回答するため、複数のWebサーバーにアクセスが分散されます。
このため、正引きする度に違うIPアドレスが回答される場合があります。
応用編「サーバー負荷分散」では負荷分散装置の説明をしましたが、DNSラウンドロビンによってサーバーがダウンしている時は振り分けない等の細かな制御は出来ないものの、簡易的なサーバー負荷分散が可能です。