注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

金生丽水,雨润轩德

 
 
 

日志

 
 

Redhat iptables 故障案例  

2012-07-22 11:45:14|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       在配置redhat iptables 防火墙时,遇到如下几个问题:

1.  在启动防火墙时,系统报错:

 [root@redhat2-linux-2101 sysconfig]# service iptables restart
清除防火墙规则:                                           [确定]
把 chains 设置为 ACCEPT 策略:filter                       [确定]
正在卸载 Iiptables 模块:                                  [确定]
应用 iptables 防火墙规则:Bad argument `COMMIT'
Error occurred at line: 25
Try `iptables-restore -h' or 'iptables-restore --help' for more information.      

                                                                              [失败]
[root@redhat2-linux-2101 sysconfig]#

配置文件如下:

[root@redhat2-linux-2101 sysconfig]# cat iptables

     1  # Firewall configuration written by system-config-securitylevel
     2  # Manual customization of this file is not recommended.
     3  *filter
     4  :INPUT ACCEPT [0:0]
     5  :FORWARD ACCEPT [0:0]
     6  :OUTPUT ACCEPT [0:0]
     7  :RH-Firewall-1-INPUT - [0:0]
     8  -A INPUT -j RH-Firewall-1-INPUT
     9  -A FORWARD -j RH-Firewall-1-INPUT
    10  -A RH-Firewall-1-INPUT -i lo -j ACCEPT
    11  -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
    12  -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
    13  -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
    14  -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
    15  -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
    16  -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
    17  -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    18  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
    19  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    20  -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p tcp --dport 177 -j ACCEPT
    21  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    22  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
    23
    24  -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited            
    25  COMMIT     
    26  #the end

 

第25行的语句是 COMMIT,这是系统所必须的一句。如果注释掉,系统或报错提示需要commit。

经过检查,原因是在COMMIT语句之后有空格,经过在其他机器上测试,在添加空格后系统就会出现上述错误。如果是commit与上面一句之间没有明确使用回车断开,也会有此问题和错误提示,但使用cat命令查看看不到中间的空格,很容易误认为是commit是下一行,其实不是。

在网上搜索时,看到有人提到是内核参数问题,需要重新编译。不知道是否和这个有关系。

2. 修改上述内容后重新启动,仍报错:

[root@redhat2-linux-2101 sysconfig]# service iptables restart
清除防火墙规则:                                           [确定]
把 chains 设置为 ACCEPT 策略:filter                       [确定]
正在卸载 Iiptables 模块:                                  [确定]
应用 iptables 防火墙规则:Bad argument `COMMIT'
Error occurred at line: 25
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
                                                           [失败]
[root@redhat2-linux-2101 sysconfig]#

奇怪了,还会有啥问题呢?

查看日志看到如下信息:

Jul 22 11:15:20 OW2-linux-2101 kernel: ip_tables: udp match: only valid for protocol 17

后来想到,-m 状态过滤是否是针对TCP而言的,UDP协议没有连接状态,是否是因为-m 参数项中不能使用UDP协议呢。

将20行注释之后,iptables 重启启动正常。

将20行中 udp 177端口的许可更改到上面

-A RH-Firewall-1-INPUT -p udp -m udp --dport 177 -j ACCEPT

然后重新启动iptables 服务。

  评论这张
 
阅读(2993)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018