djbdns-1.05 + IPv6 + IP6.ARPA

うちのネームサーバは当然djbdns。でIPv6を引いているから IPv6パッチを当てている。ただし、 fefeさんのパッチ だと*BSDで使えない。氏はLinux使いらしい。

これをベースにして、以下の改良を加えた。

  1. *BSDでもIPv6アドレスでLISTENできるようにした(OpenBSDでは未確認)
  2. tinydns-data で、6エントリ(IPv6のAAAAレコードとPTRレコードの生成) の逆引きレコードとして *.IP6.INT ではなく *.IP6.ARPA を生成する
  3. ↑だが、環境変数 IP6_INT がセットされているときには *.IP6.INT も同時に生成する

ちなみに「*BSDで使える」パッチは fefe 氏に送ったが無視された。 わーい。

以上のパッチをまとめたものを置きま。
djbdns-1.05+fefev6-t19+ip6arpa.tar.gz

以下、使い方。IPv4でのdjbdnsの使い方は知っていると仮定しての 説明。

IPv6ドメイン名の登録

たとえば、IPv6アドレスについて

www.example.com  == 2001:XYZ:VW::1

というIPv6アドレスを登録したい場合。既にIPv4のゾーンはできているだろ うから正引きのSOAレコードとかは説明しない。IP6.INTとIP6.ARPA両方で 逆引きができるようにするため にdataファイルに追加するのは以下のような感じになる。


Zw.v.0.0.z.x.y.0.1.0.0.2.ip6.arpa:ns.example.com:root.example.com::3600:900:1209600:43200:3600
Zw.v.0.0.z.x.y.0.1.0.0.2.ip6.int:ns.example.com:root.example.com::3600:900:1209600:43200:3600
6www.example.com:20010xyz00vw00000000000000000001:86400

もちろん本物のIPv6アドレスなら XYZ VW は16進数の数字1桁だ。 書き終わったら、環境変数IP6_INTをセットして tinydns-data を呼ぶ。

# IP6_INT=hoge tinydns-data

もし、IP6.INTゾーンは要らないなら IP6_INT 変数は不要。

IPv6トランスポートでの利用

まずは、tinydns-conf で、サービスディレクトリを作成。

# tinydns-conf dns dnslog /var/dns/tinydns6 2001:xyz:vw::1

/var/dns/tinydns6/root ができるが普通IPv6トランスポート で配布するレコードもIPv4のものと同じで良いだろう。なので、

# cp /var/dns/tinydns4/root/data.cdb /var/dns/tinydns6/root

てなことをやって、IPv4のものと同じにしちゃおう。このようなコマンドラ インは /var/dns/tinydns4/root/Makefile に 足しちゃうとうっかり忘れが無い。

で、おもむろに

# ln -s /var/dns/tinydns6 /service

でsuperviseが起きてサービスが始まる。名前が引けるかどうか

# host -t aaaa www.example.com 2001:xyz:vw::1
# host -t ptr \
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.4.0.0.3.2.1.0.1.0.0.2.ip6.arpa \
2001:xyz:vw::1

などとして確認。外部のホストからやってみてうまく引けないようなら IPv6用のパケットフィルタで弾いていないか確認しよう。

dnscachednscache-conf の最後の引数に IPv6アドレスを指定すれば簡単にIPv6トランスポートでキャッシュサーバが あがる。 root/ip/ ディレクトリにアクセスを許可する IPv6 address prefix を touch しておこう。


Generated with mkdiary.rb
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]