00. 目录


文章目录


01. 命令概述

route命令​用来显示并设置linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

在linux系统中设置路由通常是为了解决以下问题:该linux系统在一个局域网中,局域网中有一个网关,能够让主机访问Internet,那么就需要将这台机器的ip地址设置为linux机器的默认路由。

要注意的是:直接在命令行下执行route命令来添加路由,不会永久保存。当网卡重启或者机器重启之后,该路由就失效了。可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。

02. 命令格式

route [-nNvee] [-FC] [<AF>]           List kernel routing tables
route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.
route {-h|--help} [<AF>] Detailed usage syntax for specified AF.
route {-V|--version} Display version/author and exit.

03. 常用选项

-v
选用细节操作模式
-A family
用指定的地址族(如`inet',`inet6')。
-n
以数字形式代替解释主机名形式来显示地址。此项对试图检测对域名服务器进行路由发生故障的原因非常有用。
-e
用netstat(8)的格式来显示选路表。-ee将产生包括选路表所有参数在内的大量信息。
-net
路由目标为网络。
-host
路由目标为主机。
-F
显示内核的FIB选路表。其格式可以用-e 和 -ee选项改变。
-C
显示内核的路由缓存。
del
删除一条路由。
add
添加一条路由。
target
指定目标网络或主机。可以用点分十进制形式的IP地址或主机/网络名。
netmask Nm
为添加的路由指定网络掩码。
gw Gw
为发往目标网络/主机的任何分组指定网关。注意:指定的网关首先必须是可达的。也就是说必须为该网关预先
指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组
将如何进行路由。这是BSD风格所兼容的。
metric M
把选路表中的路由值字段(由选路进程使用)设为M。
mss M
把基于此路由之上的连接的TCP最大报文段长度设为M字节。这通常只用于优化选路设置。默认值为536。
window W
把基于此路由之上的连接的TCP窗口长度设为W字节。这通常只用于AX.25网络和不能处理背对背形式的帧的设
备。
irtt I
把基于此路由之上的TCP连接的初始往返时间设为I毫秒(1-12000)。这通常也只用于AX.25网络。如果省略此
选项,则使用RFC1122的缺省值300ms。
reject
设置一条阻塞路由以使一条路由查找失败。这用于在使用缺省路由前先屏蔽掉一些网络。但这并不起到防火墙的
作用。
mod, dyn, reinstate
设置一条动态的或更改过的路由。这些标志通常只由选路进程来设置。这只用于诊断目的,
dev If
强制使路由与指定的设备关联,因为否则内核会自己来试图检测相应的设备(通常检查已存在的路由和加入路由
的设备的规格)。在多数正常的网络上无需使用。
如果dev If是命令行上最后一个指定的选项,那么可以省略关键字dev,因为它是缺省值。否则路由修改对象
(metric - netmask- gw - dev)无关紧要。

04. 参考示例

4.1 显示当前路由表

[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:


  • U Up表示此路由当前为启动状态。
  • H Host,表示此网关为一主机。
  • G Gateway,表示此网关为一路由器。
  • R Reinstate Route,使用动态路由重新初始化的路由。
  • D Dynamically,此路由是动态性地写入。
  • M Modified,此路由是由路由守护程序或导向器动态修改。
  • ! 表示此路由当前为关闭状态。

4.2 以数字形式代替解释主机名形式来显示地址

[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

4.3 添加一条路由

[root@localhost ~]# route add -net 192.168.1.0 netmask 255.255.255.0 dev ens33 
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

4.4 删除路由记录

[root@localhost ~]# route del -net 192.168.1.0 netmask 255.255.255.0 dev ens33
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

4.5 添加默认网关

[root@localhost ~]# route add default gw 172.16.0.2
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.2 0.0.0.0 UG 0 0 0 ens33
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

4.6 删除默认网关

[root@localhost ~]# route del default gw 172.16.0.2
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

4.7 屏蔽一条路由

[root@localhost ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
224.0.0.0 - 240.0.0.0 ! 0 - 0 -
[root@localhost ~]#

4.8 清除屏幕路由

[root@localhost ~]# route del -net 224.0.0.0 netmask 240.0.0.0 reject
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

4.9 所有去往172.16.0.8主机的数据包发往网关地址172.16.0.2

[root@localhost ~]# route add -host 172.16.0.8 gw 172.16.0.2
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
172.16.0.8 172.16.0.2 255.255.255.255 UGH 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

4.10 删除指定主机的数据包发往默认网关

[root@localhost ~]# route del -host 172.16.0.8 gw 172.16.0.2   
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 ens33
172.16.0.0 0.0.0.0 255.255.254.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#

05. 附录

参考:​​【Linux】一步一步学Linux系列教程汇总​