Ping命令利用ICMP协议工作,ICMP是一个比较复杂的协议,功能强大,也经常被黑客利用来攻击网络上的路由器和主机,所以目前的很多网络设备或防火墙都提供了禁用ICMP协议的功能。如Windows系统中自带的防火墙就提供了这样的设置,如果两台主机在网络正常连通的情况下无法彼此ping通,则可以考虑是否是系统防火墙的原因。
对于目前普遍采用的WindowsXP/Windows2003以及Windows7/Windows2008系统,系统防火墙设置有很大区别。
对于WindowsXP/Windows2003系统,在防火墙设置中打开“高级”选项,点击“ICMP”中的“设置”按钮,可以看到一个ICMP控制消息列表,如图所示。默认情况下,所有的ICMP控制消息都无法通过防火墙,如果我们希望ping命令的数据包能过,那么可以勾选“允许传入回显请求”,这样防火墙就不会过滤回显请求数据包了。
对于Windows7/Windows2008系统的防火墙,可以在“高级设置”的“入站规则”中启用“文件和打印机共享(回显请求 - ICMPv4-In)”规则,从而允许放行ICMP回显请求数据包。
或者我们也可以自己新建一条防火墙规则,以允许ping命令的数据包通过。操作步骤如下:
① 在“入站规则”上点击右键,执行“新建规则”;
② 在“规则类型”中选择“自定义”;
③ 在“程序”中选择将规则应用于所有程序;
④ 在“协议和端口”中选择协议类型为ICMPv4,也可以在这里点击右下角的“自定义”按钮,用于设置允许通过的ICMP消息类型,默认是允许所有消息全部通过;
⑤ 在“作用域”中将规则应用于所有的本地IP和所有的远程IP地址;
⑥ 在“操作”中对符合条件的数据选择“允许连接”;
⑦ 在“配置文件”中选择将规则应用于所有的网络类型;
⑧ 最后为规则起一个名称,比如“ping”。