iptables 返回代码 4?

iptables 返回代码 4?

我有一个服务器和几个 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命令紧密循环的描述(尽管标准错误应该有一些错误,但您的打印出来了吗?);也许可以使用iptables-restore原子方式一次性插入您需要的所有更改,或者减慢循环速度(并确认此代码是正在触发的错误路径)。

相关内容