今天在进行手机应用测试时,发现有一个从手机发到服务器的tcp请求,服务器收不到,通过wireshark抓取手机数据包,发现每次手机发送相应数据时,就会收到一条从服务器返回的icmp的包:
192.168.169.101 333.855613000 114.112.63.*** 192.168.169.101 ICMP 102 Destination unreachable (Host administratively prohibited) 192.168.169.101 Set
服务器拒绝了这个请求。通过查找资料,确认应该是服务器防火墙的问题。
首先查看服务器防火墙的状态,/etc/init.d/iptables status:
11 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
后面的icmp-host-prohibited跟自己抓包的日志很像,而且状态还是REJECT。
服务器用的是centos,打开服务器防火墙配置文件/etc/sysconfig/iptables,有这样的一条配置:
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
将这一条加#注释掉,再查看防火墙状态,上面的REJECT不见了,手机测试发送请求,服务器成功返回。