DNS (Domain Name Service) 概要 (3)

DNS サーバー

「DNS (Domain Name Service) 概要 (1)」,「DNS (Domain Name Service) 概要 (2)」に引き続き DNS について解説していきます.
DNS はインターネットにおいて一番重要なシステム/サービスで,これがない状態は考えられないほど重要なインフラとなっています.

DNS の動き,仕組みを理解することでインターネットに留まらず Active Directory ドメインサービスなどのイントラネットにも役に立ちますので是非理解しましょう.

本記事では,DNS レコードについて解説していきます.

押さえておきたい DNS レコード

DNS レコードにはいくつかの種別があります.押さえておきたいレコード種別と役割を表にまとめました.

レコード種別説明
SOAゾーンの情報が記載されており,プライマリーサーバーやセカンダリーとの更新間隔など、管理情報が記されています.
NSドメインを管理する (権威) DNSサーバーを定義します.
MXドメインのメールサーバーを定義します.
A正引きレコード.ホスト名に対応する IPv4 アドレスを定義します.
AAAA正引きレコード.ホスト名に対応する IPv6 アドレスを定義します.
SRVサービスレコード.LDAP等のサーバーのアドレスを定義する為に使用します.
PTR逆引きレコード.IPv4/IPv6 アドレスに対応するホスト名を定義します.
TXTテキストレコード.本来はコメントを記載するレコードだが、メールシステム用に SPF レコードを記載するのに用いられる。クラウドサービスを利用する際のドメインの所有者である事の確認にも用いられます.
CNAMEホストの別名を記載するレコードを定義します.

SOA

SOA (Start Of Authority) は,ゾーンの起点を示し,ゾーンの管理情報を定義するレコードです.
SOA リソースレコードは,一つのゾーンに一つだけ記述されます.

SOA リソースレコードの中には次の情報が定義されます.

名前説明
SERIALゾーンのバージョン情報を記載します..セカンダリー DNS サーバーとのゾーン情報同期の際に,この値を元で更新有無が判断されます.
MNANEこのゾーンを管理するプライマリー DNS サーバー名を記載します.
RNAMEこのゾーンを管理する管理者のメールアドレスを記載します.
メールアドレスの @ は . に置き換えて表記されます.
REFRESHセカンダリー DNS サーバーがゾーン情報を更新する間隔を記載します.
RETRYセカンダリー DNS サーバーがゾーン情報の更新に失敗した場合のリトライ間隔を記載します.
EXPIREセカンダリー DNS サーバーがゾーン情報を維持できる時間を記載します.
ゾーンの更新に失敗し続けた場合,指定時間を経過すると,持っている対象ゾーンを破棄します.
MINIMUMネガティブキャッシュの有効時間を記載します.
DNS リゾルバーが名前解決に失敗した際,存在しないレコードだとキャッシュする時間です.

Windows DNS で SOA リソースレコードのプロパティを表示した際,以下のとおりにマップされます.

MINIMUM の扱われ方の注意点

MINIMUM に指定する値は、昔 (RFC 1035) と現在 (RFC 2308) で目的が変わっています.

  • 【昔 (RFC 1035) 】該当ゾーン(ドメイン)にあるレコードのデフォルトTTL
  • 【現在 (RFC 2308)】ネガティブキャッシュのTTL

以前はゾーン(ドメイン) のデフォルト TTL として利用されていましたが,現在はネガティブキャッシュの TTL として利用されています.

このことから,古いドキュメントや Web サイトを参考に設定してしまうとトラブルを起こしてしまう場合があります.
例えば,古いドキュメントでよくある記載例 86400(1日) で設定されていると,ネガティブキャッシュ TTL が 1日となってしまい,レコード情報を変更しても名前解決の結果が更新されない事象が発生します.
nslookup 等で値が更新されないけど DNS キャッシュサーバーを再起動したら,新しいレコード情報を取得できるようになった.という場合はこのような要因が考えられます.

NS

NS (Authoritative Name Server) はゾーンを管理する権威 DNS サーバーを指定するレコードです.
複数の権威 DNS サーバーがある場合はそのサーバーの数だけレコードを記載する必要があります.
NS レコードで指定したホストは A または AAAA レコードでアドレスが解決出来る必要があります.
NS レコードのホスト名は CNAME のホスト名は許されません.

Windows DNS サーバーの NS レコードは次のように指定されます.

NS レコードに対応する A レコードが必要です.先にも述べましたが,CNAME は許されていませんので注意してください.

MX

MX (Mail eXchange) レコードはメールを配送するホスト (メールサーバー) を記載するレコードです.
ホストが複数いる場合は複数記載することができます.複数記載されている場合,プリファレンス値が小さい (優先度が高い) ホストがメール配送において優先して利用されます.

ドメインしか記載できないと思われることがありますが,そうではありません.ホスト (FQDN) 宛てを MX として登録することも可能です.
以下は lab.seichan.org (この DNS ゾーン) の他,mail.lab.seichan.org の MX レコードを登録した場合を掲載します.

プレファレンス値は必ず大小付けなければならないという訳でもありません.上の画像のとおり「mail.lab.seichan.org」の MX レコードのプレファレンス値は両方とも「10」で登録をしています.
この場合,どちらのホストに配送するのかは送信元の判断になります.

A と AAAA

ホストに対応する IP アドレスを記載するレコードです.IPv4 アドレスの場合は A レコード,IPv6 アドレスの場合は AAAA レコードを使用します.

