route

 route 程序对内核的IP路由表进行操作。它主要用于设置网络静态路由;
        # route add [-net|-host] 目标主机或网络 [netmask] [gw|dev]
         
        # route del [-net|-host] 目标主机或网络 [netmask] [gw|dev]
         

     
       
     
        -n   :数字地址形式代替解释主机名形式来显示地址。此项对检测为何你到域名服务器的路由发生故障的原因非常有用。
         
        -ee   :将产生包括选路表所有参数在内的大量信息
         
        add   :添加一条路由
         
        del   :删除一条路由
         
        -net  :路由目标 target 为网络。
         
        -host  :路由目标 target 为主机。
         
        netmask :为添加的路由指定网络掩码!
         
        gw    :通过一个网关进行包路由. 
 
[root@localhost /]# route -ee
       
Kernel IP routing table
       
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
       
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0     0     0      0
       
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0     0     0      0
       
127.0.0.0       *               255.0.0.0       U     0      0        0 lo       0     0      0
       
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0     0     0      0
       

     
       
     
        route add -net 127.0.0.0
        
            加一条普通的回环记录,它使用掩码 255.0.0.0 (从目标地址可以判断它是 A 类网)并与设备 "lo" 相关联 .
        

     
       
     
        route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
       
            给通过 "eth0" 的路由表添加一条指向网络 192.56.76.x 的路由。其中 C 类子网掩码修饰词并不是必须的,因为 192.* 是个 C 类的 IP 地址。这里可省略关键字 "dev"
        

     
       
     
        route add default gw 192.168.1.1
       
            加入一条缺省路由(如果无法匹配其它路由则用它)。使用此路由的所有包都将通过网关 192.168.1.1进行传输。
        

     
       
     
        route add 224.0.0.0 netmask 240.0.0.0 dev eth0
       
            这是一条模糊的命令,把它记录在案就可以让人们知道如何做了.此命令设定所有 D 类地址(用于组播)的路由通过 "eth0" 进行。这是用于带组播的内核正确的配置行
        
 
traceroute 跟踪数据包到达网络主机所经过的路由工具
traceroute 是用来发出数据包的主机到目标主机之间所经过的网关的工具。 traceroute 的原理是试图以最小的 TTL 发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关 ICMP 的应答。发送数据包的大小默认为 38 个字节。
traceroute [参数选项] hostname,域名或 IP地址
参数选项:
-i 指定网络接口,对于多个网络接口有用。比如 -i eth1 -i ppp1等;
-m 把在外发探测试包中所用的最大生存期设置为max-ttl次转发,默认值为30次;
-n 显示IP地址,不查主机名。当DNS不起作用时常用到这个参数;
-p port 探测包使用的基本UDP端口设置为port ,默认值是33434
-q n 在每次设置生存期时,把探测包的个数设置为值n,默认时为3
-r 绕过正常的路由表,直接发送到网络相连的主机;
-w n 把对外发探测包的等待响应时间设置为n秒,默认值为3秒;

     
       
     
[root@localhost /]# traceroute [url]www.sohu.com[/url]
       
traceroute: Warning: [url]www.sohu.com[/url] has multiple addresses; using 221.236.12.213
       
traceroute to cachechengdu2.a.sohu.com (221.236.12.213), 30 hops max, 38 byte packets
       
 1  192.168.1.1 (192.168.1.1)  2.866 ms  1.151 ms  1.614 ms
       
 2  219.144.172.1 (219.144.172.1)  8.660 ms  14.319 ms  9.305 ms
       
 3  222.90.205.53 (222.90.205.53)  10.858 ms  9.283 ms  9.101 ms
       
 4  125.76.189.81 (125.76.189.81)  10.005 ms  11.752 ms  11.039 ms
       
 5  pos-5-1-r1-1-xahj.sn.169.net (61.134.0.5)  9.478 ms  19.670 ms  13.776 ms
       
 6  202.97.37.177 (202.97.37.177)  9.645 ms  9.740 ms *
       
 7  222.213.1.202 (222.213.1.202)  268.279 ms  155.748 ms  105.458 ms
       
 8  222.213.1.202 (222.213.1.202)  119.202 ms  100.774 ms  102.015 ms
       
 9  221.236.8.4 (221.236.8.4)  116.087 ms  70.808 ms  140.186 ms
       
10  221.236.8.4 (221.236.8.4)  98.188 ms  63.292 ms  159.435 ms
       
