World IPv6 Dayに参加してみよう
4ステップでWebサーバをIPv6に対応させる方法

株式会社ユビテック
カスタマーサービスタスク サブチーフ
木村 保博
2011/5/19

サーバのIPv6対応

 OS、httpサーバのIPv6に関する設定をします。

 今回取り上げる「CentOS 5.5」や、Webサーバとして標準的に利用されることの多い「Apache 2.2」などはすでにIPv6に対応しており、yumなどのパッケージ管理コマンドを使って簡単にインストールできます。インストール後は、WebサーバごとにIPv6アドレスなどを設定するだけでIPv6対応が可能です。

 今回は、サーバに割り当てるIPv6アドレスなどを以下のように想定し、設定例を示します。

サーバ
eth0インターフェイス用IPv6アドレス/ネットマスク 2001:200:c10:82::88/64
デフォルトゲートウェイ
2001:200:c10:82::94
WebサーバURL
http://www.ubiteq.co.jp


eth0にIPv6アドレスを設定する

 IPv6を有効にするとともに、ネットワークインターフェイスにIPv6アドレスを設定します。

(1)/etc/sysconfig/networkを以下のように追加、変更する

NETWORKING_IPV6=yes
IPV6_DEFAULTDEV=eth0
IPV6_DEFAULTGW= 2001:200:c10:82::94

(2)/etc/sysconfig/network-sccript/ifcfg-eth0に以下を追加する

IPV6INIT=yes
IPV6ADDR=2001:200:c10:82::88/64

(3)ネットワークを再起動する

 (1)、(2)の設定を有効にするため、ネットワークを再起動します。

# /sbin/service network restart
インターフェース eth0 を終了中:                        [ OK ]
ループバックインターフェースを終了中               [ OK ]
ループバックインターフェイスを呼び込み中         [ OK ]
インターフェース eth0 を活性化中:                    [ OK ]

 この再起動によりIPv6アドレスが設定、有効化されます。

(4)確認

 IPv6での通信が可能か、ping6で確認します。

# ping6 www.kame.net
PING www.kame.net(2001:200:dff:fff1:216:3eff:feb1:44d7) 56 data bytes
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=0 ttl=57 time=15.1 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=1 ttl=57 time=14.8 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=2 ttl=57 time=14.9 ms

--- www.kame.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 14.815/15.001/15.194/0.209 ms, pipe 2

ApacheにIPv6を設定する

(1)httpd.confの設定

 Apacheのdefault設定に近い最も単純な設定の場合、Listenがdefault(*:80)の設定でよければ、そのままでIPv6に対応できます。

 しかし、VirtualHostの設定でIPアドレスを特定した仮想ホストの設定を行う場合は、httpd.confのListenにサーバのIPv6アドレスを追加設定します。その際には、IPv6アドレスを以下のように角括弧[ ]でくくらなければならない点に注意してください。

Listen [2001:200:c10:82::88]:80

(2)httpdの再起動

 Apacheの設定を修正した場合は、httpdを再起動します。

# /sbin/service httpd restart

(3)確認

 httpdがIPv6アドレスで立ち上がっていることを確認します。

# netstat -an|grep 80
tcp     0     0       211.14.19.88:80        0.0.0.0:*                 LISTEN
tcp     0     0       2001:200:c10:82::88:::80       :::*              LISTEN

 設定したIPv6アドレスでLISTENしていればOKです。

(4)Webサーバの応答確認

 設定したIPv6アドレスでWebサーバの応答を確認しましょう。telnetコマンドでWebサーバに接続し、HTTPのHEADコマンドでトップページのヘッダ情報を確認します。コマンドとして打ち込む部分は太字の部分です。

# telnet 2001:200:c10:82::88 80
Trying 2001:200:c10:82::88
Connected to 2001:200:c10:82::88
Escape character is '^]'.
HEAD / HTTP/1.0

Date: Thu, 14 Apr 2011 07:43:25 GMT
Server: Apache
Accept-Ranges: bytes
Content-Length: 10329
Connection: close
Content-Type: text/html

Connection closed by foreign host.

 telnetコマンドだけでなく、wgetなどのテキスト型のhttpクライアントもIPv6に対応しています。

# wget --server-response -O /dev/null 'http://[::1]:80/'
--2011-04-14 13:53:38-- http://[::1]/
::1:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています...
  HTTP/1.1 200 OK
  Date: Thu, 14 Apr 2011 04:53:38 GMT
  Server: Apache
  Accept-Ranges: bytes
  Content-Length: 10329
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Content-Type: text/html
長さ: 10329 (10K) [text/html]
`/dev/null' に保存中

100%[======================================>] 10,329      --.-K/s 時間 0s

2011-04-14 13:53:38 (116 MB/s) - `/dev/null' へ保存完了 [10329/10329]

(5)ip6tablesの設定

 IPv4で使用するiptablesは、IPv4に対してのみ有効なホストファイアウォール機能です。IPv4でiptableを設定し使用している場合は、IPv6でも同じようにホストファイアウォールを設定するのが望ましいでしょう。

 具体的には、IPv6用のアクセス制御設定を作成し、ip6tablesサービスを起動させます。以下のように、Webサーバへのアクセス許可、DNSサーバへのアクセス許可を設定しましょう。

# vi /etc/sysconfig/ip6tables        (IPv6用アクセス制御設定)
# service ip6tables start               (ip6tablesサービスを起動)
# chkconfig ip6tables on               (システム起動時にip6tablesを自動起動させるよう設定)

 設定する際の構文は、IPアドレスの記述が128ビットのIPv6アドレスに変わるだけで、iptablesとすべて同じです。IPv4と同じ方針で設定するのがよいでしょう。


4ステップでWebサーバをIPv6に対応させる方法
  World IPv6 Dayがやってくる
IPv6アドレスの入手
ネットワークのIPv6対応
サーバのIPv6対応
  DNSへの登録
最後に
「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間