■概要
CentOS 6.x 上で LVS (ipvsadm) を有効にしようとしたが、手許のメモの方法では「FATAL: Error inserting ip_vs」と表示されて、ipvsadm コマンドを実行できなかった。無効化するためには複数の指定方法があるが、ipvsadm を有効にするには、 ipv6.conf で kernel モジュールを無効化する方法だった。
■状況
IPv6を無効化するため、CentOS の FAQ に記載されている手法 ( /etc/sysctl.conf にエントリを追加する方法 )を試みる。しかし、コマンドを実行した結果は、
# ipvsadm –help
FATAL: Error inserting ip_vs (/lib/modules/2.6.32-279.19.1.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko): Unknown symbol in module, or unknown parameter (see dmesg)
Can’t initialize ipvs: Protocol not available
Are you sure that IP Virtual Server is built in the kernel or as module?
このように ipvsadm コマンドが実行できない。
■有効な対処法
/etc/modprobe.d/ipv6.conf ファイルに、以下の記述を追加する。
options ipv6 disable=1
この記述があると、ipv6関連のモジュールは読み込まれるものの、OS上の動作としては無効化される。従って、ipvsadm コマンドも正常に実行できるようになる。
参考:How do I disable or enable the IPv6 protocol in Red Hat Enterprise Linux? – Red Hat Customer Portal
https://access.redhat.com/site/solutions/8709
■失敗した方法
/etc/modprobe.d/disable-ipv6.conf ファイルに、以下の記述を追加する。
install ipv6 /bin/true blacklist ipv6
この方法でも ipv6 を無効化することは可能である。ただし、baacklist にするとモジュールをロードしないため、先の ipvsadm 実行時( Can’t initialize ipvs: Protocol not available ) や、一部ボンディング関係の設定でエラーが出ることが確認されている。
参考:Bug 531873 – bonding driver 3.4.0 requires ipv6 kernel modules
https://bugzilla.redhat.com/show_bug.cgi?id=531873
■結論
とにかく IPv6 を無効化したいのであれば、blacklist 記述でも良いが、ipvsadm 等で支障が出る場合がある。Red Hat Enterprise Linux の場合は、ipv6.conf において、
options ipv6 disable=1
このように記述する事が望ましい。