作用:查询一个主机到另一个主机的经过的路由的跳数、及数据延迟情况。

常用工具:traceroute mtr

mtr特点:能测试出主机到每一个路由间的连通性。

以下重点介绍traceroute命令。

traceroute原理

这些程序是利用IP数据包的存活时间(TTL)值来实现其功能的。

当一台计算机发送IP数据包时,会为数据包设置存活时间(TTL)值。每当数据包经过一个路由器,其存活时间值就会减 1。当存活时间减到 0 时,路由器将不再转发数据包,而是发送一个 ICMP TTL 数据包给最初发出数据包的计算机。

Traceroute 程序首先向目标主机发出 TTL 为 1 的数据包,发送数据包的计算机与目标主机之间的路径中的第一个路由器,在转发数据包时将数据包的 TTL 减 1,它发现 TTL 被减为了 0,于是向最初发出数据包的计算机发送一个 ICMP TTL 数据包,Traceroute 程序以此获得了与目标主机之间的路径上的第一个路由器的IP地址。后面 traceroute 程序依次向目标主机发送 TTL 为 2、3、4 … 的数据包,逐个探测出来与目标主机之间的路径上每一个路由器的 IP 地址。

实现

默认条件下,traceroute 首先发出 TTL = 1 的UDP 数据包,第一个路由器将 TTL 减 1 得 0 后就不再继续转发此数据包,而是返回一个 ICMP 超时报文,traceroute 从超时报文中即可提取出数据包所经过的第一个网关的 IP 地址。然后又发送了一个 TTL = 2 的 UDP 数据包,由此可获得第二个网关的 IP 地址。依次递增 TTL 便获得了沿途所有网关的 IP 地址。

注意点

并不是所有网关都会如实返回 ICMP 超时报文。处于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种 ICMP 报文,其余路由器或交换机也可能被管理员主动修改配置变为不返回 ICMP 报文。因此 Traceroute 程序不一定能拿到所有的沿途网关地址。所以,当某个 TTL 值的数据包得不到响应时,并不能停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。这个过程将一直持续到数据包发送到目标主机,或者达到默认或用参数指定的追踪限制(maximum_hops)才结束追踪。

依据上述原理,利用了 UDP 数据包的 Traceroute 程序在数据包到达真正的目的主机时,就可能因为该主机没有提供 UDP 服务而简单将数据包抛弃,并不返回任何信息。为了解决这个问题,Traceroute 故意使用了一个大于 30000 的端口号,因 UDP 协议规定端口号必须小于 30000 ,所以目标主机收到数据包后唯一能做的事就是返回一个 “端口不可达” 的 ICMP 报文,于是主叫方就将端口不可达报文当作跟踪结束的标志。

Traceroute参数介绍

一、默认使用的是UDP协议(30000以上的端口)
二、使用TCP协议 -T -p
三、使用ICMP协议介绍 -I

如测试www.3dns.com.cn经过的路由跳数

[root@localhost ~]# traceroute www.3dns.com.cn
traceroute to www.3dns.com.cn (111.75.255.90), 30 hops max, 60 byte packets
 1  gateway (192.168.254.2)  0.372 ms  0.187 ms  0.164 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
[root@localhost ~]# 

默认跳30跳,也可以改变默认设置。

看起来不是很直观,我们可以加入-n参数。

[root@localhost ~]# traceroute -n  www.3dns.com.cn
traceroute to www.3dns.com.cn (111.75.255.90), 30 hops max, 60 byte packets
 1  192.168.254.2  0.413 ms  0.249 ms  0.178 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *

加入-I发送ICMP的包,跟上面一样,发送三个包,可以看到每个包的延迟时间。

[root@localhost ~]# traceroute -In  www.3dns.com.cn
traceroute to www.3dns.com.cn (111.75.255.90), 30 hops max, 60 byte packets
 1  192.168.254.2  0.234 ms  0.229 ms  0.139 ms
 2  192.168.8.1  1.852 ms  1.851 ms  1.782 ms
 3  59.55.48.1  3.857 ms  5.115 ms  5.037 ms
 4  218.64.192.57  4.589 ms  4.845 ms  4.758 ms
 5  202.101.246.186  7.356 ms  7.691 ms  7.769 ms
 6  111.75.255.3  7.000 ms  7.539 ms  7.415 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *

发送TCP的包

[root@localhost ~]# traceroute -T -p 80 -n  www.3dns.com.cn
traceroute to www.3dns.com.cn (111.75.255.90), 30 hops max, 60 byte packets
 1  192.168.254.2  0.267 ms  0.287 ms  0.152 ms
 2  111.75.255.90  6.414 ms  8.526 ms  10.186 ms
[root@localhost ~]# 

或者可以使用mtr命令进行监控(没有安装,可以使用yum install mtr)
如输入mtr www.3dns.com.cn显示如下页面,而且是实时数据更新变动。

路由扫描_路由扫描
按q退出,或者ctrl+c

批量主机服务扫描

目的:1、批量主机存活扫描 (如fping命令) 2、针对主机服务扫描
作用:1、能更方便快捷获取网络中主机的存活状态。
2、更加细致、智能获取主机服务侦查情况。
典型命令:nmap ncat(传说中的瑞士军刀)

具体相关nmap命令的使用我会单独写一篇博客。