两个网关(“防火墙”)系统中的一个失败了,所以我在replace硬件上生成了一个“完全相同的”,结果发现当我切换一台内部机器去通过新的网关时,ping失败了。 切换回来,它的作品。 所以,我尝试了一个IP ping,避免DNS,它的工作。 在故障排除期间,我发现如果通过旧的网关路由,我可以运行“挖掘”就好了,但是通过新的路由器,它会失败:
[root@MyHost sysconfig]# dig @67.100.88.26 google.com mx ; <<>> DiG 8.2 <<>> @67.100.88.26 google.com mx ; (1 server found) ;; res options: init recurs defnam dnsrch ;; res_nsend to server 67.100.88.26: Connection refused [root@MyHost sysconfig]#
如果我把它切换回另一个网关,一切正常。 这表明客户端框没有任何问题,但防火墙实际上并不完全相同,即使它似乎是。
我添加了丢弃数据包的日志logging,但内部系统完全没有!
请注意,这是隐含的DNS / iptables交互问题。 观察“修复DNS,你会解决你的问题”只是从不同的angular度来重述问题。
问题是:具体来说,关于这个防火墙的configuration是什么,当相同的机器,相同的操作系统等,在同样的iptablesconfiguration下工作正常时,以及与同样精确的testing系统(以及任何可能对/错的它的resolve.conf)。
(另外请注意:我认为这个问题没有评论为什么要投下这个蛮胆的)。
[root@MyHost sysconfig]# ping google.com ping: unknown host google.com [root@MyHost sysconfig]# ping 74.125.224.82 PING 74.125.224.82 (74.125.224.82) from 192.168.127.16 : 56(84) bytes of data. 64 bytes from 74.125.224.82: icmp_seq=0 ttl=53 time=46.425 msec 64 bytes from 74.125.224.82: icmp_seq=1 ttl=53 time=45.486 msec --- 74.125.224.82 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/mdev = 45.486/45.955/46.425/0.516 ms [root@MyHost sysconfig]#
新的防火墙,新的Fedora Core 14安装上的旧硬件 – 这两个网关系统与我可以做到的完全相同。
NetworkManager(适当)closures。
DNSconfiguration在防火墙和内部节点上似乎都很好 – 没有DNS服务(BIND等)在这里使用,只是公共DNS服务器。 从两个网关访问DNS服务都很好。
iptables指令“-A FORWARD -m状态 – 状态ESTABLISHED,相关的-j ACCEPT”应该使DNS消息毫无困难地通过,就像ping的例子一样,但是用挖掘,我只是不知道。
我添加了“-A INPUT -m limit -limit 3 / min -j LOG -log-prefix”FW-IN-DROP-DEFAULT“–log-tcp-options –log-ip-options”一个尝试的答案,而NO LOGGING是由于这个失败的DNS调用与这个例子中提到的ping相关的。
我不知道是否应该使用实际的MASQUERADING而不是SNAT / DNAT。
*nat :PREROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.127.0/24 -o eth0 -j SNAT --to-source 76.110.113.22 -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 192.168.127.50 -A PREROUTING -i eth0 -p tcp --dport 1234 -j DNAT --to-destination 192.168.127.61:99 -A PREROUTING -i eth0 -p tcp --dport 993 -j DNAT --to-destination 192.168.127.50 -A PREROUTING -i eth0 -p tcp --dport 995 -j DNAT --to-destination 192.168.127.50 COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -p icmp -j ACCEPT -A FORWARD -i lo -j ACCEPT -A FORWARD -i eth2 -j ACCEPT -A FORWARD -o eth2 -j ACCEPT -A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 192.168.127.50 --dport 25 -j ACCEPT -A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 192.168.127.61 --dport 99 -j ACCEPT -A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 192.168.127.50 --dport 993 -j ACCEPT -A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 192.168.127.50 --dport 995 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
你的问题是,DNS不能正常工作。
从防火墙的angular度来看,它不能分辨是否键入:
$ ping google.com
要么:
$ ping 2001:4860:800f::63
修复DNS,你会解决你的问题。
为了帮助诊断,请尝试添加一些规则,例如:
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "FW-IN-DROP-DEFAULT " --log-tcp-options --log-ip-options
在你的拒绝规则之前。 那么你会知道是否被丢弃。