レコードとは?
DNSサーバーは自身が管理するゾーンについての情報が書かれた「ゾーンファイル」を持っています。
ゾーンファイルにはIPアドレスやホスト名が書かれています。例えばあるドメインに対するIPアドレスの情報やメールサーバーの情報などが書かれています。それらの情報の記述形式は決まっています。
その記述形式のことを「リソースレコード」といいます。
リソースレコードの種類
ゾーンファイルには様々な情報が書かれています。リソースレコードには
- Aレコード 指定したドメインに対応するIPv4アドレス(正引き)
- host.example.com. IN A 192.168.0.5 (IPv4)
- AAAAレコード 指定したドメインに対応するIPv6アドレス(IPv4は32bitでIPv6は4倍の128bitだから)
- host.example.com. IN AAAA 2406:1231:e4:a1a::10 (IPv6)
- PTRレコード 指定したIPアドレスに対応するドメイン名(逆引き)
- 0.168.192.in-addr.arpa. IN PTR www.example.com. 逆引きの書き方は特殊
- NSレコード そのドメインを管理するネームサーバーのFQDN
- example.com. IN NS ns.example,com.
- MXレコード 指定したドメインに対応するメールサーバー
- example.com. IN MX 5 smtp.example.com.
- SOAレコード 指定したドメインのゾーンを管理するネームサーバーの情報(シリアル値、更新時間…) Start Of Authority の略。
- example.com. IN SOA ns.example.com. root.example.com.
- CNAMEレコード ドメイン名のエイリアス(別名)情報
- host.example.com IN CNAME www.example.com.
- 一つのIPアドレスに対して複数のドメイン名を付けたいときに使う。例えば、メールのSMTPサーバー、webサーバー、DNSサーバを同じホストで立ち上げると皆同じアドレスになる。これをCNAMEに登録することでsmtp.example.com=www.example.com=ns.example.com=192.168.0.5とできる。
- TXTレコード 補足情報
などがあります。
レコードを確認するコマンド
レコードを確認するコマンドはwindowsやMacOS、Linuxによって変化しますが、ここではLinux(CentOS7)におけるレコードを確認するコマンドについて解説していきます。
レコードを確認するコマンドとしては
- nslookup
- dig
コマンドがあります。
nslookup
nslookup (オプション) FQDN または(ネームサーバーのIPアドレス)
例:nslookup www.google.com
DNSサーバーのアドレスが帰ってくる
レコードタイプを指定して参照したい場合は
nslookup -querry=MX www.google.com
とやります。
dig
digコマンドはリソースレコードを確認するコマンドとして推奨されるコマンドです。詳しくレコードを確認することができます。
digコマンドの使い方は
dig (FQDN) (レコードタイプ) 例:dig www.google.com MX
です。
digコマンドはいくつかの項目に分かれて結果が返答されます
- Question Section 要求ドメイン名・FQDN
- Answer section 検索結果が表示
- Authority section 情報の権威委譲先
- additional section 補足情報
digコマンドでAレコードを調べる
実際にAレコードを確かめてみましょう
dig yahoo.co.jp A
結果は以下の図のように出てきます。digコマンドの結果はいくつかのセクションに分かれています。
重要なところはQuestion SectionとAnswer Sectionです。
Question Sectionにはdigコマンドで聞いた内容が記されています。yahoo.co.jpのAレコードを訪ねたので
yahoo.co.jp IN Aと書かれており、合っています。
次にAnswer sectionです。ここには回答が書かれています。
yahoo.co.jp.のIPv4アドレスを聞いていたので、実際にAレコード 182.22.59.229が返答されています。
digコマンドで逆引き(PTRレコード)する
通常DNSではFQDNを指定して参照していきます。特にFQDNからIPアドレスを参照することを正引きといいます。
それとは逆にIPアドレスからFQDNを参照することを逆引きといいます。逆引きのレコードはPTRレコードです。
digコマンドではオプション -xを指定して参照します。
dig -x 183.79.250.123
必要最低限の情報だけみたい オプションを活用
dig コマンドで引くとたくさんの内容が出てきて若干見づらいです。
そんなときはオプションを使って必要な部分だけ表示するようにしましょう
dig +short yahoo.co.jpというように+shortを使用すると値の部分だけ表示できます。
# dig +short yahoo.co.jp
182.22.16.251
183.79.250.123
183.79.219.252
182.22.25.252
183.79.250.251
183.79.217.124
# dig +short yahoo.co.jp txt
"v=spf1 include:spf.yahoo.co.jp ~all"
"google-site-verification=GvbYgNin-mY73VbS4IJK2D8nI3tHEf2NpRdy76VYqBU"
値だけではなくレコードの他の情報もほしいという場合は+noall +answerを利用しましょう
# dig +noall +answer yahoo.co.jp
yahoo.co.jp. 300 IN A 182.22.25.252
yahoo.co.jp. 300 IN A 182.22.16.251
yahoo.co.jp. 300 IN A 183.79.217.124
yahoo.co.jp. 300 IN A 183.79.219.252
yahoo.co.jp. 300 IN A 183.79.250.123
yahoo.co.jp. 300 IN A 183.79.250.251
全レコード取得したいとき any
Aレコードやtxtレコードなど、いちいち指定するのが面倒だというときはanyを使いましょう。
anyを指定するとAレコード以外のSOA,NS,TXT,MXなど他のレコード情報も取得できます。
# dig +noall +answer yahoo.co.jp any
yahoo.co.jp. 900 IN SOA yahoo.co.jp. postmaster.yahoo.co.jp. 2202090009 1800 900 86400 900
yahoo.co.jp. 900 IN CAA 0 issue "digicert.com;cansignhttpexchanges=yes"
yahoo.co.jp. 900 IN CAA 0 iodef "mailto:nic-admin@mail.yahoo.co.jp"
yahoo.co.jp. 900 IN CAA 0 issue "cybertrust.ne.jp"
yahoo.co.jp. 900 IN CAA 0 issue "globalsign.com"
yahoo.co.jp. 900 IN MX 10 mx5.mail.yahoo.co.jp.
yahoo.co.jp. 900 IN MX 10 mx2.mail.yahoo.co.jp.
yahoo.co.jp. 900 IN MX 10 mx3.mail.yahoo.co.jp.
yahoo.co.jp. 900 IN MX 10 mx1.mail.yahoo.co.jp.
yahoo.co.jp. 900 IN TXT "google-site-verification=GvbYgNin-mY73VbS4IJK2D8nI3tHEf2NpRdy76VYqBU"
yahoo.co.jp. 900 IN TXT "v=spf1 include:spf.yahoo.co.jp ~all"
yahoo.co.jp. 900 IN NS ns12.yahoo.co.jp.
yahoo.co.jp. 900 IN NS ns11.yahoo.co.jp.
yahoo.co.jp. 900 IN NS ns01.yahoo.co.jp.
yahoo.co.jp. 900 IN NS ns02.yahoo.co.jp.
yahoo.co.jp. 300 IN A 182.22.16.251
yahoo.co.jp. 300 IN A 183.79.219.252
yahoo.co.jp. 300 IN A 183.79.250.123
yahoo.co.jp. 300 IN A 182.22.25.252
yahoo.co.jp. 300 IN A 183.79.250.251
yahoo.co.jp. 300 IN A 183.79.217.124