我正在运行 CentOS 版本 6.5(最终版),但不知道为什么我的 iptables 没有启动。我可能执行了其他命令来永久阻止 iptables 启动;我不记得了。但是,现在我需要运行 iptables,但无法启动它。
有什么建议么?
[root@server1 log]# chkconfig iptables --list
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@server1 log]# service iptables status
iptables: Firewall is not running.
[root@server1 log]# service iptables start
[root@server1 log]# service iptables status
iptables: Firewall is not running.
更新:
我对此进行了进一步的查看并进行了 strace 检查/etc/init.d/iptables start
,发现没有这样的文件或目录的消息。
stat("/var/lock/subsys/iptables", 0x7ffff80481d0) = -1 ENOENT (No such file or directory)
因此我创建了这个文件,更改了权限,然后启动了 iptables。iptables 仍然没有启动,但是我现在收到一条关于“防火墙模块未加载”的消息。
该服务器已进行多项安全强化更改。这可能是问题所在吗?
touch /var/lock/subsys/iptables
chmod 640 /var/lock/subsys/iptables
service iptables start
service iptables status
iptables: Firewall modules are not loaded.
更新2:
创建subsys/iptables
文件后我重启了,文件不见了。我的其他所有服务都运行良好,启动/停止都没有问题。
更新 3:
为了确保 iptables 能够神奇地自行修复,我重启了服务器。但是重启后,服务不再运行。
-- 在我重启之前 --
[root@server1 ~]# who -r 运行级别 5 2014-09-10 13:47
[root@server1 ~]# chkconfig --list iptables iptables 0:关闭 1:关闭 2:开启 3:开启 4:开启 5:开启 6:关闭
[root@server1 ~]# service iptables status 表:过滤链输入(策略接受)num target prot opt 源目标
链转发(策略接受)num 目标 prot opt 源目标
链输出(策略接受)num 目标 prot opt 源目标
[root@server1 ~]# 立即关机 -r
-- 重启后 --
[root@server1 ~]# service iptables status iptables: 防火墙未运行。
[root@server1 ~]# chkconfig --list iptables iptables 0:关闭 1:关闭 2:开启 3:开启 4:开启 5:开启 6:关闭
答案1
我遇到了同样的问题,并找到了一个解决它的简单方法:
确保您的系统有 iptables 的配置文件:
ls -l /etc/sysconfig/iptables
就我而言,我在此文件夹中发现了两个文件:
iptables-config iptables.old
您应该将 iptables.old 重命名为 iptables(或者创建一个新的),因为只会
iptables
被接受。尝试再次启动 iptables。
service iptables start iptables: Applying firewall rules: [ OK ]
答案2
我今天也遇到了同样的问题。结果发现问题出在使用域名而不是 IP 地址的规则。我怀疑服务器在网络连接可用之前尝试启动 iptables。因此无法进行域名解析,因此 iptables 无法启动,尽管系统启动并运行时 iptables 服务没有问题,因为网络已启动并且 DNS 查找当时成功。
寓意是:
1) 永远不要在 iptable 规则中使用域名代替 IP 地址。我知道这个规则,但我粗心地忽略了它。:-/
2)配置并正确测试如果主配置表无法应用,则将应用备用表 /etc/sysconfig/iptables.fallback 和 /etc/sysconfig/ip6tables.fallback(请参阅https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-Firewalls-Basic_Firewall_Configuration.html)这样可以避免你的系统被向所有人开放。
答案3
在我们的案例中
服务网络重启
yum 重新安装 -y iptables.x86_64
服务 iptables 重启-现在可以正常工作。