有时为了排查网络的连通性需要用到Traceroute,然而有的设备默认并不开启路由跟踪,在排查故障的时候有时会要用到tracert来判断路由的正确性。
机房里有一台 H3C SecPath 和天融信防火墙相连,其他还有几台路由设备。在天融信上做了路由,访问的时候不通,由于路由设备较多,排查的时候使用tracert到H3C的设备就不通了,SecPath 没有ip ttl-expires enable、ip unreachables enable、ip df-unreachables enable这样的命令,于是考虑做访问策略,写了以下策略用在了SecPath的主机相连端口进方向:
rule 1 permit icmp icmp-type echo #回显请求
rule 2 permit icmp icmp-type echo-reply #回显应答
rule 3 permit icmp icmp-type ttl-exceeded #ICMP超时响应报文
rule 4 permit icmp icmp-type port-unreachable #ICMP端口不可达
然后trace经SecPath,还是不行,在官网找了资料,相关配置说:
firewall defend tracert 命令用来打开tracert 报文***防范功能
当时比较着急并未理解这句话的含义,把这个命令敲上了还是不行,为进一步排查打开了debug功能:
terminal debugging
terminal monitor
debugging firewall packet-filter all
找到了相关报文:
唯一觉得比较有问题的地方就是:rcvIfName(1023)=InLoopBack0
这里出现了一个环回接口,难道相关报文被丢到了InLoopBack0,查找配置文件没发现 InLoopBack0接口的配置,所以我觉得在图形界面里又该有相关设置,在最相关的“防火墙管理”、“***防范里”有一项“路由跟踪***”,将该项去掉,然后再试果然可以了!!
通过对比之前的配置文件发现少了一句firewall defend tracert,这时才明白这条命条是打开报文***防范功能,而不是tracert!一时疏忽竟绕了个大弯子。现在trace 也可以通过天融信防火墙,该条命令不但阻止本地路由被跟踪其他经过的报文也会被丢弃。
至此,具体配置可以这样:
1、在内部接口的IN方向:
rule 0 permit icmp source X.X.X.X 0 #想要允许的IP
以下规则禁止其他所有ping内网
rule 1 deny icmp destination 10.0.0.0 0.255.255.255 icmp-type echo
rule 2 deny icmp destination 172.16.0 0.15.255.255 icmp-type echo
rule 3 deny icmp destination 192.168.0.0 0.0.255.255 icmp-type echo
所有主机可以ping外网
rule 4 deny icmp icmp-type echo
其他类型的ICMP报文(tracert)禁止通行
rule 10 deny icmp
2、在设备外部接口的IN方向
无限制的IP
rule 0 permit icmp source X.X.X.X 0
允许所有主机ping外网的回显报文
rule 1 permit icmp icmp-type echo-reply
允许Tracert的回显信息
rule 2 permit icmp icmp-type ttl-exceeded
rule 3 permit icmp icmp-type port-unreachable #最好有这一条traceroute需要port-unreachable的ICMP返回包
rule 10 deny icmp #其他禁用
当然首先关闭防路由跟踪功能:undo firewall defend tracert
以上设置完后只有允许的IP可以无限使用ICMP,其他主机只能使用ping,且只能ping通外网地址,互联网用户不能使用ICMP与外网设备通信,这样设置相对安全。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。