サーバーと複数のVPSがあるため、iptablesを使用してポートをリダイレクトし、スクリプトを介してそれらを自動化します。
サーバーの再起動後にルールを挿入するには約500個のiptablesコマンドが必要ですが、時にはいくつかのコマンドしか実行されず、残りは失敗し、iptablesコマンドは終了値4を返します。これが何を意味するのかはどこにも見つかりませんでした。
for-eachループに500のルールを挿入するので、デフォルトでは同時に多くのルールを挿入します。これが問題になる可能性がありますか?
ベストアンサー1
~からソースナビゲーション我々はinclude/xtables.h
発見する
enum xtables_exittype {
OTHER_PROBLEM = 1,
PARAMETER_PROBLEM,
VERSION_PROBLEM,
RESOURCE_PROBLEM, // number 4 because that's how enum count
フォローしているコードブランチについていくつかの大まかな仮定をすると(印刷エラーはありませんかiptables
?)、ロックの問題のように見えることを検討iptables/iptables.c
できます。exit(RESOURCE_PROBLEM)
これはiptables
コマンドの緊密なループの説明に適しています(stderrにはいくつかのエラーがあるはずですが、印刷結果はどうですか?)。iptables-restore
アトミック手段を使用して、必要な変更を一度に挿入したり、ループ速度を遅くしたり、このコードを確認したりできます。間違ったパスがトリガーされます)。