linux跟踪路由的命令 linux系统路由跟踪命令( 二 )


格式:route add -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}
其中
参数{NETWORK-ADDRESS}: 用于指定网络地址
参数{NETMASK}: 用于指定子网掩码
参数{INTERFACE-NAME}: 用于指定接口名称,如eth0 。
例:
屏蔽一条路由 , 设置到指定网络为不可达 ,避免在连接到这个网络的地址时程序过长时间的等待
格式:route add -net {NETWORK-ADDRESS} netmask {NETMASK} reject
例:
删除路由设置,参数指定的方式与route add相似 。
格式:route del -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}
格式:route del -net {NETWORK-ADDRESS} netmask {NETMASK} reject
例:
注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就 失效 了; 要想永久保存 ,有如下方法:
1.在/etc/rc.local里添加
2.在/etc/sysconfig/network里添加到末尾
3./etc/sysconfig/static-router :
any net x.x.x.x/24 gw y.y.y.y
路由跟踪命令traceroute / tracert通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径 。
当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,
但基本上来说大部分时候所走的路由是相同的 。
linux系统中 , 我们称之为traceroute,在MS Windows中为tracert 。
traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间 。
一条路径上的每个设备traceroute要测3次 。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址 。
说明:
记录按序列号从1开始 , 每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数 。
探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4,表示向每个网关发送4个数据包 。
有时我们traceroute 一台主机时 , 会看到有一些行是以星号表示的 。
出现这样的情况 , 可能是防火墙封掉了ICMP的返回信息 , 所以我们得不到什么相关的数据包返回数据 。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因 。
当然如果某台DNS出现问题时 , 不能解析主机名、域名时,也会 有延时长的现象;
您可以加-n 参数来避免DNS解析,以IP格式输出数据 。
如果在局域网中的不同网段之间 , 我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题 。
如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;
但目前看来在国内解决这样的问题是比较困难的 , 就是我们发现问题所在,IDC服务商也不可能帮助我们解决 。
说明:
Traceroute的工作原理:
Traceroute最简单的基本用法是:traceroute hostname
Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field) 。
首先,traceroute送出一个TTL是1的IP datagram
(其实 , 每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,
当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1 。此时 , TTL变为0了,
所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息
(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后 , 

推荐阅读