連載
» 2011年12月19日 00時00分 公開

これから始めるIPv6(4):主要なサーバアプリの設定例 (1/2)

IPv4アドレス在庫の枯渇やWorld IPv6 Dayの実施に伴い、「そういえば昔IPv6について読んだけれど、いまはどうなっているんだろう?」と感じている人も多いのではないでしょうか。最新状況を踏まえたIPv6の「基礎」を改めて紹介します。(編集部)

[許先明,株式会社ラック]

拍子抜け? 主要なアプリはすでに対応

 前回は、サーバOSそのものをIPv6に対応させる設定について説明しました。続いて今回は、BIND9、ntpd、postfix、Dovecot、Apache2を例に取り、主要なサーバアプリケーションをIPv6対応とする手順について取り上げます。

 サーバアプリケーションをIPv6対応にするには、それぞれのサーバアプリケーションでIPv6に対応するための設定を行う必要があります。ただし現実には、サーバアプリケーションの多くはすでにIPv6に対応しており、設定も非常に簡単になっています。そのため拍子抜けするかもしれませんが、本稿を参考にいろいろ試してみてください。

 なお繰り返しになりますが、本稿で扱う各種設定は、あくまでもサーバをIPv6に対応させるためだけのものであって、セキュリティ設定などに関しては取り扱いません。また実際にサービスを行う場合、ネットワーク関連の設定以外にもさまざまな設定が必要になりますが、そのあたりの設定に関しては、IPv4環境でのサーバ構築手順と同様です。本稿では、この部分は取り上げません。

 また前回同様、本稿で利用しているIPv4/IPv6アドレスは文書化用に割り当てられているものを利用し、図1に示したネットワークを前提にサーバをIPv6化することにします。

図1 設定例のネットワーク図 図1 設定例のネットワーク図

2つの作業でBIND 9をIPv6対応に

 DNSはインターネットにおいて最も重要なデータベースです。DNSがホスト名とアドレスの対応付けを正しく解決してくれないと、URLを用いたWebアクセスができなくなるなど、非常に不便になってしまいます。

 そのDNSサービスを提供するサーバアプリケーションのうち、最も広範に利用されているのがBINDでしょう。

 BINDをIPv6に対応させるには、

  • IPv6でのクエリを受け付け、返答する
  • 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]が利用できます。

システム時刻を設定するntpdのIPv6対応

 少なくともサーバシステムにおいては、関連するサーバ間で時刻が同期していることが望ましい状態です。そのために利用されるのが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アドレスの場合にはすべてを表示することができず、末尾が切れてしまうので、注意してください。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

@ITのメールマガジン(無料)

✔ 【@IT通信】
  編集部のおすすめ記事、限定コラムをお届け
✔ 【@IT新着速報】
  新着記事・速報をまとめてお届け
✔ 【@IT自分戦略研究所Weekly】
  転職支援情報やキャリアアップ情報をお届け

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。