Home > Tech > IPv6 DNSサーバ構築

IPv6 DNSサーバ構築

December 28th, 2009 ayumi Leave a comment Go to comments

第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時間程度で構築自体はできたので年末の暇つぶしとして試しにやってみてはいかがでしょうか。

  1. No comments yet.
  1. No trackbacks yet.
Theme by NeoEase. Valid XHTML 1.1 and CSS 3.