Ping和Tracert是基于ICMP协议的常用网络诊断工具。ICMP即互联网控制消息协议(Internet Control Message Protocol),用于在IP网络中传递控制消息,如报告错误、交换状态信息等。这些消息为管理员诊断网络故障提供帮助。
一、Ping
为了正常的网络诊断需要,你可能需要允许防火墙主动Ping上下游设备,也可能需要允许上下游设备的Ping穿越防火墙。最简单的安全策略如【表1】所示。
【表 1】 安全策略示例-ICMP
但是,ICMP协议也经常被攻击者用来窥测网络或建立隐蔽通道。因此,如果你对安全性有更高的要求,可以自定义服务,仅开放特定类型的ICMP报文。
Ping需要使用两种类型的ICMP报文:Echo Request(Type 8)和Echo Reply(Type 0)。源端连续发送几个Echo Request报文,目的端收到之后,回送应答报文Echo Reply。如果在超时时间之内,应答报文到达源端,说明目的端可达。防火墙收到源端发出的Echo Request报文后,创建会话并转发报文,目的端返回的Echo Reply命中会话表转发。
【图 1】 Ping的基本工作原理
一般来说,要允许内部特定主机Ping出站,以排除外部网络的故障。在某些情况下,也可能会允许受信任的合作伙伴Ping内部网络中的设备。
【表 2】 安全策略示例-Ping
二、Tracert
Tracert主要用来显示数据包到达目的主机所经过的路径。Tracert使用三种ICMP报文:Echo Reply(Type 0)、Echo Request(Type 8)和Time Exceeded(Type 11)。使用PC机发起Tracert的详细过程如【图 2】 所示。以PC探测路由器为例,PC在发起Tracert命令时,以本地IP地址为源,以路由器地址为目的地址,封装ICMP Echo Request报文。
【图 2】 PC机发起Tracert的交互流程
首先发出的ICMP报文TTL=1,交换机收到以后,将TTL减1。此时,TTL=0,交换机丢弃报文,并回送一个Time Exceeded报文,源地址为交换机的地址。PC收到报文以后,就知道了自己的下一跳地址。
PC再次发出Echo Request报文,TTL=2。交换机收到以后,将TTL减1,并转发给防火墙。防火墙再减1,TTL=0。防火墙丢弃报文,并回送一个Time Exceeded报文,源地址为防火墙的地址,载荷为PC发出的Echo Request报文。PC收到报文以后,就知道了第二跳的地址。
PC重复这个过程,直到Echo Request报文到达真正的目的地址。此时,路由器回送Echo Reply报文给PC。
在Tracert过程中,源端发出Echo Request,目的端返回Echo Reply,会话建立和匹配的过程与Ping一样。对于探测路径中间设备返回的Time Exceeded报文,防火墙会提取载荷中的原始报文来匹配会话表。在状态检测机制下,你只需要为Tracert发起方向配置安全策略即可。也就是说,按照【表 2 】为Ping开放安全策略之后,Tracert业务也可以正常访问了。
需要说明的是,以上工作过程仅适用于Windows系统下的Tracert。UNIX-like操作系统中对应的工具是Traceroute。Traceroute默认使用UDP报文探测目的地址,并且故意选择33434~33534之间的目的端口(通常首次探测使用33434,第二次使用33435,以此类推)。因为这些端口并不存在,目标主机收到报文以后,会回送一个端口不可达的报文(Port Unreachable,ICMP type 3 code 3)。很多网络设备的处理方式与UNIX-like操作系统类似,例如华为防火墙、交换机产品,即以UDP报文发起探测。一些UNIX-like操作系统的Traceroute命令也提供了参数选项,可以使用ICMP Echo Request或者其他协议报文发起探测。
网络工程师在定位故障时,既可能使用基于ICMP探测的Tracert,也可能使用基于UDP探测的Traceroute。因此,你还需要放行探测发起方的UDP 33434-33534报文。完整的安全策略如【表 3 】所示。
【表 3】 安全策略示例-Tracert
标签:Tracert,运维,安全策略,报文,Ping,Echo,ICMP,Request From: https://www.cnblogs.com/o-O-oO/p/18390770