问题: iptables
无法更改。在我的电脑上,我可以运行iptables -F
.iptables -L
显示它已被冲洗。
当任何数据包进出机器时,所有规则都会恢复!如果我执行 a ,也会发生同样的行为iptables-restore < new_settings
。它们会在那里停留一秒钟,但一旦有数据包通过,iptables
它就会恢复原样。
我在用着德班8该操作系统是从Debian 7。原来是别人的电脑。
我检查过,认为这将是以下事情之一:
iptables-persistent
不存在/etc/iptables/
不存在- 当我查看进程时,它的名称中
systemctl
甚至没有任何内容ip
/# systemctl --all | grep ip run-rpc_pipefs.mount loaded active mounted /run/rpc_pipefs systemd-initctl.socket loaded active listening /dev/initctl Compatibility Named Pipe
# firewalld
系统上没有。
我们在哪里可以找到服务或正在更改系统配置的东西?
答案1
也许你可以使用audit
. Fedora 默认启用它,并且它会用 NETFILTER_CFG 行淹没日志。
看这个问题:
在所示的示例中,相关过程是iptables
,这可能没有太大帮助。然而它也记录了ppid
父进程(以及明显的pid
)。
如果父进程还立即退出...
您可以轻松地使用进程记帐(包)来跟踪每个现有进程(命令)acct
的名称。lastcomm
然而,这比您想象的要少。我在这里想到“bash”。
最好运行fatrace
来跟踪打开的文件,其中包括程序执行。只是不要尝试通过 grep 进行管道传输 - 它将无法生成任何输出,我不知道为什么。
还有一个页上execsnoop
。如果您可以使用该程序或其建议的任何替代方案,那么这将是最容易解释的。
从技术上讲,我不允许fork()
.但我想不出你为什么fork()
不exec()
创建 netfilter 规则的充分理由。
答案2
长话短说当您遇到配置文件不断更改的奇怪问题时,请检查您的/etc/network/if-*.d
文件(如果您已经检查过systemd
配置)。
事实证明,可以更改iptables
命令(或实际上任何内容)的另一个选项位于if-up.d
或if-down.d
文件夹中,这些文件夹根据互联网连接进行更改。
里面/etc/network/
有一个文件夹,用于存放if-pre-up.d
、if-up.d
等。
if-*
每个都包含一组在满足条件时运行的脚本。因此,每当互联网连接发生变化(这似乎是 中的任何变化iptables
)时,它都会运行一个脚本,该脚本会使用中的/sbin/iptables-restore < /etc/network/iptables
文件重置 iptables 。iptables
/etc/network/