iptables: Memory allocation problem.

使っているVPS(カゴヤ・クラウド/VPS)でiptablesのルール追加時にエラーメッセージが出力されてそれ以降ルールの追加ができなくなりました。

エラーメッセージ

実行したコマンドとエラーメッセージ

# iptables -A INPUT -p tcp -s 1.0.16.0/20 -j ACCEPT
iptables: Memory allocation problem.

 エラーメッセージには、メモリの割り当てに問題があると書いてありました。サーバのメモリリソースには、余裕があります。

 

調べてみるとカゴヤ・クラウド/VPSで仮想化に使われているOpenVZには、「numiptent = IPパケットフィルタリング」の値を指定するパラメータが存在するようでした。パラメータの値は、ゲストOSからも確認できるようなので下記のコマンドを使って確認します。

# grep -e "failcnt" -e "numiptent" /proc/user_beancounters

       uid  resource                     held              maxheld              barrier                limit              failcnt
            numiptent                     400                  400                  200                  400                 3033

 

「カゴヤ・クラウド/VPS type A」では、numiptentの最大値が400に設定されていました。

私は、エラーメッセージが表示された時点でiptableに385個のルールを追加しており、numiptentの上限に達してしまったのでしょう。

諦めるしかないね。。。

 

ちなみに、自前のOpenVZ環境なら下記方法で回避できるそうです。

#vzctl set <CTID> --save --numiptent <BARRIER>:<LIMIT>

「BARRIER」「LIMIT」の上限値を上げてあげればよい。