IPv4アドレス在庫の枯渇やWorld IPv6 Dayの実施に伴い、「そういえば昔IPv6について読んだけれど、いまはどうなっているんだろう?」と感じている人も多いのではないでしょうか。最新状況を踏まえたIPv6の「基礎」を改めて紹介します。(編集部)
前回は、サーバOSそのものをIPv6に対応させる設定について説明しました。続いて今回は、BIND9、ntpd、postfix、Dovecot、Apache2を例に取り、主要なサーバアプリケーションをIPv6対応とする手順について取り上げます。
サーバアプリケーションをIPv6対応にするには、それぞれのサーバアプリケーションでIPv6に対応するための設定を行う必要があります。ただし現実には、サーバアプリケーションの多くはすでにIPv6に対応しており、設定も非常に簡単になっています。そのため拍子抜けするかもしれませんが、本稿を参考にいろいろ試してみてください。
なお繰り返しになりますが、本稿で扱う各種設定は、あくまでもサーバをIPv6に対応させるためだけのものであって、セキュリティ設定などに関しては取り扱いません。また実際にサービスを行う場合、ネットワーク関連の設定以外にもさまざまな設定が必要になりますが、そのあたりの設定に関しては、IPv4環境でのサーバ構築手順と同様です。本稿では、この部分は取り上げません。
また前回同様、本稿で利用しているIPv4/IPv6アドレスは文書化用に割り当てられているものを利用し、図1に示したネットワークを前提にサーバをIPv6化することにします。
DNSはインターネットにおいて最も重要なデータベースです。DNSがホスト名とアドレスの対応付けを正しく解決してくれないと、URLを用いたWebアクセスができなくなるなど、非常に不便になってしまいます。
そのDNSサービスを提供するサーバアプリケーションのうち、最も広範に利用されているのがBINDでしょう。
BINDをIPv6に対応させるには、
ようにするため、2つの作業が必要になります。
まず、BINDでIPv6でのクエリを受け付け、返答できるように設定を変更します。そのためには、listen-on-v6の設定をnamed.confに記載し、必要なゾーンの定義を記載します。
・named.confの例
options { listen-on-v6{ # IPv6でのクエリの取り扱いを決める any; # どこからのIPv6クエリでも受け取る } }; zone "localhost" { type master; file "local.zone"; }; zone "example.jp" { type master; file "example.jp.zone"; }; zone "0.0.127.in-addr.arpa" { # 127.0.0.0/24のゾーン設定 type master; file "192.0.2.zone"; }; zone "2.0.192.in-addr.arpa" { # 192.0.2.0/24のゾーン設定 type master; file "192.0.2.zone"; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" { # ::/64のゾーン設定 type master; file "::.64.zone"; }; zone "0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.int" { # 2001:0db8::/64のゾーン設定 type master; file "2001:0db8:0000:0000::.zone"; };
もし、IPv6でクエリを受け取るアドレスを制限したい場合、
listen-on-v6 { 2001:db8::80:1; ::1; };
などと設定します。このように設定すると、BINDが動作しているホストの2001:db8::80:1か::1に対して来たクエリにのみ返答をするようになります。
次に、IPv6アドレスなどの情報を登録したゾーンファイルを作成します。
正引きのゾーンファイルの例を以下に示します。
・example.jp.zoneの内容
$TTL 3600 @ IN SOA ns.example.jp. root.ns.example.jp. ( 1 ; Serial 3600 ; Refresh(1h) 900 ; Retry (900s) 864000 ; Expire (10d) 3600 ) ; Minimum(1h) IN NS ns.example.jp. IN MX 10 mail.example.jp. localhost IN A 127.0.0.1 IN AAAA ::1 ns IN A 192.0.2.3 IN AAAA 2001:db8::53:1 mail IN A 192.0.2.4 IN AAAA 2001:db8::25:1 pop IN A 192.0.2.4 IN AAAA 2001:db8::110:1 imap IN A 192.0.2.4 IN AAAA 2001:db8::143:1 www IN A 192.0.2.2 IN AAAA 2001:db8::80:1
ゾーンファイルの書き方は、IPv4のときと変わりません。ただし、IPv6アドレスを示すリソースレコードはAAAAとなるので、IPv6アドレスを記載する場合には「IN AAAA」などと記載してください。
次は逆引きです。逆引きのゾーンファイルの書き方も、IPv4の場合と基本は変わりません。
・2001:0db8:0000:0000::.zoneの内容
$TTL 3600 @ IN SOA ns.example.jp. root.ns.example.jp. ( 1 ; Serial 3600 ; Refresh(1h) 900 ; Retry (900s) 864000 ; Expire (10d) 3600 ) ; Minimum(1h) IN NS ns.example.jp. 1.0.0.0.5.2.0.0.0.0.0.0.0.0.0.0 IN PTR mail.example.jp # ::25:1 1.0.0.0.3.5.0.0.0.0.0.0.0.0.0.0 IN PTR ns.example.jp # ::53:1 1.0.0.0.0.8.0.0.0.0.0.0.0.0.0.0 IN PTR www.example.jp # ::80:1 1.0.0.0.0.1.1.0.0.0.0.0.0.0.0.0 IN PTR imap.example.jp # ::110:1 1.0.0.0.3.4.1.0.0.0.0.0.0.0.0.0 IN PTR imap.example.jp # ::143:1
IPv6における逆引きの登録は、表記が見にくいため注意が必要です。登録し終わったら、namedに読み込ませてください。
正引き、逆引きの確認には、digコマンドを利用しましょう。正引きの確認にはdig [hostname] AAAAが、逆引きの確認にはdig -x [IPv6 Address]が利用できます。
少なくともサーバシステムにおいては、関連するサーバ間で時刻が同期していることが望ましい状態です。そのために利用されるのがNTP(Network Time Protocol)であり、このNTPを利用してシステムの時刻を設定するのがntpdです。
ntpdはすでにIPv6に対応しているため、設定ファイル(/etc/ntp.conf)のserver欄にIPv6アドレスを記載すれば、IPv6でntpを利用できるようになります。
・ntp.confの例
server 2001:2f8:29:100::fff3 # NICT server 2001:2f8:29:100::fff4 # NICT
あとはntpdを再起動し、IPv6で同期していることを確認してください。
[Web:/]$ /usr/local/ntp/bin/ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== +ntp-a2.nict.go. .NICT. 1 u 201 1024 377 11.038 1.581 1.708 *ntp-a3.nict.go. .NICT. 1 u 127 1024 377 10.809 3.709 2.122
これでNTP ServerはIPv6に対応しました。
ただし注意点が1つあります。ntpqの実装上、ntpqで表示されるremoteの行の桁数は決まっています。IPv4ではこの桁数内でIPアドレスを正しく表示できるのですが、IPv6アドレスの場合にはすべてを表示することができず、末尾が切れてしまうので、注意してください。
Copyright © ITmedia, Inc. All Rights Reserved.