既存WEBサイトをIPv6対応にするには?を色々と調査
2011年02月02日-
今年の後半にはIPv4アドレスが枯渇するということで, もっと先のことと思っていたらすぐそこに来てしまいましたね。
基本現行のサイトはIPv4ベースで動いていると思いますが、apache等上で当ブログのようにサーバ運用している場合に影響がないか心配な方も多いのではないだろうか、ということで調べてみました。
IPv6とは?
まず、IPv6ってどういうものか?個人的に知識が曖昧な部分が多かったので改めて調べてみます。
IPv6 - Wikipedia
はしょると、42億個が上限のIPv4を拡張して、約340澗(340兆の1兆倍の1兆倍)まで扱えるようにしたとあります。
これだけあれば枯渇とは無縁ですね。
IPv4 では「192.0.2.1」みたいなものだったのが、IPv6になると「2001:0db8:bd05:01d2:288a:1fc0:0001:10ee 」とコロンで区切り、英字は小文字必須。
先頭のゼロを省略可能で「2001:0db8:0020:0003:1000:0100:0020:0003 → 2001:db8:20:3:1000:100:20:3 」とできる
ゼロが連続するところは「2001:0db8:0000:0000:0000:0000:0000:9abc → 2001:db8::9abc 」のように省略可能。
IPv4互換アドレスは 「::ffff:192.0.2.1」 のように表現。
ApacheはIPv6でつなげるの?
apache.org の バインド - Apache HTTP サーバ を見ると、サポートしていることが分かります。
IPv4 マップされた IPv6 アドレスを使用していて、 ほとんどのプラットホームではデフォルトで使用可能。
FreeBSD, NetBSD, OpenBSD では、システム全体としてのポリシーとの整合性から、 デフォルトでは使用不可に設定。
BSD系以外ではデフォルトで対応していて、BSD系の場合は --enable-v4-mapped をconfigureに付与してインストールしようということですね。
サーバでバーチャルホストの設定をしている場合でIPアドレスも指定する場合、ポートと区別するために [] でIPv6アドレスを囲って次のようにするみたい。
<VirtualHost [2001:db8::a00:20ff:fea7:ccea]>
~
</VirtualHost>
次のようにしても動きそうです。
<VirtualHost *:80>
~
</VirtualHost>
あと、Allow from や Deny from なんかでは次のように書くみたい
Allow from 2001:db8::a00:20ff:fea7:ccea
PHPはIPv6対応ってどんな感じ?
IPv6ということで、特にネットワークに絡む部分で影響が出そうですね。
小山哲志さんによるスライドがとても参考になります。
(追記・注:2年前の資料なので状況は変わっている可能性→phpソースコード検証、Net_Socket最新版もfsockopenベースでした。Net_IPv6はメソッドが増加)
要約すると、
・最新のOSならIPv6に対応していてその上でApache、PHPを動かせば大体問題なし
・PHP独自でソケットを使ってネットワークを利用する場合に対応が必要
・streamモデル(fopen、file_get_contents)は普通に使える
・PHP拡張で、streamを使っているものはそのまま使える
・PEAR::Net_IPv6 というIPv6を扱うユーティリティクラスがある
・PEAR::Net_Socket は問題なく使えるので、ソケット系の物はこのモジュールを使えば安心
・Net_POP3、Net_IMAP、Net_SMTP、HTTP_Request は Net_Socket ベースなので使える
・DNS名前解決には Net_DNS を使う。(注意点あり)
PHPでIPv6プログラミング - クライアント編 なども参考になりました。
他のソフトウェアは?
・MySQLはまだ? (サポートしているという情報が見つかりませんでした。知ってる方おられましたら教えて下さい)
・memcached は IPv6に対応している(参考)
その他知っておくとよいこと
IPv6 とかよくわからない人間が IPv6 対応サイトを作る際の知っておくべき 8 つの注意点 - にぽたん研究所 が非常に参考になります。
勉強がてら要約すると、
・クライアントとサーバの終端装置が IPv6 対応していれば接続可能
・SSL証明書はIPv4、IPv6共通で使える
・ping, traceroute ではなく、ping6, traceroute6 というコマンドを使う
・DNS登録はAレコードではなく AAAA レコードに登録する
・IPv4かIPv6かの判別は、apacheのconfで環境変数に設定する等で対応可能(元エントリ参照)
・DBでIPアドレスを保存するVARCHARカラム等がある場合は、v6にするともっと長くなるので注意
・アクセス解析プログラムの対応も必要
詳しくは元エントリを参照して下さい。
来年にはどういう感じになっているのか分かりませんが、備えをしておきたいですね。
とりあえず環境が手元にないので動作確認等はしていませんが、準備として情報だけ集めて要約してみました。
こちらも必読
Geekなぺーじ : IPv4アドレス枯渇。その意味と恐らくこれから起きること
最新のブログ記事(新着順)
- 可愛くアニメーションする「beautifully crafted animated icons」
- アイソメトリックなアイコンがアイコンがPNG,SVGでゲットできる「Isoicons」
- ユニークなカタカナフォントtorisippo
- 美しいメッシュグラデーションをCSSで簡単に取得できる「MSHR」
- TailwindCSSなサイトで使える100以上のアニメーションエフェクト「animata」
- SVG形式のテック系企業のロゴを簡単にゲットできる「Svgl」
- 統一感のある色味を一括生成できるツール「The good colors」
- くちばしフォント【商用可】
- 小説表紙などに使えそうな商用可なフォント「になロマン」
- 筆で書いたようなカナ書体「筆竹仮名B」
- 過去のエントリ