
第5回 HTTP、SMTP、POPサーバのIPv6設定
鈴木伸介
日立製作所
2003/4/2
第4回 DNSのIPv6設定でやっていいこと、悪いことまでに、IPv6での経路制御周辺とDNSのIPv6関連の設定に関して解説した。第5回目の今回は、HTTPサーバ、SMTPサーバ、POPサーバなど、DNS以外のサーバのIPv6設定について解説する。
![]() |
| 図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でも全く同じに見えるホームページでも全然問題ない。
- IPv6アドレスだけDNS登録したHTTPサーバを用意して、そこにIPv6特典サービスコンテンツを盛り込む。
- CGIやPHPなどのスクリプト言語を用いて、アクセス元のIPアドレス(Apacheの場合はREMOTE_ADDR変数にIPv4/IPv6アドレス文字列が含まれている)に応じてコンテンツの中身を変更する(図2)。
|
|
| 図2 コンテンツの中身を変えるCGI |
当然なことだが、“http://1.2.3.4/……”というようにURL内にIPv4アドレスをベタ書きしていると、ネットワークやHTTPサーバがIPv6化したとしてもそのURLはIPv4でしかアクセスできない。同じようにIPv6アドレスをURL内にベタ書きすることも不可能ではないが、面倒なうえに今度はそのURLへIPv4でアクセスできなくなってしまうので、HTTPサーバのホスト名をDNSに登録して、そのホスト名をURLに書くことをお勧めする。
・HTTPプロクシ
代表的なHTTPプロクシであるSquidやDeleGateについては、残念ながら正式版での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
* postfixの場合
|
||
| 図3 メール中継を認めるアドレス一覧の設定例 |
・POPサーバ
代表的なPOPサーバであるqpopperの正式版はまだIPv6未対応だが、IPv6対応パッチが第三者により配布されている。FreeBSDの場合portsやpackageでIPv6対応版qpopperが配布されているので、自力でパッチをあてるのが面倒な場合はそちらを使うといいだろう。
普通にIPv4のPOPサーバとしての設定をしたら、後は、
- POPサーバを立ち上げるホストのIPv6アドレスをDNSに登録
- IPv6ソケットでqpopperを立ち上げる
だけ(図4)で、IPv6対応のPOPサーバとして機能するようになる。
/etc/inetd.conf
|
|
| 図4 IPv6ソケットでqpopperを立ち上げる |
(注)/etc/inetd.confに元々書いてある
pop3 stream tcp nowait root /usr/local/libexec/popper popper
という行は削除すること
今回は、もろもろのサーバのIPv6対応について解説した。次回はIPv6のセキュリティの対応について解説していく。
| 「Master of IP Network総合インデックス」 |
TechTargetジャパン
- 実機では測定できない性能を測定? (2012/2/7)
システムの完成前に、達成し得る性能値や必要なサーバリソースを知るには? その解となる「性能シミュレーション技法」を解説 - 性能チューニング個所の検討 (2012/1/30)
アプリのチューニングや環境増強で、どの程度改善が見込める? 今回からは「実際に活用できる性能対策」を解説します - 遅いところを直すだけでいいのですか? (2012/1/24)
負荷が集中したときの性能ボトルネックを改善するのに、アプリケーションサーバとDB、どちらを優先すべきでしょう? - cloudfoundry.comを使ってみよう (2012/1/19)
VMwareが提供するPaaSプラットフォーム「CloudFoundry」。注目を集めるこの基盤を活用してPaaSを構築!
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

