route命令用于在本地IP路由表中显示和修改条目。使用不带参数的ROUTE可以显示帮助。
语法:
route [-f] [-p] [command [destination] [mask netmask] [gateway] [metric] [if interface]
参数说明:
-f
清除所有不是主路由(子网掩码为255.255.255.255的路由)、环回网络路由(目标为127.0.0.0,子网掩码为 255.255.255.0的路由)或多播路由(目标为224.0.0.0,子网掩码为240.0.0.0的路由)的条目的路由表。如果它与命令之一(例如Add、Change或Delete)结合使用,表会在运行命令之前清除。
-p
与Add命令共同使用时,指定路由被添加到注册表并在启动TCP/IP协议的时候初始化IP路由表。默认情况下,启动TCP/IP协议时不会保存添加的路由,与Print命令一起使用时,则显示永久路由列表。所有其他的命令都忽略此参数。永久路由存储在注册表中的位置是 HKEY_LOCAL_MACH/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/PersistentRoutes
command
指定要运行的命令。下表列出了有效的命令。
destination
指定路由的网络目标地址。目标地址可以是一个IP网络地址(其中网络地址的主机地址位设置为0),对于主机路由是IP地址,对于默认路由是0.0.0.0。mask
subnetmask
指定与网络目标地址相关联的网掩码(又称子网掩码)。子网掩码对于IP网络地址可以是一适当的子网掩码,对于主机路由是255.255.255.255
,对于默认路由是0.0.0.0。如果忽略,则使用子网掩码255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系,目标地址不能比它对应的子网掩码更为详细。换句话说,如果子网掩码的一位是0,则目标地址中的对应位就不能设置为1。
gateway
指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点IP地址。对于本地连接的子网路由,网关地址是分配给连子网接口的IP地址。对于要经过一个或多个路由器才可用到的远程路由,网关地址是一个分配给相邻路由器的、可直接达到的IP地址。
metric metric
为路由指定所需跃点数的整数值(范围是1~9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。
if interface 指定目标可以到达的接口的接口索引。使用Route print命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制的值。对于十六进制值,要在十六进制数的前面加上0x。忽略if参数时,接口由网关地址确定。
注意:路由表中跃点数一列的值较大是由于允许TCP/IP根据每个LAN接口的IP地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度,调整了每个接口的路由跃点数,因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数,请在每个 LAN连接的TCP/IP协议的高级属性中禁用自动确定接口跃点数。
如果在systemrootSystem32DriversEtc文件夹的本地网络文件中存在适当的条目,名称可以用于Destination。只要名称可以通过“域名系统”(DNS)查询这样的标准主机名解析技术分解为IP地址,就可以将其用于Gateway,DNS查询使用存储在 systemrootSystem32DriversEtc
文件夹下的本地主机文件和NetBIOS 名称解析。
如果是Print或Delete命令,可以忽略Gateway参数,使用通配符来表示目标和网关。Destination的值可以是由星号(*)指定的通配符。如果指定目标含有一个星号(*)或问号(?),它被看作是通配符,只打印或删除匹配的目标路由。星号代表任意一字符序列,问号代表任一字符。例如, 10.*.1、192.168.*、127.*和*224*都是星号通配符的有效使用。
使用了无效的目标和子网掩码(网掩码)值的组合,会显示“Route bad gateway address
netmask”错误消息。目标中有一位或多位设置为1,而其在子网掩码中的对应位设置为0时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的1和表示目标主机地址部分的一连串的0两个部分。查看目标以确定目标的主机地址部分(由子网掩码所定义)是否有些位设置成了1。
只有当TCP/IP协议在网络连接中安装为网络适配器属性的组件时,该命令才可用。
例举说明:
例子1:要显示IP路由表的完整内容,执行以下命令:
route print
查看当前本机的路由表; 有三部分,接口列表,IPv4路由表,IPv6路由表;
例子2:要显示IP路由表中以10.开始的路由,执行以下命令:
route print 10.*
例子3:要添加默认网关地址为192.168.12.1的默认路由,执行以下命令:
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
例子4:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1的路由,执行以下命令:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
例子5:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1的永久路由,执行以下命令:
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
例子6:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1,跃点数为7的路由,执行以下命令:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
例子7:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1,接口索引为0x3的路由,执行以下命令:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
例子8:要删除目标为10.41.0.0,子网掩码为255.255.0.0的路由,执行以下命令:
route delete 10.41.0.0 mask 255.255.0.0
例子9:要删除IP路由表中以10.开始的所有路由,执行以下命令:
route delete 10.*
例子10:要将目标为10.41.0.0,子网掩码为255.255.0.0的路由的下一个跃点地址由10.27.0.1更改为10.27.0.25,执行以下命令:
route change 10.41.0.0 mask 255.255.0.0 10.27.0.25
Route
-f
|
清除所有网关入口的路由表。
|
-p
|
与 add 命令一起使用时使路由具有永久性。
|
Command
|
指定您想运行的命令 (Add/Change/Delete/Print)。
|
Destination
|
指定该路由的网络目标。
|
mask Netmask
|
指定与网络目标相关的网络掩码(也被称作子网掩码)。
|
Gateway
|
指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。
|
metric Metric
|
为路由指定一个整数成本值标(从 1 至 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。
|
if Interface
|
为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引,使用 route print 命令的显示功能。可以使用十进制或十六进制值进行接口索引。
|
/?
|
在命令提示符处显示帮助。
|
Linux 内核的路由表
通过 route
命令查看 Linux 内核的路由表:
[root@VM_139_74_centos ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
10.139.128.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-0ab63c131848
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-bccbfb788da0
172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7485db25f958
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.139.128.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
10.139.128.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-0ab63c131848
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-bccbfb788da0
172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7485db25f958
各列字段说明:
列 | 含义 |
---|---|
Destination | 目标网络或目标主机。Destination 为 default(0.0.0.0 )时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1 ) |
Gateway | 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关 |
Genmask | Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255 ,是默认路由时会设置为 0.0.0.0 |
Flags | 标记,含义参考表格后面的解释 |
Metric | 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。) |
Ref | 路由项引用次数 (不在Linux内核中使用。) |
Use | 此路由项被路由软件查找的次数 |
Iface | 网卡名字,例如 eth0 |
Flags 含义:
- U 路由是活动的
- H 目标是个主机
- G 需要经过网关
- R 恢复动态路由产生的表项
- D 由路由的后台程序动态地安装
- M 由路由的后台程序修改
- ! 拒绝路由
Linux 内核的路由种类
主机路由
路由表中指向单个 IP 地址或主机名的路由记录,其 Flags 字段为 H。下面示例中,对于 10.0.0.10
这个主机,通过网关 10.139.128.1
网关路由:
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
...
网络路由
主机可以到达的网络。下面示例中,对于 10.0.0.0/24
这个网络,通过网关 10.139.128.1
网关路由:
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 10.139.128.1 255.255.255.0 UG 0 0 0 eth0
默认路由
当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的 Destination
是 default 或 0.0.0.0
。
[root@VM_139_74_centos ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
route 命令
route 命令可以显示或设置 Linux 内核中的路由表,主要是静态路由。
对于局域网中的 Linux 主机,要想访问 Internet,需要将局域网的网关 IP 地址设置为这个主机的默认路由。在命令行中通过 route
命令添加的路由在网卡重启或机器重启后失效。可以在 /etc/rc.local
中添加 route 命令来保证路由设置永久有效。
选项:
-A
:设置地址类型-C
:打印 Linux 内核的路由缓存-v
:显示详细信息-n
:不执行 DNS 反向查找,直接显示数字形式的 IP 地址-e
:netstat 格式显示路由表-net
:到一个网络的路由表-host
:到一个主机的路由表
参数:
- add:增加路由记录
- del:删除路由记录
- target:目的网络或目的主机
- gw:设置默认网关
- mss:设置TCP的最大区块长度(MSS),单位MB
- window:指定通过路由表的TCP连接的TCP窗口大小
- dev:路由记录所表示的网络接口
添加路由 add
可以添加一条可用路由,或添加一条要屏蔽的路由。
添加路由
添加主机路由
添加主机路由时,需要指定网络 ID 和主机 ID,此时需要设置 netmask 255.255.255.255
:
[root@VM_139_74_centos ~]# route add -net 10.0.0.10 netmask 255.255.255.255 gw 10.139.128.1 dev eth0
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
...
添加网络路由
添加网络路由时,只需指定网络 ID,通过 netmask
设置掩码长度:
[root@VM_139_74_centos ~]# route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.139.128.1 dev eth0
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 10.139.128.1 255.255.255.0 UG 0 0 0 eth0
...
添加添加同一个局域网的主机
不指定 gw 选项时,添加的路由记录不使用网关:
[root@VM_139_74_centos ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0
...
屏蔽路由
[root@VM_139_74_centos ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
224.0.0.0 - 240.0.0.0 ! 0 - 0 -
...
删除路由记录
跟添加路由类似,可以删除一条可用路由,或删除一条屏蔽的路由。
删除可用路由
route del -net 224.0.0.0 netmask 240.0.0.0
删除屏蔽的路由
route del -net 224.0.0.0 netmask 240.0.0.0 reject
删除和添加设置默认网关
添加或删除默认网关时,Linux 会自动检查网关的可用性:
[root@VM_139_74_centos ~]# route add default gw 192.168.1.1
SIOCADDRT: Network is unreachable
[root@VM_139_74_centos ~]# route del default gw 192.168.1.1
SIOCDELRT: No such process