Chinaunix首页 | 论坛 | 博客

qsh

  • 博客访问: 3939474
  • 博文数量: 1015
  • 博客积分: 15904
  • 博客等级: 上将
  • 技术积分: 8572
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-04 19:16
文章分类

全部博文(1015)

文章存档

2019年(1)

2017年(1)

2016年(19)

2015年(27)

2014年(30)

2013年(95)

2012年(199)

2011年(72)

2010年(109)

2009年(166)

2008年(296)

分类:

2011-12-21 20:14:35

 
traceroute 有使用两种:使用ICMP的和使用UDP的。Microsoft 使用ICMP,所以Windows系统上发出的traceRT应使用的是ICMP,而Unix系统使用ICMP和UDP结合方式的。

ICMP traceroute 方式
===========
使用ICMP Echo Request, Echo Reply and TTL-expired.

源发出 ICMP Equest,第一个request的TTL为1,第二个request的TTL为2,以后依此递增直至第30个;中间的router送回ICMP TTL-expired ( ICMP type 11) 通知source,(packet同时因TTL超时而被drop),由此source知晓一路上经过的每一个router;最后的destination送回ICMP Echo Reply。

所以中间任何一个router上如果封了ICMP Echo Request, traceroute就不能工作;如果封了type 11 (TTL-expired), 中间的router全看不到,但能看到packet 到达了最后的destination;如果封了ICMP Echo Reply,中间的全能看到,最后的destination看不到。

UDP traceroute:
==========
使用ICMP TTL-expired(type 11), ICMP port unreachable(type 3, code 3), UDP port >32768.

source发出UDP packet, source port使用随机的任何大于32768的高段port#, destination port # 从33434开始递增,直至33434+29,同时TTL从1开始依此递增,直至1+29=30(最多送30个)。中间的router送回 ICMP TTL-expired,使得source得知了中间的每一个router,最后的destination送回TTL-expired 和ICMP port unreachable。

本人在H3C交换机开放traceroute的acl如下:
rule  permit udp source-port gt 32768 destination-port gt 33434
rule  permit icmp

如果想禁止ping而打开traceroute只要添加如下acl条目:
deny ping icmp 8 0  echo request
阅读(1352) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~