« Server Push blocked by Compress - 压缩模式不能实现Server Push | Main | 配置Mediawiki支持短URL »

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
本文网址:http://www.hzqbbc.com/blog/arch/2006/08/iptables_eeeedn.html
 

August 06, 2006

IPtables 规则错误导致DNS查询失败之解决办法

受朋友之托,检查其主机上的iptables规则引起的dns问题。主要现象是打开了如下的规则后,squid就不能正常的查找主机的ip地址,dns解析试销。

# Generated by iptables-save v1.3.4 on Sun Aug  6 11:28:42 2006
*nat
:PREROUTING ACCEPT [293:39183]
:POSTROUTING ACCEPT [5:299]
:OUTPUT ACCEPT [5:299]
COMMIT
# Completed on Sun Aug  6 11:28:42 2006
# Generated by iptables-save v1.3.4 on Sun Aug  6 11:28:42 2006
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [949:834012]
-A INPUT -p tcp -m multiport --dports 21,25,80,81,110,143,3128 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT     
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
#-A INPUT -p udp -m udp -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec --limit-burst 10 -j ACCEPT      
-A INPUT -i lo -j ACCEPT        
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT             
-A INPUT -p tcp -m state --state INVALID,NEW -j DROP        
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP      
-A INPUT -p udp -m udp -j DROP
COMMIT
# Completed on Sun Aug  6 11:28:42 2006

当屏蔽了上述规则中#-A INPUT -p udp -m udp -j ACCEPT 的规则后,squid就无法正常工作了。在机器上用nslookup 查询主机名 + 外部dns ip,发现timeout,应该是udp包无法发送到对方的dns服务器53端口。

后来man了一下iptables,发现可以用LOG来记录ip包的情况,于是打开log,增加了如下的规则集:

-A INPUT -j LOG -p udp -m udp --log-prefix "DNS monitor: "

重新启动iptables,在/var/log/message里看到如下信息:

Aug 6 12:00:12 hostname DNS monitor: IN=eth0 OUT= MAC=00:14:5e:41:e0:16:00:0d:65:98:f7:80:08:00 SRC=w.x.y.z DST=a.b.c.d LEN=124 TOS=0x00 PREC=0x00 TTL=47 ID=38895 DF PROTO=UDP SPT=53 DPT=33036 LEN=104

注意这里的SPT=53 DPT=33036,检查一下规则发现放行的是目的地53口,没有发行源端口(即sport),估计问题在这里,于是增加一条记录:

-A INPUT -p udp -m udp --sport 53 -j ACCEPT

重新启动后,正常了。看来,没有log的帮助还一时搞不明白为什么。也怪平时没仔细研究iptables,嘿嘿,通过这次也受到教训了:-)

Posted by hzqbbc at August 6, 2006 12:01 PM

Comments

好久不见老大更新blog了。呵呵
受益了。^_^

Posted by: CnYouker at August 6, 2006 07:36 PM

老大就是厉害

Posted by: myhstone at August 6, 2006 09:43 PM

呵呵,高手。请把平时学习到的东西拿来分享一下,虽然有多数俺根本看不懂,但俺一直关注着你的Blog。

Posted by: yutiefeng at August 8, 2006 06:42 PM

Post a comment




Remember Me?

(you may use HTML tags for style)