iptables-save无法写入文件

我可以运行iptables的保存和转储输出到标准输出,但如果我redirect到一个文件 – 文件是空的:

[root@nhd-vlx2 tmp]# iptables-save # Generated by iptables-save v1.4.7 on Sun Dec 18 15:11:42 2011 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [90971:17757587] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9090:9999 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Sun Dec 18 15:11:42 2011 [root@nhd-vlx2 tmp]# iptables-save > save [root@nhd-vlx2 tmp]# cat save [root@nhd-vlx2 tmp]# [root@nhd-vlx2 tmp]# 

pipe道工程( iptables-save | cat )等也通过tee工作保存到文件中,但为什么iptables-save不允许保存到文件?

我能想到的唯一原因是这台机器可能被病毒感染(试图削弱防火墙)

远射,但:

有人在另一个论坛上发表了类似的问题。 事实certificate,SELinux上下文是错误的。

在iptables-multi上运行ls -laZ。 它应该返回:

 -rwxr-xr-x. root root system_u:object_r:iptables_exec_t:s0 /sbin/iptables-multi 

所有其他的iptables文件都符号链接到它:

 [root@cacti tmp]# ls -laZ /sbin/iptables* lrwxrwxrwx. root root system_u:object_r:bin_t:s0 /sbin/iptables -> iptables-multi -rwxr-xr-x. root root system_u:object_r:iptables_exec_t:s0 /sbin/iptables-multi lrwxrwxrwx. root root system_u:object_r:bin_t:s0 /sbin/iptables-restore -> iptables-multi lrwxrwxrwx. root root system_u:object_r:bin_t:s0 /sbin/iptables-save -> iptables-multi 

如果SELinux上下文不正确,请使用主文件上的chcon命令进行更改:

 chcon -u system_u -t iptables_exec_t /sbin/iptables-multi 

如果符号链接上的SELinux上下文不正确,请使用上述命令修复它们(尽pipe这次使用的是bin_ttypes)

根据Rilindo评论,如果你在RedHat上, 文档中提到:

 ~]# /sbin/service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] 

iptables-save试图在简约的centos-7上设置正确的selinux安全上下文。

我看着这个错误,它似乎失败,因为用于更改selinux上下文的实用程序没有安装(通过依赖?)。

以下为我解决了这个问题:

 yum -y install policycoreutils 

之后,以下工作正常:

 /sbin/service iptables save