我们可以用route命令来显示和操作本机的IP路由表。我们知道,要实现不同子网之间的通信,需要连接这些网络的路由器或者网关来实现ip数据包的转发。而路由,就是指当一个IP数据包从来源主机送到目的主机,所要经过的网络路径.

我们来看看route命令的基本参数和用法,在处理一些网络故障时,这个工具可能会被用到.

*********************************

*@author : xiaoyi.lee

*********************************

1 命令格式
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]] 

2 命令说明
Route命令是用于操作基于内核的ip路由表,主要作用是创建一个静态路由以实现IP数据包的转发。
当我们使用"add"或者"del"参数时,本机的路由表被修改.当然,如果只是想显示路由表当前的内容,直接输入route即可。

3 命令参数
-n      不解析名字,以数字形式显示
-v      显示详细的route信息
-c      show more information
-F     显示发送信息
-C     显示路由Cache
-f      清除本机的路由表 
-p      与 add 命令一起使用,可以使路由具有永久性。
 
add    添加一条新路由
del     删除一条路由


-net          目标地址是一个网络
-host        目标地址是一台主机
netmask  当添加一个网络路由时,需要使用网络掩码,子网掩码用于和网段IP做与运算,从而得知具体的网络IP
gw           路由数据包要通过的网关。注意:网关和本机处于同一个网络,而且还要本机能够联通到这个网关才能实现转发
metric      设置路由跳数,即tty数,每进过一个路由器,都会被减掉1.如果为0了,则这台router会丢弃这个IP包并回送一个                   ICMP目标网络不可达的响应包,通知主机转发失败.


4 命令演示

演示1  查看本地路由表

root@lixiaoyi-dev:/home/lixiaoyi# route
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
default         192.168.10.1    0.0.0.0         UG    1024   0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.10.0    *               255.255.255.0   U     0      0        0 eth0

简单说明:第一条时默认gateway,当要前往的IP不在本子网时,会查找路由表确定要通过哪一个端口发送数据包


演示2  添加一条路由,然后再删除它

root@lixiaoyi-dev:/home/lixiaoyi# route add -net 192.168.15.0 netmask 255.255.255.0 dev eth0
root@lixiaoyi-dev:/home/lixiaoyi# route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         192.168.10.1    0.0.0.0         UG    1024   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.15.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

root@lixiaoyi-dev:/home/lixiaoyi# route del -net 192.168.15.0 netmask 255.255.255.0 
root@lixiaoyi-dev:/home/lixiaoyi# route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         192.168.10.1    0.0.0.0         UG    1024   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

演示3  如何屏蔽转发数据到一个指定的网络

root@lixiaoyi-dev:/home/lixiaoyi# route add -net 192.168.15.0 netmask 255.255.255.0reject
root@lixiaoyi-dev:/home/lixiaoyi# route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         192.168.10.1    0.0.0.0         UG    1024   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.15.0    -               255.255.255.0   !    0      -        0-
可以看到最后面那一条路由记录已经失效了,显示为了!

演示4 删除和添加设置默认网关
如下面设置和删除默认网关192.168.1.1,  默认网关(0.0.0.0)就是在不知道往哪里转发数据包时,自动转向的这个地址,一般是带路由功能的设备. 命令的演示, 这里就不截图了,毕竟比较简单,如下:
root@lixiaoyi-dev:/home/lixiaoyi#route del default gw 192.168.1.1
root@lixiaoyi-dev:/home/lixiaoyi#route add default gw 192.168.1.1


演示5 如何永久保存修改的route配置信息

但是要注意的是,要想永久保存修改记录要使用配置文件才能做到.

在Linux中,有两个文件可以设定默认网关,如下:
(1)设置默认网关在整个系统中生效:
    root@lixiaoyi-dev:/home/lixiaoyi# vim /etc/sysconfig/network
       GATEWAY=XXX.XXX.XXX.XXX
(2)在网卡配置文件中设定默认网关:
    root@lixiaoyi-dev:/home/lixiaoyi# vim /etc/sysconfig/network-scripts/ifg-xxx  (xxx=如eth0)
       GATEWAY=XXX.XXX.XXX.XXX
说明:当这两个文件中的GATEWAY(网关)值不同时,会以网卡配置文件(2)的GATEWAY为准。

(3) 当然我们还可以手动修改每一个网络route配置文件,来加入静态路由,文件位置如下:
/etc/sysconfig/network-scripts/route-eth0           #手动修改配置文件设定静态路由所存储的位置
/etc/sysconfig/networking/devices/route-eht0    #使用图形化工具配置的静态路由其配置文件所存放的位置
注意:如果你找不到这两个文件,说明你的主机目前还没有连接到多个网段

我们可以设置如下,比如设置为都转向192.168.0.1,IP后面的24表示采用24位子网掩码,即使用255.255.255.0

root@lixiaoyi-dev:/home/lixiaoyi#vi/etc/sysconfig/network-scripts /route-eth0
192.168.2.0/24    via    192.168.0.1
192.168.3.0/24    via    192.168.0.1
192.168.4.0/24    via    192.168.0.1
192.168.5.0/24    via    192.168.0.1
192.168.6.0/24    via    192.168.0.1


最后,再补充说明一下会在整个系统中生效的网络设置参数,我们可以查看 /etc/sysconfig/network这个文件,其中的4个参数会在整个Linux系统中生效

文件: /etc/sysconfig/network
1   NETWORKING  =  yes|no                 #定义是否提供网络功能,yes为提供,no为不提供
2   HOSTNAME      =  主机名称             #修改后必须重启电脑
3   GATEWAY        =  网关IP地址          #这个参数也可以在网卡配置文件中定义
4   NISDOMAIN      =  NIS服务器名称    #用户名验证服务器地址


另外,要修改dns服务器ip,找到文件: /etc/resolv.conf

vim打开它, 如添加:  nameserver    202.96.133.250

再# service network restart   ,重启网络服务即可


以上,是我自己关于route的一些基础知识的总结笔记, author:  xiaoyi.lee