linux下的route命令详解

来源:互联网 发布:linux vnc服务 编辑:程序博客网 时间:2024/06/06 16:26

什么是路由表?

路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路
由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表,表中包含的信息决定了数据转发的策略。
分为:静态路由表和动态路由表

route命令

作用:route命令用于显示和操作IP路由表。 ( 加上-n参数就是在输出的信息中不打印主机名而直接打印ip地址。,如:加-n,default变为0.0.0.0)
注意:Linux下用route命令添加路由,不会永久保存,重启网卡或者重启机器该路由便失效。(永久保存方法,自行百度)

一、用法:① route   —— 打印路由表

Destination         Gateway           Genmask         Flags   Metric   Ref   Use   Ifacedefault            192.168.146.2      0.0.0.0           UG      0       0     0     eth0192.168.3.0            *              255.255.255.0     U       1       0     0     eth0192.168.77.0           *              255.255.255.0     U       0       0     0     eth0192.168.146.0          *              255.255.255.0     U       0       0     0     eth0
其中,Destination: 为"目标网络或目标主机";   
    Gateway: 为网关,如果没有就显示星号*;   
    Genmask :为网络掩码;
          Flags:旗标
U —— 路由是活动的;                       
H —— 目标是一部主机 (IP) 而非网域;                       
G —— 路由指向网关;                       
R —— 恢复动态路由产生的表项;                       
D —— 由路由的后台程序动态地安装;                       
M —— 由路由的后台程序修改;                       
! —— 这个路由将不会被接受(用来抵挡不安全的网域!)
 Metric: 路由距离、跳数(linux内核中没有使用);
 Ref: 路由项引用次数(linux 内核中没有使用)
 Use: 该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量。
 Iface: 该路由表项对应的输出接口,如eth0;

② route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]—— 添加路由设置

注意:gw  :gateway 的简写,即gw后面是网关
 dev :后面是接口,如eth0  (一般dev可以省略,直接写 eth0)
例如:route add default gw 192.168.77.1 eth0
 route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0(dev可省略,因为没有设置网关,所以Gateway为 *)
 route add -net 10.0.0.0 netmask 255.0.0.0 reject
 (设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。)

③ route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]—— 删除路由设置

注意:参数指定的方式与route add相似。
例如:route del default eth0
  del -net 192.56.76.0 netmask 255.255.255.0  eth0 

注意:当出现“SIOCADDRT: Network is unreachable”这个错误时,肯定是由于gw后面接的IP无法直接与您的网域沟通  (Gateway 并不在你的网域内)。   

二、举例

Destination     Gateway          Genmask         Flags   Metric   Ref   Use  Iface192.168.10.0    0.0.0.0          255.255.255.0    U       0        0     0    eth0169.254.0.0     0.0.0.0          255.255.0.0      U       0        0     0    eth00.0.0.0         192.168.10.30    0.0.0.0          UG      0        0     0    eth0
观察一下上面的路由排列顺序,依序是由小网域(192.168.10.0/24 是 Class C),逐渐到大网域(169.254.0.0/16 Class B) 最后则是预设路由 (0.0.0.0/0.0.0.0)。若我有一个传往 192.168.10.20 的封包要传递,那首先会找 192.168.10.0/24 这个网域的路由,找到了!所以直接由 eth0 传送出去;如果是传送到Yahoo的主机呢?Yahoo的主机IP是202.43.195.52,我通过判断 
1)不是 192.168.10.0/24,
2)不是 169.254.0.0/16 
3)0/0  时, OK !传出去了,透过eth0将封包传给192.168.10.30那部gateway主机啊!所以说,路由是有顺序的。
因此当你重复设定多个同样的路由时,例如在你的主机上的两张网路卡设定为相同网域的IP时,会出现什么情况?
Destination      Gateway        Genmask          Flags  Metric  Ref   Use   Iface192.168.10.0     0.0.0.0        255.255.255.0     U      0       0     0    eth0192.168.10.0     0.0.0.0        255.255.255.0     U      0       0     0    eth1
由于路由是依照顺序来排列与传送的,所以不论封包是由那个介面(eth0, eth1)所接收,都会由上述的eth0传送出去,
所以,在一部主机上面设定两个相同网域的IP本身没有什么意义!

三、WINDOWS下的route命令

①查看路由状态:route print
只查看ipv4(ipv6)路由状态:route print-4(-6)

②添加路由:route add 目的网络 mask 子网掩码 网关  (重启机器或网卡失效)
例如:route add 192.168.20.0 mask 255.255.255.0192.168.10.1

③添加永久:route -p add 目的网络 mask子网掩码网关
例如:route -p add 192.168.20.0 mask 255.255.255.0192.168.10.1

④删除路由:route delete 目的网络 mask 子网掩码
例如:route delete 192.168.20.0 mask255.255.255.0
0 0