我有一个运行 CentOS 的带 lamp 堆栈的开发服务器:
[Prompt]# cat /etc/redhat-release
CentOS release 5.8 (Final)
[Prompt]# cat /proc/version
Linux version 2.6.18-308.16.1.el5xen ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-52)) #1 SMP Tue Oct 2 22:50:05 EDT 2012
[Prompt]# yum info iptables
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.anl.gov
* extras: centos.mirrors.tds.net
* rpmfusion-free-updates: mirror.us.leaseweb.net
* rpmfusion-nonfree-updates: mirror.us.leaseweb.net
* updates: mirror.steadfast.net
Installed Packages
Name : iptables
Arch : x86_64
Version : 1.3.5
Release : 9.1.el5
Size : 661 k
Repo : installed
.... Snip....
当我跑步时:
service --status-all
部分输出如下所示:
.... Snip....
httpd (pid xxxxx) is running...
Firewall is stopped.
Table: filter
Chain INPUT (policy DROP)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
....Snip....
iptables 已被加载到内核并且处于活动状态,如所显示的规则所示。
仅检查 iptables 就会返回与 status all 一样的规则:
[Prompt]# service iptables status
Table: filter
Chain INPUT (policy DROP)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
.... Snip....
启动或者重启iptables表示iptables已经成功加载到内核:
[Prompt]# service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
Loading additional iptables modules: ip_conntrack_netbios_n[ OK ]
[Prompt]# service iptables start
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
Loading additional iptables modules: ip_conntrack_netbios_n[ OK ]
我用 Google 搜索过“防火墙已停止。”并阅读了大量 iptables 指南以及 RHEL 文档,但是没有找到。
据我所知,没有“防火墙”服务,那么该行"Firewall is stopped."
指的是什么?
编辑- 这里有一些附加信息。
尽管服务状态输出“防火墙已停止”,但 iptables 仍在运行。
我向 iptables 添加了一条规则,将 ssh 访问限制为只有一个 IP 地址(不是我的 IP 地址),重新启动 iptables 后,我无法登录。
我有一个想法,这两个项目是一个接一个输出的,service --status-all
因为服务是按字母顺序输出的(只是猜测)。
那么,有人能解释为什么我会看到“防火墙已停止”。即使 iptables 规则有效且正常工作,我的服务状态输出也是如此吗?
解决方案
如果 iptables 或 ip6tables 被关闭,则会出现“防火墙已停止。”消息。
如果两者都关闭,则(完全相同的)消息将出现两次(如果 ip6 的消息表明它指的是 ip6,那不是很好吗)。
如果服务已打开,但规则表为空,您也会看到错误消息(就像我的 ip6 情况一样)。
信息由@Alexander Janssen提供。请参阅答案以获取 CentOS 5.8 默认 ip6 规则集的链接。
答案1
编辑:与 OP 聊天后,我们可以陈述以下事实:
它指的是服务iptables
和ip6tables
。
当服务ip6tables
开启(由chkconfig
)但没有任何规则时,会出现错误消息。
我建议设置默认的 IPv6 规则,就像 CentOS 5.8 安装中给出的那样。你可以采取这作为参考。这是从库存 5.8 安装中获取的。
希望现在一切都已经解决了 :)