route命令

route命令

  route是路由的意思。
  route命令用来显示和维护Linux内核中的路由表。route主要作用是用来建立指定的静态路由。
  route命令最简单的用法是用来查看当前的路由表:

[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0 U     100    0        0 eth0
[root@localhost ~]#

  路由表通常包含Destionation(目标)、Gateway(网关)、Genmask(掩码)、Flags、Metric(Metric值)、Ref、Use Iface(使用的网络接口)。通常使用目标和掩码来表示一个范围的目标IP地址,例如目标为:192.168.1.0,掩码为:255.255.255.0,则表示192.168.1.0~192.168.1.255。
  如果接收到的数据包中的目标IP在路由表中没有找到,则会使用默认路由,即Destination为default的路由项。
  比较特殊的路由表项是,网关为*或者0.0.0.0,这表示这条路由是给网络接口配置ip地址时自动生成的路由表项。
  如果只希望显示IP地址而不是主机名,可以使用选项-n

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0 U     100    0        0 eth0

  添加向路由表添加一项:

[root@localhost ~]# route add -net 10.0.0.0/24 gw 192.168.1.1 dev eth0
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
10.0.0.0        192.168.1.1     255.255.255.0 UG    0     0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0 U     100    0        0 eth0

  删除路由表中的一项:

[root@localhost ~]# route del -net 10.0.0.0/24 dev eth0
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0 U     100    0        0 eth0
[root@localhost ~]#

添加和删除路由项时,如果dev是最后一个选项,则可以省略dev,如下:

route add -net 10.0.0.0/24 gw 10.0.0.1 eth0
route del -net 10.0.0.0/24 eth0

  route命令也可以使用netmask表示法:

route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1 dev eth0

  除了可以将网络指定为目标外,也可以将单个主机指定为目标。将主机指定为目标时无需指定netmask:

route add -host 10.0.0.0 gw 10.0.0.1 dev eth0

  使用route add添加路由表项,是临时的,重启之后就会失效。要使添加的路由表项永久有效,可以将添加路由的命令添加到文件/etc/sysconfig/network。
  也可以在/etc/sysconfig/network-scripts/route-<网络接口>中设置永久路由,例如:
    /etc/sysconfig/network-scripts/route-eth0
      10.0.0.0/24 via 10.0.0.1

  注:route命令在较新的系统已经标记为obsolete,即废弃,但是还可以使用。新系统中,使用ip route命令来替代route命令。