Cent6でsysctlを実行すると失敗する

redhat logoCent 6で sysctl コマンドからカーネルパラーメータを更新しようとするとエラーが発生する。

% cat /etc/redhat-release
CentOS release 6.3 (Final)
% sysctl  -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
% echo $?
255

"net.bridge.bridge-nf-call-***" の箇所で “an unknown key” というエラーが発生し、終了ステータスも異常(255)だ。

インストーラースクリプトが sysctl を叩いていたら失敗するし、コマンドのステータスコードを見る処理が入っていても失敗する。

エラーの原因

libvirt 関連で、ブリッジ上で iptables を無効にする設定を sysctl.conf に入れたことに起因し、関係ないシステムが煽りを食っている。

Bug 512206 – Disable net.bridge.bridge-nf-call-*tables by default
https://bugzilla.redhat.com/show_bug.cgi?id=512206

解決策(姑息編)

姑息な解決策は 3 通り有る。

1.bridge カーネルをロードする

キー “net.bridge.bridge-nf-call-***” が unknown にならないよう、対応する bridge モジュールをロードする

% modprobe bridge       # modprobe : program to add and remove modules from the Linux Kernel
% lsmod | grep bridge   # lsmod : program to show the status of modules in the Linux Kernel
bridge                 79078  0
stp                     2173  2 bridge,garp
llc                     5546  3 bridge,garp,stp
% sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

2.エラーが起きている設定をコメントアウトする

% grep -i bridge /etc/sysctl.conf
# Disable netfilter on bridges.
# net.bridge.bridge-nf-call-ip6tables = 0
# net.bridge.bridge-nf-call-iptables = 0
# net.bridge.bridge-nf-call-arptables = 0

3. sysctl 実行時にエラーを無視するオプションを渡す

当然ながら sysctl が自分の手の届かないプログラム内で呼び出されている場合は、この方法は使えない。

% sysctl -e -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
% echo $?
0

解決策(根本)

この現象は 2010 年には Red Hat の Bugzilla で報告されている。

Bug 639821 – sysctl -p gives error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
https://bugzilla.redhat.com/show_bug.cgi?id=639821

バグだから直せと何人もの利用者がコメントをつける一方で、Red Hat の中の人はバグでないと言い返していて、平行線をたどっていた。ここ以外にも、少し探すだけでも同様の報告がみつかる。

今月になって、RedHat の中の人もようやく RedHat の不具合と認識してくれたみたいなので、近いうちに % sysctl -p するだけで反映されるようになるのではないかと思う。

Bug 919472 – sysctl -p gives error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
https://bugzilla.redhat.com/show_bug.cgi?id=919472

Advertisements
Tagged with: , ,
Posted in linux
One comment on “Cent6でsysctlを実行すると失敗する
  1. […] 参考サイト:Cent6でsysctlを実行すると失敗する […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 6 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 6 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 6 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 1 year ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: