Linux traceroute追踪路由命令详解(3)

通常,特定的traceroute方法可能必须由-M名称来选择,但是大多数方法都有它们简单的命令行开关(如果存在,您可以在方法名称之后看到它们)。

method

 

说明

 

default

 

传统的、古老的追踪方法。默认使用。

探测包是具有所谓“不可能”目标端口的UDP数据报。第一个探针的“不可能”端口是33434,然后每个下一个探针的端口增加一个。由于预期端口未使用,目标主机通常返回“ICMP不可访问端口”作为最终响应。(但是,没有人知道当某些应用程序侦听这样的端口时会发生什么)。

这个方法普通用户就可以使用。

 

icmp       -I

 

目前最常用的方法是使用ICMP回波数据包作为探针。如果您可以ping(8)目标主机,则icmp跟踪也适用。

 

tcp        -T

 

众所周知的现代方法,旨在绕过防火墙。使用常量目标端口(默认为80,http)。

如果网络路径中存在一些过滤器,那么很可能任何“不太可能”的UDP端口(对于默认方法而言)或甚至ICMP回波(对于ICMP)都会被过滤,并且整个跟踪只会在这样的防火墙上停止。要绕过网络过滤器,我们必须只使用允许的协议/端口组合。如果我们追踪一些,比如说,邮件服务器,那么更有可能“-T –p 25”可以到达它,即使-我不能。

这种方法使用了众所周知的“半开放技术”,它可以防止目标主机上的应用程序看到我们的探测。通常,发送TCP syn。对于未被监听的端口,我们接收TCP重置,一切都完成了。对于活动侦听端口,我们接收TCP syn ack,但通过TCP重置(而不是预期的TCP ack)应答,这样即使应用程序从未注意到,远程TCP会话也会被删除。

这个方法有以下的一些选项,默认的是synsysctl

syn,ack,fin,rst,psh,urg,ece,cwr,在任意组合中为探测包设置指定的tcp标志。

flags=num,将TCP标头中的标志字段设置为num

ecn,发送带有TCP标志ECA和CWR的syn数据包(用于显式拥塞通知,rfc 3168)

sack,timestamps,window_scaling,在传出探测包中使用相应的tcp标头选项。

sysctl,对上面的TCP头选项和ecn使用当前sysctl(“/proc/sys/net/*”)设置。默认情况下始终设置,如果没有其他指定的话

mss=num,对maxseg tcp报头选项使用num值(当syn)

 

tcpconn

 

TCP方法的初始实现,简单使用CONNECT(2)调用,完成TCP会话的完全打开

 

udp       -U

 

使用带有常量目标端口的UDP数据报(默认为53,DNS)。也打算绕过防火墙。

注意,与TCP方法不同的是,目标主机上的相应应用程序总是接收我们的探测(带有随机数据),而且大多数都很容易被它们混淆。但是,大多数情况下,它不会响应我们的数据包,因此我们永远不会看到跟踪中的最后一跳。(幸运的是,似乎至少DNS服务器会以愤怒的方式回复)。

此方法不需要特权。

 

udplite   -UL

 

对探针使用udplite数据报(具有固定的目标端口,默认为53),此方法不需要特权。选项:

coverage=num,设置udplite范围num

 

raw       -P proto

 

发送协议原始数据包。选项:

protocol=proto,使用IP协议Proto(默认253)

 

4、说明

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12154.html