fwbuilder で生成された簡単な bash スクリプトがあります。これは、いくつかの echo ステートメントをネストし、それらを iptables-restore にパイプします。複数の「iptables -A xxx」行を使用する代わりに、この方法でコンパイルします。これは、コンパイルとデプロイがはるかに高速であり、既存の接続もドロップしないためです。
問題は、許可されている複数のリダイレクトの制限に達したように見えることです (~23'850 行は機能しませんが、~23'600 行は機能します)。カーネル 2.6.18 (CentOS 5.x) で実行すると壊れてしまい、2.6.32 (6.x) で実行すると魅力的に動作します。
スクリプトは基本的に次のようになり、コマンドにパイプされた 1 つの長い行として出力されます。
(エコー "1"; エコー "2"; エコー "3"; ... ; エコー "25000") | /何でもする
質問は、カーネルを再コンパイルせずにこの制限を増やす簡単な方法はあるのでしょうか? パイプの標準入力文字制限のようなものだと思います。または、OS のアップグレードを行う必要がありますか?
編集: ああ、古いカーネルで実行すると、エラーは表示されませんが、segfault が dmesg に表示されることも追加したいと思います。