閉じた小規模な環境のプライベート IP アドレスは IPv4 で十分だし、何より理解しやすいので、IP (v4) アドレスの枯渇が叫ばれて久しい今日に至っても、本格的に IPv6 に移行する気にはなかなかなれない。IPv6 アドレスが「目に入る」→「内容を理解する」までにやたらと時間がかかるのは、そもそも 16進数で表現するアプローチに問題があることに加え、省略表記が混乱に拍車をかけているせいで、僕だけではないと信じたい。IPv4 アドレスを 10進数で区切って書くのは、「2進数だと人間にはわかりにくいから」じゃなかったか? 16進数は人間に優しいのか?
ただそうは言っても IPv6 を否定するつもりはなく、 IPv6 は避けて通れないハードルであることは、後ろ向きの動機ながらも認識している。認識はしているが、先日ある検証のために CentOS 5.7 マシンの IPv6 を無効化しようとして少しだけハマったので、方法を調べてみた。
ネットで検索して見つかる数種類の情報を検証するために用意した環境は、次の通り (※ いずれも VMware ESXi 上の仮想マシンで、新規インストール直後の状態)。
- CentOS 5.2
- CentOS 5.3
- CentOS 5.4
- CentOS 5.5
- CentOS 5.6
- CentOS 5.7
- CentOS 6.2
- Scientific Linux 6.1
上記環境で ifconfig の結果に "inet6 addr" が表示されなくなるのに必要な操作を整理すると、以下のようになる。
- /etc/modprobe.d/<FILENAME> (ファイル名は任意で、拡張子も必須ではない。例: ipv6.conf) または /etc/modprobe.conf に次の内容を記述。
・CentOS 5.5 以前 alias ipv6 off alias net-pf-10 off ・CentOS 5.x/6.x 共通 options ipv6 disable=1
- 再起動。
前者の設定は CentOS 5.6 以降では効かない一方、後者は全ての検証環境で有効だった。IPv6 を有効にする場合は、該当行を削除するか、/etc/modprobe.d 以下に分離したファイルなら削除するか、値を "1" にして再起動すればいい。
また /etc/sysconfig/network に "NETWORKING_IPV6=no" と書く説明を複数のサイトで見かけたが、この設定の有無や値は、いずれの検証環境でも IPv6 の有効/無効に影響しなかった。ただ /etc/init.d/network にはこの値が "yes" の場合の処理が書かれているので、余計な処理やモジュールをロードしないよう、削除するか、明示的に "no" としておいた方がよさそうだ。
ついでに書くと、ip6tables の自動起動設定も影響しないが、IPv6 が前提になるサービスは余計なエラー・メッセージを吐くことがあるので、まとめて無効化しておいた方がスッキリするはず。
ちなみにこの手の検証環境を作るのに、OS のインストールと簡単な初期設定をほぼ全自動化できる Kickstart は非常に重宝する。以前にどこかのエントリーでも書いたように、Kickstart、Puppet、プログラムのコンパイル、3D CG のレンダリング、動画のエンコーディング等々、「チマチマ設定してオラッと実行。出来上がりを待つ (たまに失敗して慌ててやり直し)」作業の仕込みは楽しい。