HTTP、SMTP、POPサーバのIPv6設定IPv6導入虎の巻(5)

» 2003年04月02日 00時00分 公開
[鈴木伸介日立製作所]

 第4回 DNSのIPv6設定でやっていいこと、悪いことまでに、IPv6での経路制御周辺とDNSのIPv6関連の設定に関して解説した。第5回目の今回は、HTTPサーバ、SMTPサーバ、POPサーバなど、DNS以外のサーバのIPv6設定について解説する。

図1 ある企業網における、要素ごとのIPv6導入ケース。今回は、赤枠で囲まれたDNS以外のサーバの部分の設定について説明する 図1 ある企業網における、要素ごとのIPv6導入ケース。今回は、赤枠で囲まれたDNS以外のサーバの部分の設定について説明する

全てのサーバ設定に共通する注意点

 個々のHTTPサーバ、SMTPサーバ、POPサーバの設定についての注意点を述べる前に、まずは全てのサーバ設定に共通することを述べておく。

・IPv6アドレスのフォーマットはまちまち

 IPv6アドレスをアプリケーションの設定ファイルで指定する場合、そのままIPv6アドレスを書けないことが多い。理由は、IPアドレスとポート番号とを区別する:(コロン)と、IPv6アドレスの区切り記号である:(コロン)とが重複してしまうからだ。

 多くの場合は、[3ffe:ffff:ffff::1]:80という具合にIPv6アドレスを大括弧([])でくくって指定するが、上記のような書式をしないアプリケーションも多いので、アプリケーションごとに注意が必要である。

・IPv4射影アドレスには要注意

 IPv6アドレス体系の中には、IPv4射影アドレス(IPv4-mapped address)※1と呼ばれるIPv6アドレスが存在する。具体的には先頭96bitが0:0:0:0:0:ffff::で後ろ32bitにIPv4アドレスが入ったIPv6アドレスである。

※1IPv4射影IPv6アドレスとは、IPv6アドレスの上位80bitに0、81〜96bit目に1を入れ、下位32bitにIPv4アドレスを埋め込んだアドレスである。IPv6をサポートしていないノードのアドレスをIPv6アドレスとして表現するために用いられている。

 このアドレスは、IPv6-onlyなアプリケーションがIPv4アドレスを処理するために内部的に用いるものである。例えばIPv6のみで受け待ちしているHTTPサーバがIPv4で接続されたら、あたかもIPv4射影アドレスから接続されたかのように振る舞う。

 この機能は一見便利なようだが、実はフィルタリングの穴を作りがちな非常に危険な機能である。例えばあるHTTPサーバへのアクセスを特定のセグメントからだけ認めさせるために、HTTPサーバのアクセスフィルタとして、

  • そのセグメントのIPv4アドレス
  • そのセグメントのIPv6アドレス
  • そのセグメントのIPv4アドレスに対応するIPv4射影アドレス

の3つを書かなければならないからである。最初の2つは気が付いたとしても、最後の1つを忘れがちなのはいうまでもないことだろう。

対策としては、

  • サーバOSでIPv4射影アドレス機能を無効にする
  • 忘れずにIPv4射影アドレスのフィルタも書く

のいずれかが必要である(アプリケーションによっては、IPv4射影アドレスがないと動かないものもあるため、IPv4射影アドレスを無効にすればそれでおしまい、というわけにはいかないのが難しいところである)。

個々のサーバのIPv6化

 以下、個々のサーバのIPv6化の方法と、その注意点を解説する。

・HTTPサーバ

 代表的なHTTPサーバであるApacheは、バージョン2.0以降で最初からIPv6対応済みである。従ってバージョン2.0以降のApacheで普通にIPv4のHTTPサーバとして動くような設定をしたら、後はHTTPサーバのIPv6アドレスをDNSに登録するだけで、すぐにIPv6対応のHTTPサーバとして機能するようになる。

 KAMEプロジェクトのホームページIPv6普及・高度化推進協議会のホームページのように、IPv6でアクセスした人だけに特別サービスをしたい場合には、以下のいずれかの方法を取ればいい。いうまでもないことだが、こちらのように、IPv4でもIPv6でも全く同じに見えるホームページでも全然問題ない。

  1. IPv6アドレスだけDNS登録したHTTPサーバを用意して、そこにIPv6特典サービスコンテンツを盛り込む。
  2. CGIやPHPなどのスクリプト言語を用いて、アクセス元のIPアドレス(Apacheの場合はREMOTE_ADDR変数にIPv4/IPv6アドレス文字列が含まれている)に応じてコンテンツの中身を変更する図2)。
