前回、DNSの基本概念について書きましたが、今回は少し突っ込んでDNSの登録情報「レコード」について書きたいと思います。
DNSレコード
DNSに登録する情報をレコードと呼びます。レコードにはいくつか種類があります。以下に主なレコードの種類を挙げます。
A | ホスト名に対するのIPアドレス |
---|---|
AAAA | ホスト名に対するのIPアドレスなのですが、こちらはIPv6のアドレスを指定するレコードです。 |
PTR | IPアドレスに対するホスト名 |
SOA | 管理者のメールアドレスなどのゾーン情報 |
NS | DNSサーバのホスト名 |
MX | メールサーバのホスト名 |
CNAME | ホスト名の別名 |
HINFO | ホストのOSやハードウェア情報など |
TXT | ホストのテキスト情報 |
A/AAAAレコード
ホスト名に対するIPアドレスが定義されています。ホスト名からIPアドレスを求める正引きの際に参照されるレコードです。
PTRレコード
IPアドレスに対するホスト名が定義されています。IPアドレスからホスト名を逆引きする際に参照されるレコードです。
SOAレコードにはSERIAL:シリアルナンバー、REFRESH:ゾーン情報のリフレッシュ間隔、RETRY:リフレッシュの再試行間隔、EXPIRE:ゾーン情報の有効期限、ドメイン管理者のメールアドレスなどが記述されています。
ゾーンファイルでは@マークが使えないのでドメイン管理者メールアドレスには「@」の代わりに「.」で表記されています。
SOAレコード
管理者のメールアドレスやゾーン情報の有効期限などが定義されているレコードです。
NSレコード
そのドメインに権威があるネームサーバのホスト名が定義されています。
MXレコード
そのドメインに属するメールサーバのホスト名が定義されています。
CNAMEレコード
ホスト名の別名が定義されています。
HINFOレコード
ホストのOSやハードウェア情報などが定義されていますが、無駄な情報な上に脆弱性につながりかねないので使われることはあまりありません。
TXTレコード
ホストのテキスト情報が定義されています。例えば詐称メール対策の「SPF:Sender Policy Framework」ではTXTレコードを使用して真正性を明らかにしています。
> set type=txt > google.com サーバー: google-public-dns-a.google.com Address: 8.8.8.8 権限のない回答: google.com text = "v=spf1 include:_spf.google.com ~all"
nslookupコマンドでDNSサーバに問い合わせる
以上が主なDNSレコードです。
上記を踏まえてnslookupコマンドでDNSサーバに問い合わせをしてみましょう。
nslookupとは
nslookupとは多くのOSで使用できるネットワーク管理のためのコマンドラインベースのDNSクライアントツールです。殆どのWindowsOSに標準でインストールされており、コマンドプロンプトから利用可能です。Unix系OSで使用できるDNSクライアントツールとしてはdigコマンドやhostコマンドなどが挙げられます。ちなみにdigはWindows版も存在します。http://www.atmarkit.co.jp/ait/articles/1410/20/news122.html
多くのWindows環境で使えるnslookupコマンドはdigコマンドより少々劣りはしますが、高性能なDNSクライアントツールです。
nslookupの起動
nslookupの起動はコマンドプロンプトでnslookupと打つだけです。引数でドメイン名やIPアドレスや取得するレコードを指定できます。
引数を付けずに実行するとインタラクティブに操作ができます。
> nslookup
実際にnslookupコマンドを使用して名前解決の様子を見てみましょう。
google.comのIPアドレスを求める(正引き)
nslookupのプロンプトに名前解決したいドメイン名を入力するとそれに対応するIPアドレスが表示されます。
> google.com
IPアドレスからホスト名を求める(逆引き)
nslookupのプロンプトに名前解決したいドメイン名を入力するとそれに対応するIPアドレスが表示されます。
> 216.58.200.206
nslookupコマンドでレコード別に情報を取得する
MXレコードを取得
nslookupで取得するレコードを選択するには「set type=レコードタイプ」を入力します。
以下はMXレコードを問い合わせることでgoogle.comのメールサーバを取得しています。
> set type=mx > google.com
NSレコードを取得
以下はgoogle.comのネームサーバのホスト名を特定しています。
> set type=ns > google.com
問い合わせ先ネームサーバを変更
問い合わせるネームサーバを変更するには「server サーバ名」を入力します。
次の例では問い合わせDNSサーバをgoogle.comのネームサーバに指定してset type=anyで全てのレコードを取得しています。
> server ns1.google.com > set type=any > google.com
まとめ
この記事ではnslookupコマンドによって実際にDNSサーバに問い合わせるデモを解説してみました。DNSに問い合わせるとドメインに属するサーバの関係性や、そのサーバを管理している会社が分かったりと様々な有益な情報が得られます。これらの情報はサーバ移管やドメイン変更の際などにきっと重宝することでしょう。