11  221.236.12.213 (221.236.12.213)  96.436 ms  97.565 ms  85.184 ms
       

     
       
     
[root@localhost]# traceroute -m 10 sina.com.cn 把跳数设置为10次;
[root@localhost]# traceroute -n sina.com.cn 注:显示IP地址,不查主机名。
[root@localhost]# traceroute -p 6888 sina.com.cn 注:探测包使用的基本UDP端口设置6888
[root@localhost]# traceroute -q 4 sina.com.cn 注:把探测包的个数设置为值4
[root@localhost]# traceroute -r sina.com.cn 注:绕过正常的路由表,直接发送到网络相连的主机;
[root@localhost]# traceroute -w 3 sina.com.cn 注:把对外发探测包的等待响应时间设置为5秒;

     
       
     
 
traceroute 用法简单、最常用的用法
就是后面直接接 IP hostname 或域名;比如下面的示例;
[root@localhost]# traceroute sina.com.cn
traceroute to sina.com.cn (211.93.98.20), 30 hops max, 40 byte packets
 1 localdomain (192.168.1.1) 0.151 ms 0.094 ms 0.146 ms
 2 221.201.88.1 (221.201.88.1) 5.867 ms 7.588 ms 5.178 ms
 3 218.25.158.149 (218.25.158.149) 6.546 ms 6.230 ms 8.297 ms
 4 218.25.138.133 (218.25.138.133) 7.129 ms 7.644 ms 8.311 ms
......
注: 此例中,记录按序列号从 1 开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms ,其实就是 -q 的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 sina.com.cn ,表示向每个网关发送 4 个数据包;
有时我们 traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台 DNS 出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加 -n 参数来避免 DNS 解析,以 IP 格式输出数据;
如果在局域网中的不同网段之间,我们可以通过 traceroute 来排查问题所在, 是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到 traceroute 追踪数据包所经过的网关,提交 IDC 服务商,也有助于解决问题;
 
网络调试工具 包括网络测试工具和故障排查工具两大类。
配置网络的流程如下:
物理性硬件接通->配置网络 (通过网络配具工具) ->网络测试->网络诊断->成功
网络测试工具 ping
我们想知道一台主机的网络是否正常,这时就要用到 ping ping 工具是我们最常用的网络测试工具。根据 ping 主机的结果,我们能判断主机在网络上是否正常。如果出现连接不通或丢包的情况(防火墙阻挡 ICMP 应答的网络除外),我们就要用到网络配置工具或诊断工具出找出问题所在。一般的情况下,出现网络不通,可能与我们所做的网线接头有关,有时也与交换机或我集线器等网络设备是否正常有关,有时需要我们我重做网线或换个交换机(或集线器)的接口。
ping 的用法
ping [ 参数] 主机或ip
 
[root@localhost /]# ping [url]www.sina.com.cn[/url]
        

       
       
        PING
        jupiter.sina.com.cn (218.30.66.101) 56(84) bytes of data.
64 bytes from 218.30.66.101: icmp_seq=1 ttl=248 time=10.4 ms
64 bytes from 218.30.66.101: icmp_seq=2 ttl=248 time=13.0 ms
64 bytes from 218.30.66.101: icmp_seq=3 ttl=248 time=10.6 ms

     
       
     
[4]+  Stopped                 ping [url]www.sina.com.cn[/url]
注: ping 后面可以不接参数选项,直接接主机名、域名或 ip 地址;
解说:
ping 可以接主机名、域名或 IP 地址,在局域网中同网段主机与主机之间是否能通过主机名互相通信,目前有两种方法,一种是做 DNS 服务器,另一种方法是修改 /etc/hosts 。在不同网段的主机与主机之间,能否相互通信,还得要设置路由。
ping 的一些参数的用法;
-s 指定数据包的大小,单位是字节; 默认值是 56,当与8个字节的ICMP头数据结合时,又转化成 64字节的ICMP数据;
-l 进入正常的行为模式之前,尽可能快的发送多少个preload个数据包
-c count 发送(接收)count个数据包后停止;
-i 发送数据包之间的时间间隔;
-f 使ping包不断发送和产生,瞬间值极大。要小心使用,类似DDOS***。这个选项只有root权限用户可以执行;
-r 绕过路由表,直接向网络主机发送;
 
网络故障诊断工具和方法
ping 工具和应用测试方法,只是提供简单的处于网络的主机是否可用,但不会知道具体问题所在。所以我们有必要引入故障诊断这一概念;下面我们说说故障诊断的流程;
故障诊断流程:
* 网线做的是否规范,在乙太网络中,要知道交叉线和平行线的做法适用的网络是不一样的;
* 网络接口配置是否正确;
* DNS 客户端配置文件是否正确;
* 是否可以ping 通回环地址 127.0.0.1
* 是否可以用IP地址我ping通网络的主机;
* 是否可以ping通其它网段的主机;不同网络的主机沟通需要添加路由;
* 是否可以用telnethttpftpssh访问其它主机上相应对应的服务