#!/usr/bin/perl
....
if ($ENV{'REMOTE_ADDR'} =~ /^[a-fA-F0-9:]+$/) {
        print << 
EOF
        Conguratulations! 
You are using IPv6!
EOF
} else {
        print << 
EOF
        You are just 
using IPv4
EOF
}
図2 コンテンツの中身を変えるCGI

 当然なことだが、“http://1.2.3.4/……”というようにURL内にIPv4アドレスをベタ書きしていると、ネットワークやHTTPサーバがIPv6化したとしてもそのURLはIPv4でしかアクセスできない。同じようにIPv6アドレスをURL内にベタ書きすることも不可能ではないが、面倒なうえに今度はそのURLへIPv4でアクセスできなくなってしまうので、HTTPサーバのホスト名をDNSに登録して、そのホスト名をURLに書くことをお勧めする。

・HTTPプロクシ

 代表的なHTTPプロクシであるSquidDeleGateについては、残念ながら正式版でのIPv6対応はまだである。従って現在は、SquidIPv6化プロジェクトにて公開されているIPv6対応版Squidや、ApacheのHTTPプロクシ機能を用いるのが適切だろう。

 なおHTTPプロクシのIPv6対応があまり進んでいない背景には、そもそもIPv6は端末と端末とが直接に通信し合う世界を指向するという事実がある。IPv6でもHTTPプロクシを作ることは技術的にはさして難しいことではないが、HTTPプロクシのように端末と端末との間に挟まって通信を仕切るような存在があると、そもそもIPv6を導入する意味が薄れてしまうというわけだ。

・SMTPサーバ

 SMTPサーバにはいくつか有名なソフトがあるが、いずれについてもIPv6対応版が存在する。

  • sendmail
    バージョン8.10以降標準でIPv6対応済み。
  • qmail
    正式版はまだIPv6未対応だが、IPv6対応パッチが第三者により公開されている。
  • postfix
    正式版はまだIPv6未対応だが、IPv6対応パッチが第三者により公開されている。■

 いずれの場合も、普通にIPv4のSMTPサーバとして動くような設定をしたら、後はSMTPサーバのIPv6アドレスをDNSに登録するだけで、すぐにIPv6対応のSMTPサーバとして機能するようになる。

 後は必要に応じてopen-relay防止のために、メール中継を認めるソースアドレスを追記していけばよい。IPv6アドレスの書式はソフトによってまちまちなのに注意すること(図3)。

* sendmailの場合 /etc/mail/access

192.168.1 RELAY
IPv6:3ffe:ffff:ffff:: RELAY

* postfixの場合 /etc/postfix/main.cf

....
#mynetworks_style = subnet
mynetworks=192.168.1.0/24, [3ffe:ffff:ffff::/48]
....
図3 メール中継を認めるアドレス一覧の設定例

・POPサーバ

 代表的なPOPサーバであるqpopperの正式版はまだIPv6未対応だが、IPv6対応パッチが第三者により配布されている。FreeBSDの場合portsやpackageでIPv6対応版qpopperが配布されているので、自力でパッチをあてるのが面倒な場合はそちらを使うといいだろう。

 普通にIPv4のPOPサーバとしての設定をしたら、後は、

  • POPサーバを立ち上げるホストのIPv6アドレスをDNSに登録
  • IPv6ソケットでqpopperを立ち上げる

だけ(図4)で、IPv6対応のPOPサーバとして機能するようになる。

/etc/inetd.conf

……
pop3 stream tcp46 nowait root /usr/local/libexec/qpopper qpopper -s 
……
図4 IPv6ソケットでqpopperを立ち上げる

(注)/etc/inetd.confに元々書いてある
pop3 stream tcp nowait root /usr/local/libexec/popper popper
という行は削除すること


 今回は、もろもろのサーバのIPv6対応について解説した。次回はIPv6のセキュリティの対応について解説していく。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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