梅本肇 / ume@mahoroba.org
あなたの組織のネットワークをIPv6対応にしよう。本稿では、IPv6に対応した組織内のネットワークを作る方法を解説する。
図1 ルータによる接続 ![]()
この方法も、IPv4ネットワークに影響を与えないものの、やはり物理的に既存ネットワークに変更を加えることになるので、選択できないかもしれない。 第3の方法は、IPv6 over IPv4トンネルを使う方法である(図2)。この場合、既存ネットワークにはまったく変更を加える必要がない。
リスト1 ルータとして設定時の/etc/rc.confの例 ipv6_enable="YES" ipv6_network_interfaces="fxp0 fxp1" ipv6_prefix_fxp0="3ffe:505:2:1000" ipv6_prefix_fxp1="3ffe:505:2:1001" ipv6_gateway_enable="YES" ipv6_router_enable="YES"
トンネルを使用する場合host-aの設定はリスト2のようになる。また、host-bの設定はリスト3のようになる。
図2 トンネルによる接続 ![]()
リスト2 トンネル接続時の/etc/rc.confの例(host-a) ipv6_enable="YES" ipv6_network_interfaces="fxp0" ipv6_prefix_fxp0="3ffe:505:2:1000" ipv6_gateway_enable="YES" ipv6_router_enable="YES" gif_interfaces="gif0" gifconfig_gif0="192.168.0.1 192.168.1.1"
やはり、ネイティブにIPv6を流したいところだが、もしあなたの組織が寛容でない場合、あなたの組織でIPv6が市民権を得るまではこの方法でじっと我慢しよう。
リスト3 トンネル接続時の/etc/rc.confの例(host-b) ipv6_enable="YES" ipv6_network_interfaces="fxp0" ipv6_prefix_fxp0="3ffe:505:2:1001" ipv6_gateway_enable="YES" ipv6_router_enable="YES" gif_interfaces="gif0" gifconfig_gif0="192.168.1.1 192.168.0.1"
-A 3ffe:505:2::/48,gif0となる。
-O 3ffe:505:2::/48,gif0となる。
ipv6_router_enable="YES"と指定すると、デフォルトでroute6dが起動されるようになっている。オプションを指定したい場合はipv6_router_flagsに指定する。
ipv6_enable="YES"とするだけで良い。
の2つがある。IPv4でのAレコードに相当するのがAAAAレコードである。 BIND8では1.は満たしているが2.はサポートされていない。2.はBIND9でサポートされている*02)。
- AAAAレコードを扱える
- IPv6でクエリできる
options {
listen-on-v6 { any; };
};
と書くことでIPv6でのクエリを受け付けるようになる。すなわち、各ホストで/etc/resolv.confでのnameserver行にIPv6アドレスを書くことができるようになる。3ffe:505:2:1000:240:96ff:fe48:4ea8というIPv6アドレスを持つhost-aを登録するには、リスト4のようになる。
逆引きは、IPv6アドレスを4ビット毎に区切り、16進表記で逆順に並べる。またIPv4の場合に使用するIN-ADDR.ARPA.は、IPv6ではIP6.INT.となる。たとえば上記のhost-aだとリスト5のようになる。
リスト4 host-a IN AAAA 3ffe:505:2:1000:240:96ff:fe48:4ea8
実際に逆引きのゾーンファイルを登録するには、自サイトに割り当てられているIPv6アドレスを管理するゾーンファイルを用意する。ここでは、3ffe:505:2::/48のゾーンをdb.3ffe:505:2というファイル名で作成することにする。ゾーンファイルには、リスト6のように、逆引きの記述から2.0.0.0.5.0.5.0.e.f.f.3.IP6.INT.を除いた部分を書く。あと、もちろんSOAレコードなども書いておいておくのをお忘れなく。
リスト5 8.a.e.4.8.4.e.f.f.f.6.9.0.4.2.0.0.0.0.1.2.0.0.0.5.0.5.0.e.f.f.3.IP6.INT.
では3ffe:505:2::/48のゾーンを有効にしよう。named.confに、リスト7のように指定する。
リスト6 8.a.e.4.8.4.e.f.f.f.6.9.0.4.2.0.0.0.0.1 IN PTR host-a.example.com.
*BSDに標準的に付いてくるnslookupやdigはIPv6によるクエリはサポートしていない。そのため、/etc/resolv.confのnameserver行にIPv6アドレスを指定しても無視されてしまう。IPv6でクエリができていないと勘違いしないでほしい。BIND9付属のnslookupやdigはIPv6によるクエリをサポートしているので、そちらで試していただきたい(図3)。また、libcのリゾルバを使用している通常のアプリケーションはIPv6でクエリを行えるはずである。
リスト7 zone "2.0.0.0.5.0.5.0.e.f.f.3.IP6.INT" { type master; file "db.3ffe:505:2"; };
なお、*BSDのリゾルバはIPv6でクエリを行えるようになっているので、*BSDのみのネットワークならIPv6だけでも生活できる。しかし、現状ではWindows 2000のリゾルバはIPv6によるクエリをサポートしていない。組織内にWindows 2000がいる場合はIPv6のみのネットワークを構築できないので注意願いたい。
図3 BIND9版nslookupによる出力例 ume@piano:353> /usr/local/bin/nslookup -sil -type=any www.imasy.or.jp. Server: 2001:200:300:1:220:edff:fe88:788c Address: 2001:200:300:1:220:edff:fe88:788c#53 Non-authoritative answer: www.imasy.or.jp has AAAA address 3ffe:505:0:1:220:edff:fe88:788c www.imasy.or.jp has AAAA address 2001:200:300:1:220:edff:fe88:788c Name: www.imasy.or.jp Address: 202.227.24.5 Authoritative answers can be found from: imasy.or.jp nameserver = tasogare.imasy.or.jp. imasy.or.jp nameserver = light.imasy.or.jp. light.imasy.or.jp internet address = 202.227.24.4 light.imasy.or.jp has AAAA address 2001:200:300:1:2a0:c9ff:fe61:6521 light.imasy.or.jp has AAAA address 3ffe:505:0:1:2a0:c9ff:fe61:6521 tasogare.imasy.or.jp internet address = 202.227.24.5
tcpdump -i wi0 -s 256 -Xという感じで実行する。 また、EtherealというGUIベースのアナライザがある(図4)。
Etherealの使い方はいたって簡単である。メニューからCapture→StartをクリックするとCapture Preferencesダイアログが現れる。OKをクリックするとキャプチャが開始さ れる(図5)。Stopをクリックするとキャプチャを終了しキャプチャ結果が表示される(図6)。
図4 Ethereal ![]()
図5 Preferencesダイアログ ![]()
図6 Captureダイアログ ![]()
特定のパケットをフィルタしたりできるのでいろいろ試してみてほしい。
おわりに
組織のネットワークをIPv6対応する際に必要となる経路制御やDNSの設定について簡単に紹介した。本稿がIPv6導入の手がかりになれば幸いである。
*01) http://www.zebra.org/ *02) KAMEがBIND8用のパッチを提供している。
All Rights Reserved, Copyright (C) 2001 Hajimu UMEMOTO
Last Modified Nov 12, 2001
ume@mahoroba.org