IPv6 DNSサーバ構築
第1章 IPv6の世界におけるDNSの役割
まだまだ移行段階ではありますが、徐々にIPv6環境への対応を意識せざるを得ない世の中になってきました。
IPv4は32bitの2進数を10進数で表現しているのでIPアドレスを暗記することも容易でした。
しかしながらIPv6は128bitを16進数で表現しているため、IPアドレスを暗記するのが非常に困難です。
よって、IPv6の普及においてはDNSが非常に重要な役割を果たしています。
IPv6 DNSの細かい動作仕様などは他のサイトやRFC3364などを見てもらうことにして、
ここでは最低限構築できるまでを説明したいと思います。
第2章 テスト環境説明
- CentOS 5.4
- bind-chroot-9.3.6-4.P1.el5
- DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5
- DNSサーバはIPv4環境のみ。
- DNSサーバ名 farron 192.168.1.244
- 所属するネットワークプレフィックス 2009:12::/64
- 設定ファイルの場所 /var/named/chroot
ホスト IPv4アドレス IPv6アドレス vanille.hoster.jp 192.168.1.100 2009:12::00ab:1234 lightning.hoster.jp 192.168.1.200 2009:12::00ab:5678 hope.hoster.jp 2009:12::00ab:9abc
第3章 BIND基本設定
細かいパラメータ設定は色々とありますが、ここでは最低限編集するポイントだけ紹介します。
編集ファイル:「/var/named/chroot/etc/named.caching-nameserver.conf」
編集前
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
編集後
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
第4章 正引き設定
編集ファイル:「/var/named/chroot/etc/named.rfc1912.zones」
追加行
zone "hoster.jp" IN {
type master;
file "hoster.zone";
allow-update { none;};
};
「/var/named/chroot/var/named/named.ca」や「localhost.zone」
には既にIPv6用の設定が記載されていますので特に編集の必要はありません。
新規ファイル:「/var/named/chroot/var/named/hoster.zone」
$TTL 86400 @ IN SOA farron.hoster.jp. root.hoster.jp. ( 2009122101 ;serial 3600 ;refresh 1H 900 ;retry 15M 604800 ;expire 1W 86400 ;24H ) IN NS farron.hoster.jp. vanille IN A 192.168.1.100 lightning IN A 192.168.1.200 vanille IN AAAA 2009:12::00ab:1234 lightning IN AAAA 2009:12::00ab:5678 hope IN AAAA 2009:12::00ab:9abc
第5章 逆引き設定
編集ファイル:「/var/named/chroot/etc/named.rfc1912.zones」
追加行
zone "0.0.0.0.0.0.0.0.2.1.0.0.9.0.0.2.ip6.arpa" IN {
type master;
file "2009:12::.rev";
allow-update { none;};
};
作成ファイル:「/var/named/chroot/var/named/2009:12::.rev」
$TTL 86400 @ IN SOA farron.hoster.jp. root.hoster.jp.( 2009122101 ;serial 3600 ;refresh 1H 900 ;retry 15M 604800 ;expire 1W 86400 ;24H ) IN NS farron.hoster.jp 4.3.2.1.b.a.0.0.0.0.0.0.0.0.0.0 IN PTR vanille.hoster.jp. 8.7.6.5.b.a.0.0.0.0.0.0.0.0.0.0 IN PTR lightning.hoster.jp. c.b.a.9.b.a.0.0.0.0.0.0.0.0.0.0 IN PTR hope.hoster.jp.
第6章 BINDの起動
今更ではありますが、OS稼働時にはnamedは上がっていないため、
手動で起動させる必要があります。
OS起動時に自動的にnamedが上がってくるように設定したいときと、
今手動で上げたい場合をそれぞれ記載します。
OS起動時に自動的にnamedが起動する設定
[root@farron etc]# chkconfig --list |grep named named 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@farron etc]# [root@farron etc]# chkconfig --level 3 named on [root@farron etc]# chkconfig --list |grep named named 0:off 1:off 2:off 3:on 4:off 5:off 6:off [root@farron etc]#
再起動せずにnamedを起動させる
[root@farron etc]# /etc/rc2.d/K87named start Starting named: [ OK ] [root@farron etc]#
第7章 正引きの動作確認
まずは普通に名前を引いてみましょう。
# dig vanille.hoster.jp ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> vanille.hoster.jp ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64213 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;vanille.hoster.jp. IN A ;; ANSWER SECTION: vanille.hoster.jp. 86400 IN A 192.168.1.100 ;; AUTHORITY SECTION: hoster.jp. 86400 IN NS farron.hoster.jp. ;; Query time: 2 msec ;; SERVER: 192.168.1.244#53(192.168.1.244) ;; WHEN: Thu Dec 24 09:42:35 2009 ;; MSG SIZE rcvd: 74
返ってくるのはIPv4のアドレスです。
IPv6のアドレスを引くためにAAAAレコードであることを指定します。
# dig vanille.hoster.jp AAAA ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> vanille.hoster.jp AAAA ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21021 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;vanille.hoster.jp. IN AAAA ;; ANSWER SECTION: vanille.hoster.jp. 86400 IN AAAA 2009:12::ab:1234 ;; AUTHORITY SECTION: hoster.jp. 86400 IN NS farron.hoster.jp. ;; Query time: 3 msec ;; SERVER: 192.168.1.244#53(192.168.1.244) ;; WHEN: Thu Dec 24 09:42:48 2009 ;; MSG SIZE rcvd: 86
IPv6のアドレスが返ってきました。
第8章 逆引きの動作確認
逆引きしてみます。
# dig -x 2009:12::ab:1234 ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> -x 2009:12::ab:1234 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46466 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;4.3.2.1.b.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.0.0.9.0.0.2.ip6.arpa. IN PTR ;; ANSWER SECTION: 4.3.2.1.b.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.0.0.9.0.0.2.ip6.arpa. 86400 IN PTR vanille.hoster.jp. ;; AUTHORITY SECTION: 0.0.0.0.0.0.0.0.2.1.0.0.9.0.0.2.ip6.arpa. 86400 IN NS farron.hoster.jp.0.0.0.0.0.0.0.0.2.1.0.0.9.0.0.2.ip6.arpa. ;; Query time: 2 msec ;; SERVER: 192.168.1.244#53(192.168.1.244) ;; WHEN: Thu Dec 24 09:43:17 2009 ;; MSG SIZE rcvd: 154
逆引きも正常に動作しています。
第9章 -xオプションについて
逆引きの際に-xオプションをつけないと名前解決ができませんので注意してください。
# dig 2009:12::ab:1234 <pre> ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> 2009:12::ab:1234 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 63380 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;2009:12::ab:1234. IN A ;; AUTHORITY SECTION: . 10800 IN SOA A.ROOT-SERVERS.NET. NSTLD.VERISIGN-GRS.COM. 2009122401 1800 900 604800 86400 ;; Query time: 6 msec ;; SERVER: 192.168.1.244#53(192.168.1.244) ;; WHEN: Fri Dec 25 00:59:46 2009 ;; MSG SIZE rcvd: 109
第10章 nslookupでの動作確認
nsloolupでも名前解決はできます。
慣れている人はこちらで動作確認をするとよいでしょう。
[root@farron named]# nslookup > vanille.hoster.jp Server: 192.168.1.244 Address: 192.168.1.244#53 Name: vanille.hoster.jp Address: 192.168.1.100 > set type=AAAA > vanille Server: 192.168.1.244 Address: 192.168.1.244#53 ** server can't find vanille: NXDOMAIN > vanille.hoster.jp Server: 192.168.1.244 Address: 192.168.1.244#53 vanille.hoster.jp has AAAA address 2009:12::ab:1234 > > 2009:12::ab:1234 Server: 192.168.1.244 Address: 192.168.1.244#53 4.3.2.1.b.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.0.0.9.0.0.2.ip6.arpa name = vanille.hoster.jp. >
第11章 ip6.intにおける名前解決
過去の経緯からip6.intで構築されていることも考えられます。digにおいてもオプションが変わってきますので注意してください。
説明用に下記のファイルを作成します。
編集ファイル:「/var/named/chroot/etc/named.rfc1912.zones」
追加行
zone "0.0.0.0.0.0.0.0.2.1.0.0.0.1.0.2.ip6.int" IN {
type master;
file "2010:12::.rev";
allow-update { none;};
};
新規ファイル:「/var/named/chroot/var/named/2010:12::.rev」
$TTL 86400 @ IN SOA farron.hoster.jp. root.hoster.jp.( 2009122201 ;Serial 7200 ; 1800 ; 1209600 ; 86400 ; ) IN NS farron.hoster.jp 4.3.2.1.b.a.0.0.0.0.0.0.0.0.0.0 IN PTR garnet.hoster.jp.
逆引きを行う際に、-iオプションを使用して動作確認を行います。
#dig -i -x 2010:12::ab:1234 ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> -i -x 2010:12::ab:1234 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20625 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;4.3.2.1.b.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.0.0.0.1.0.2.ip6.int. IN PTR ;; ANSWER SECTION: 4.3.2.1.b.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.0.0.0.1.0.2.ip6.int. 86400 IN PTR garnet.hoster.jp. ;; AUTHORITY SECTION: 0.0.0.0.0.0.0.0.2.1.0.0.0.1.0.2.ip6.int. 86400 IN NS farron.hoster.jp.0.0.0.0.0.0.0.0.2.1.0.0.0.1.0.2.ip6.int. ;; Query time: 2 msec ;; SERVER: 192.168.1.244#53(192.168.1.244) ;; WHEN: Fri Dec 25 01:04:21 2009 ;; MSG SIZE rcvd: 152
第12章 Nibble FormatとBitstring Format
アドレス表記には2種類あります。
現在においてはIPv6アドレスの表記にはNibble Formatを使用することが
推奨されているため、Bitstring Formatを使用することはほぼありません。
しかし、BIND9.2x以前のdigではip6.arpaゾーンを引くために
Bitstring Formatが必要だったこともあり、現在でもBitstring Formatを
見かけることはあります。
せっかくでので両方を簡単に説明したいと思います。
IPv6アドレス
2009:12::00ab:1234
Bitstring Format表記
\[x2009:1200:0000:0000:0000:0000:00AB:1234/128]
Nibble Format表記
4.3.2.1.b.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.9.0.0.2
厳密にはip6.arpaやip6.intなど色々出てきますが、
大分前に.intも現在は既に廃止となっており、.arpaへ移行が決定しています。
よって、現在は「Nibble Formatでかつip6.arpa」がスタンダード表記となっています。
4.3.2.1.b.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.9.0.0.2.ip6.arpa.
第13章 DNSでのアドレス表記方法
設定ファイルに正引きにのレコードを記載す際には通常のフォーマットですが、
逆引きレコード記載する際には、Nibble Formatを用います。
通常の表記からNibble Formatへの変換方法を説明します。
IPv6アドレス
2009:12::00ab:1234
1.省略している「0」を付与します。
2009:0012:0000:0000:0000:0000:00ab:1234
2.「:」を削除し、一文字毎に「.」を挿入します。
2.0.0.9.0.0.1.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.b.1.2.3.4
3.「順序を反転させ、最後に「.ip6.arpa」を連結します。
4.3.2.1.b.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.1.9.0.0.2.arpa
いかがでしたか?久々にlinuxを触りましたが1時間程度で構築自体はできたので年末の暇つぶしとして試しにやってみてはいかがでしょうか。

