DNS逆引きの基本について
逆引き設定するということをやろうとしたが、逆引き(DNS)について知らなすぎるので調べてみました。
目次
体系的な知識・技術を身につけるための学習法について - Kentaro Kuribayashi's blog
にならって、目次形式で調べてみようと思います。
1. 基本
2. in-addr.arpa ドメインって何?
「in-addr.arpa ドメインを使って」と書いてありますが、in-addr.arpa ドメインとはなんでしょう。
http://itpro.nikkeibp.co.jp/word/page/10009069/
DNS(domain name system)上で逆引きを実現する仕組み。
<略>
ホスト名-IPアドレス変換の仕組みと同様に,IPアドレスに名前を付けたものがin-addr.arpaアドレスである。例えば192.168.0.1は1.0.168.192.in-addr.arpaと表記する。
なるほど、逆引きを実現する仕組みがin-addr.arpa ドメインなのですね。
正引きの場合は、以下のようにまず「ルートネームサーバ」へ問い合わせて、どんどん問い合わせていき IPアドレスをしっているサーバにたどり着きます。
逆引きの場合は以下のようになります。
図参照( http://www.atmarkit.co.jp/flinux/rensai/bind02/bind02.html )
3. 逆引きしてみよう
どうやって逆引きされるかはわかりましたので、逆引きしてみましょう。DNSサーバを自分で立ち上げて実験してみました。
dig コマンドを利用します。 -x というオプションを利用すれば逆引きできます。
# dig @localhost -x 10.20.138.22 ; <<>> DiG 9.3.4-P1 <<>> @localhost -x 10.20.138.22 ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42006 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;22.138.20.10.in-addr.arpa. IN PTR ;; ANSWER SECTION: 22.138.20.10.in-addr.arpa. 86400 IN PTR hogehoge.fugafuga.com. ;; AUTHORITY SECTION: 22.138.20.10.in-addr.arpa. 86400 IN NS 10.20.138.22.22.138.20.10.in-addr.arpa. ;; Query time: 4 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Jun 2 21:22:09 2009 ;; MSG SIZE rcvd: 105
hogehoge.fugafuga.com というドメインが帰ってきました。
こんどは、どのように逆引き設定されているのか見てみましょう。
ちなみに、正引きすると以下のようになります。
# dig @localhost hogehoge.fugafuga.com ; <<>> DiG 9.3.4-P1 <<>> @localhost hogehoge.fugafuga.com ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10957 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;hogehoge.fugafuga.com. IN A ;; ANSWER SECTION: hogehoge.fugafuga.com. 86400 IN A 10.20.138.22 ;; AUTHORITY SECTION: hogehoge.fugafuga.com. 86400 IN NS ns.fukushige.localhost.com. ;; ADDITIONAL SECTION: ns.fukushige.localhost.com. 86400 IN A 10.20.138.21 ;; Query time: 215 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Jun 2 19:33:44 2009 ;; MSG SIZE rcvd: 108
4. 逆引き設定(ゾーンファイルの編集を行って正引き・逆引きが行えるようにする)
まず、named.conf は以下のようになっています。
/var/named/chroot/etc/named.conf
controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; include "/etc/rndc.key"; options { directory "/var/named/"; }; zone "ns.fukushige.localhost.com" { type master; file "ns.fukushige.localhost.com.zone"; }; zone "hogehoge.fugafuga.com" { type master; file "hogehoge.fugafuga.com.zone"; }; zone "22.138.20.10.in-addr.arpa" IN { type master; file "22.138.20.10.in-addr.arpa.zone"; allow-update { none; }; };
zoneファイルは以下のようになっています。
/var/named/chroot/var/named/ns.fukushige.localhost.com.zone
$TTL 86400 @ IN SOA ns.fukushige.localhost.com. root.ns.fukushige.localhost.com. ( 2009060201 ; Serial 10800 ; Refresh after 1 hour 3600 ; Retry after 5 minutes 604800 ; Expire after 1 week 86400) ; Minimum TTL of 4 hour IN A 10.20.138.21 IN NS ns.fukushige.localhost.com.
/var/named/chroot/var/named/22.138.20.10.in-addr.arpa.zone
$TTL 86400 @ IN SOA hogehoge.fugafuga.com. root.hogehoge.fugafuga.com. ( 2009060202 ; Serial 10800 ; Refresh after 1 hour 3600 ; Retry after 5 minutes 604800 ; Expire after 1 week 86400) ; Minimum TTL of 4 hour IN NS 10.20.138.22 IN PTR hogehoge.fugafuga.com.
/var/named/chroot/var/named/hogehoge.fugafuga.com.zone
$TTL 86400 @ IN SOA hogehoge.fugafuga.com. root.hogehoge.fugafuga.com. ( 2009060202 ; Serial 10800 ; Refresh after 1 hour 3600 ; Retry after 5 minutes 604800 ; Expire after 1 week 86400) ; Minimum TTL of 4 hour IN A 10.20.138.22 IN MX 10 hogehoge.fugafuga.com. IN NS ns.fukushige.localhost.com.
2. 応用
1. 逆引き設定はするべき?設定しないと何か不便なの?メールでSPAM扱いされる?
個人的な見解では「しておいて損はない」というところでしょうか。
最近でも、逆引きできないIPからのアクセスに対するメールはスパム扱いされたりして、メールが届かないプロバイダなどがあるようです。
http://neta.ywcafe.net/000395.html
にも書いてありますが、逆引きできない状態(レンタルサーバでIP共有しているなど)もありますので、メールのフィルターも考えないと、
大切なメールが届かないなんてことにもなりそうですよね。
2. 逆引きの信頼性について
逆引き - Wikipedia
にも書いてありますが、
# 逆引きを設定していないIPアドレスも存在する。
# 逆引きで返ってくる結果は所詮は自称にすぎないので、信頼性をそれなりにでも確保するためには、得られた結果をもう一度正引きして、元のIPアドレスと合致するか確かめる必要があるだろう。
* つまりドメイン名を正引きして得たIPアドレスに対して、逆引きして得たドメイン名は一致しないこともある。
# ISP等によっては、クライアントホストのIPアドレスの逆引きに、アクセスポイント名が含まれるドメイン名を設定しているところもある。
つまり、正引きデータをもとに、逆引きが帰ってきているわけではないので、そもそも信頼性は低い。
逆引きで正しくないドメインが帰ってきたとしても、正引きのドメインが怪しいかどうかも不明。
そもそも逆引きを設定していないIPも存在するわけで、逆引きの意味はなんなのかと思うが、メールフィルターで逆引きしていないとメールをSPAM扱いするというメールサーバ向けの設定みたいな位置になっているような気がする・・・。
3. 付録
環境
# cat /etc/redhat-release CentOS release 5 (Final) [root@DNS_Server named]# rpm -qa | grep bind bind-utils-9.3.4-10.P1.el5 bind-libs-9.3.4-10.P1.el5 ypbind-1.19-8.el5 bind-chroot-9.3.4-10.P1.el5 bind-9.3.4-10.P1.el5 # rpm -qa | grep nameserver caching-nameserver-9.3.4-10.P1.el5
参考
逆引き(リバースルックアップ)とは - IT用語辞典
@IT:DNS Tips:逆引きが使われるのはどんな時か
@IT:DNS Tips:1つのIPアドレスに複数のホスト名を付けている場合の逆引きとは
MTA のアクセス制御
http://neta.ywcafe.net/000447.html
http://neta.ywcafe.net/000649.html
http://neta.ywcafe.net/000651.html
���t�����]�[���t�@�C���̍쐬�����S�҂̂��߂�Linux�T�[�o�[�\�z�u��(CentOS �����T�[�o�[�Ή�)�����֗��T�[�o�[.com��
DNSの仕組みの基本を理解しよう:DNSの仕組みと運用(1) - @IT
HugeDomains.com - Shop for over 300,000 Premium Domains
dig コマンドを理解する - 基本へ帰ろう