1. route命令功能介绍
route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。
要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;要想永久保存,可以保存到配置文件。linux 默认只支持一条默认路由,当重新启动网口时,会把其他默认路由去掉,只剩下一条该网口生成的默认路由。当然可以通过 route 命令手动添加多条默认路由,如果多条路由一样,则选择最开始找到的路由(排在前面的路由)。
2. route命令使用手册
2.1 命令格式
以下是Linux下route使用手册。
route [-CFvnee]
route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]
route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
route [-V] [--version] [-h] [--help]
2.2 常用选项
选项名 说明
-C 显示路由缓存
-F 显示发送信息
-v 显示详细的处理信息
-n 不解析名字
-V 显示版本信息
-net 到一个网络的路由表
-host 到一个主机的路由表
2.3 常用参数
add 增加路由记录
del 删除路由记录
target 目的网络或主机
gw 默认网关
mss 设置TCP的最大报文长度
dev 如果只是要指定由那一块网路卡连线出去,则使用这个设定
window 指定通过路由表的TCP连接的TCP窗口大小
reject 设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。
3. 显示操作路由表
3.1 显示路由表
在lUbuntu下打开终端,输入以下命令(命令提示符已省略):
~# route -ee
内核 IP 路由表
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
default 10.0.3.2 0.0.0.0 UG 100 0 0 enp0s8 0 0 0
default CloudGW.lan 0.0.0.0 UG 101 0 0 enp0s3 0 0 0
10.0.3.0 * 255.255.255.0 U 100 0 0 enp0s8 0 0 0
link-local * 255.255.0.0 U 1000 0 0 enp0s8 0 0 0
172.16.96.0 * 255.255.224.0 U 100 0 0 enp0s3 0 0 0
route命令的参数含义:
-n :不要使用通讯协定或主机名称,直接使用 IP 或 port number;
-ee :使用更详细的资讯来显示
显示路由表的主要字段的含义:
Destination 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关。
Gateway 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关。如果没有就显示星号(*)。
Genmask Destination 字段的网络掩码,Destination 是主机时需要设为 255.255.255.255,是默认路由时会设置为 0.0.0.0
Flags 标记
● U 该路由可以使用。
● H 该路由是到一个主机,如果没有设置该标志,说明该路由是到一个网络。
● G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地 是直接相连的。
● R 恢复动态路由产生的表项。
● D 该路由是由改变路由(redirect)报文创建的。
● M 该路由已被改变路由报文修改。
● ! 这个路由将不会被接受。
Metric 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的。
Ref 由项引用次数 。
Use 此路由项被路由软件查找的次数。
Iface 网卡名。
MSS TCP的最大报文长度。
Window 通过路由表的TCP连接的TCP窗口大小。
irtt TCP连接的最初往返时间。
3.2 操作路由
3.2.1 添加路由
route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
添加到主机172.16.10.2的路由,显示路由表。
~# route add -host 172.16.10.2 dev enp0s8
~# route
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
default 10.0.3.2 0.0.0.0 UG 100 0 0 enp0s8
default 172.16.96.254 0.0.0.0 UG 101 0 0 enp0s3
10.0.3.0 * 255.255.255.0 U 100 0 0 enp0s8
link-local * 255.255.0.0 U 1000 0 0 enp0s8
172.16.10.2 * 255.255.255.255 UH 0 0 0 enp0s8
172.16.96.0 * 255.255.224.0 U 100 0 0 enp0s3
ping上面添加的主机,-c count指定ECHO数据包的个数。
~# ping -c 4 172.16.10.2
PING 172.16.10.2 (172.16.10.2) 56(84) bytes of data.
From 10.0.3.15 icmp_seq=1 Destination Host Unreachable
From 10.0.3.15 icmp_seq=2 Destination Host Unreachable
From 10.0.3.15 icmp_seq=3 Destination Host Unreachable
From 10.0.3.15 icmp_seq=4 Destination Host Unreachable
--- 172.16.10.2 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3051ms
pipe 4
可以看到icmp差错报告信息——主机不可达,说明要ping的主机不存在,现在试试ping www.alipay.com。
~# ping -c 4 www.alipay.com
PING rz-lb2.internet.v6.spanner.alipaydns.com (110.76.15.34) 56(84) bytes of data.
64 bytes from 110.76.15.34: icmp_seq=1 ttl=36 time=1135 ms
64 bytes from 110.76.15.34: icmp_seq=2 ttl=36 time=111 ms
64 bytes from 110.76.15.34: icmp_seq=3 ttl=36 time=3194 ms
64 bytes from 110.76.15.34: icmp_seq=4 ttl=36 time=2178 ms
--- rz-lb2.internet.v6.spanner.alipaydns.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3040ms
rtt min/avg/max/mdev = 111.137/1654.978/3194.183/1150.741 ms, pipe 2
最后一行是往返时间的最小值/平均值/最大值/算术平均值,单位ms。
3.2.2 删除路由
route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
删除上面添加的到主机172.16.10.2的路由,显示路由表。
~# route del -host 172.16.10.2 dev enp0s8
~# route
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
default 10.0.3.2 0.0.0.0 UG 100 0 0 enp0s8
default CloudGW.lan 0.0.0.0 UG 101 0 0 enp0s3
10.0.3.0 * 255.255.255.0 U 100 0 0 enp0s8
link-local * 255.255.0.0 U 1000 0 0 enp0s8
172.16.96.0 * 255.255.224.0 U 100 0 0 enp0s3
3.2.3 设置默认路由
~#route add default gw 172.16.96.254
~# traceroute www.baidu.com
root@elijah-VirtualBox:~# traceroute www.baidu.com
traceroute to www.baidu.com (180.101.49.12), 30 hops max, 60 byte packets
1 CloudGW.lan (172.16.96.254) 33.737 ms 33.587 ms 33.544 ms
2 58.210.35.225 (58.210.35.225) 33.508 ms 33.468 ms 33.432 ms
3 221.224.227.9 (221.224.227.9) 33.039 ms 32.861 ms 32.816 ms
4 * * *
5 * * *
6 58.213.94.2 (58.213.94.2) 31.810 ms 544.424 ms 58.213.94.106 (58.213.94.106) 544.265 ms
7 58.213.94.134 (58.213.94.134) 544.218 ms 58.213.94.86 (58.213.94.86) 544.113 ms *
8 58.213.96.90 (58.213.96.90) 543.813 ms 58.213.96.58 (58.213.96.58) 543.625 ms 543.580 ms
9 * * *
10 * * *
3.2.4 设定指定的网段不可到达
route add -net 10.0.0.0 netmask 255.0.0.0 reject
~# route add -net 224.0.0.0 netmask 240.0.0.0 reject
~# route
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
default 10.0.3.2 0.0.0.0 UG 100 0 0 enp0s8
default 172.16.96.254 0.0.0.0 UG 101 0 0 enp0s3
10.0.3.0 * 255.255.255.0 U 100 0 0 enp0s8
link-local * 255.255.0.0 U 1000 0 0 enp0s8
172.16.96.0 * 255.255.224.0 U 100 0 0 enp0s3
224.0.0.0 - 240.0.0.0 ! 0 - 0 -