LinuxでIPv6を無効化する(意外と苦戦)
Linuxカーネル2.6は、デフォルトでIPv6が有効となっている。
(IPv6を)利用していないのにマシン上でIPv6が有効な状態になっていると、DNS絡み
で余計な問合せを行ってしまうため、通信速度が低下する場合があるらしい。
ちなみにOSインストール時にIPv6オフを選択していると、 /etc/sysconfig/networkに
その設定が入っているが、/etc/modprobe.confでは無効化されていないものらしい。
以下コマンドを実行してIPv6の有効/無効状態を確認できる。
# lsmod | grep ipv6
ipv6モジュールが表示される→有効
# netstat -an
:ffff:で始まるIPアドレスがある→有効
# ifconfig
inet6 addrで始まる箇所がある→有効
# modprobe -c | grep net-pf-10
net-pf-10 offがヒット→無効
※ヒットしなくても無効な場合がある
それとIPv6が有効だと、LogwatchにエラーMsgが出力されることがある。
XNTPDで”…..Cannot assign requested address:1 time(s)”とか。
DNSサーバだとNamedで”network unreachable resolving….”とか。
無効化の対応
一般的には概ね以下の対処方となるようだが、ディストリやそのバージョンによって
変わってくるようで、いろいろ見てたら訳がわからなくなった・・・
/etc/modprobe.conf or /etc/modprobe.d/modprobe.distに以下を記述する。
alias net-pf-10 off
alias ipv6 off →ディストリのVerによっては不要っぽい
/etc/sysconfig/networkに以下を記述。
が、modprobeで設定されていれば不要らしい。念のため書いておくが。
NETWORKING_IPV6=no
設定ファイル編集後、OS再起動。
ネットワークの再起動でOKとされていることがあるが、環境によっては駄目っぽい。
(OS再起動は避けたいケースもあるよね・・・)
上記の設定でNGの場合に、以下で成功した例も見つけた。
CentOS5やRedHatLinux ES5ではこうなる??
install ipv6 /sbin/modprobe -n -i ipv6
参考
↓ ↓ ↓
IPv6の停止
どうすればIPv6を無効化できるか
IPv6の無効化、意外と苦戦、、、
追記
CentOS5のケース。”alias net-pf-10 off”でも”install ipv6 /sbin/modprobe -n -i ipv6″、
どっちでもイケるみたいだ。
“NETWORKING_IPV6=no”もいらないですね。
さらに追記
IPv6無効の設定を行いマシン再起動すると、Logwatchに以下のようなエラーが
吐き出されるかもしれない。
Errors
getaddrinfo:”::1″ invalid host address, ignored: 1 time(s)
これはntpサービス起動時に一度だけ発生するようだ。
IPv6は無効になったものの、関連の設定がntp.confに残っているためらしい。
対策は、/etc/ntp.conf内の”restrict -6 ::1″の行をコメントアウトする。
しつこく追記
上記の対応を行っていても、yum updateでOS全体のアップデートをかけると
上書きされてしまい、もとに戻ってしまう!(modprobe.distが書き換えられてしまうのだ)
対策としては、アップデート時にIPv6関係のモジュールを無効にするか、
アップデート後に再びmodprobe.distに無効化の記述をして再起動するか、となる。