ホスト名が一つでも,A/AAAA レコードは複数用意する事が出来ます.その場合,例えば「www.lab.seichan.org」のレコードが複数あり,IP アドレスが違う場合というケースになりますが,アクセス元がいずれかのホスト (IP アドレス) に対して接続を行います.

DNS ラウンドロビンを期待してこの手法を用いるケースが多いですが,DNS ラウンドロビンが行われるかはリゾルバーの挙動によります.
(一部リゾルバーではランドロビンしない実装もありますし,ラウンドロビンを無効化する設定もあります)


ホスト名が違っていても,A/AAAA レコードで記載する IP アドレスは重複しても構いません.
必ず CNAME にしないといけないという訳ではありません.

例として,「www.lab.seichan.org」と「ftp.lab.seichan.org」で同じ IP アドレスを登録しているケースを掲載します.

SRV

SRV (SeRVice) レコードは,ドメインに対するサービスの場所を指定するレコードです.一番メジャーな利用形態は Active Directory ドメインサービスで利用されています.

あるサービス (例えば LDAP サーバー) のがどこにあるか (IP アドレスは何か) を調べる為に利用されます.

これによって,クライアントの設定で明示的に指定しなくても適切なサーバーを探してアクセスできるようになります.

レコードは「_ldap._tcp.lab.seichan.org」のように記載され,付随して優先度,ポート情報などをレコード情報として登録します.

名前説明
_serviceサービス名を記載します._ldap や _kerberos など _<サービス> の形式になります.
_protocol使用するプロトコルを記載します._tcp か _udp です.
DomainNameドメイン名を記載します.
Priority同じサービスレコードがある場合の優先度を決定します.値が小さいレコードが優先されます.
Weight同じサービスレコード,同じ優先度の場合の分散割合を定義します.
Portサービスが利用するポート番号を記載します.
Target実際にサービスを提供するサーバーの FQDN を記載します.

Windows DNS サーバーで SRV レコードは次のように Active Directory ドメインサービスの各サービスにアクセスするために用いられます.

PTR

PTR (PoinTeR) レコードは,IP アドレスに対するドメイン名 (FQDN) を記載するレコードです.逆引きレコードと呼ばれます.

逆引きレコードが存在しない場合,逆引きを行うサービスのレスポンスが遅くなる (または失敗する) 場合があります.例えば Linux サーバー等への SSH 接続が遅い.などがあります.

殆どの場合,逆引きの名前解決を必要としないものが多いのですが,要件として必須になっている製品もありますので,必要・不必要は十分判断する必要があります.

TXT

TXT (TeXT) レコードは任意の値を記載するレコードです.最長255文字 (255オクテット) を記載する事ができます.

主な利用用途としては,メールサーバーの SPF や DKIM,DMARC などに用いられます.
また,クラウドサービスなどの利用の際にドメインの所持者であることを確認するために TXT レコードに文字列を定義して確認する.などの利用もあります.

CNAME

CNAME (Canonical NAME) は正式名に対する別名を記載するレコードです.トラブルの元になる為,よく理解して利用する必要があります.

A または AAAA は上述していますが,同じホスト名で複数の A レコードを持つことも,同じ IP アドレスで複数の A レコードを持つこともできますので,A や AAAA の利用を検討しましょう.

NS や MX レコードの値に CNAME のホストを記載することはできません

NG の例①

lab.seichan.org NS dns.lab.seichan.org
lab.seichan.org MX 10 mail.lab.seichan.org

ad01.lab.seichan.org A 192.168.250.1

dns.lab.seichan.org CNAME ad01.lab.seichan.org
mail.lab.seichan.org CNAME ad01.lab.seichan.org

正しい例①

lab.seichan.org NS dns.lab.seichan.org
lab.seichan.org MX 10 mail.lab.seichan.org

ad01.lab.seichan.org A 192.168.250.1

dns.lab.seichan.org A 192.168.250.1
mail.lab.seichan.org A 192.168.250.1

または

lab.seichan.org NS ad01.lab.seichan.org
lab.seichan.org MX 10 ad01.lab.seichan.org

ad01.lab.seichan.org A 192.168.250.1

CNAME の別名に対しての別 CNAME を定義してはいけません

NG の例②

ftp.lab.seichan.org CNAME www.lab.seichan.org
www.lab.seichan.org CNAME ad01.lab.seichan.org
ad01.lab.seichan.org A 192.168.250.1

正しい例 ②

ftp.lab.seichan.org CNAME ad01.lab.seichan.org
www.lab.seichan.org CNAME ad01.lab.seichan.org
ad01.lab.seichan.org A 192.168.250.1

CNAME と 別名は 1:1 である必要があります

NG な例 ③

www.lab.seican.org CNAME ad01.lab.seichan.org
www.lab.seichan.org CNAME ad02.lab.seichan.org
ad01.lab.seichan.org A 192.168.250.1
ad02.lab.seichan.org A 192.168.250.2

正しい例 ③

www.lab.seican.org A 192.168.250.1
www.lab.seichan.org A 192.168.250.2
ad01.lab.seichan.org A 192.168.250.1
ad02.lab.seichan.org A 192.168.250.2

以上,DNS レコードの解説でした.
次回は,nslookup を用いた DNS 問合せやトラブルシューティング時に役立つお話について解説します.

コメント

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