(8)route命令(每周一个linux命令系列)
在linux和windows中都有路由配置的方法,在日常开发中也经常遇到,比如自己公司各个网站内部开了openvpn这种应用以后,路由配置不好有可能导致改走vpn的不走,网络卡顿甚不能正常上网
1.命令格式
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.1 选项说明
-C 显示路由缓存cache。
-F 显示发送信息
-v 详细的处理信息。
-n 不解析名字。
-ee 使用更详细的资讯来显示
-V 显示版本信息。
-net 到一个网络的路由表(常用)。
-host 到一个主机的路由表(常用)。
2.2 参数说明
add 增加路由记录。
del 删除路由记录。
target 目的网络或目的主机。
gw 设置默认网关。gateway 的简写,后续接的是网关的IP。
mss 设置TCP的最大区块长度(MSS),单位MB。
window 指定通过路由表的TCP连接的TCP滑动窗口大小。
dev 用于指定由哪一块网路卡出去,后面接网卡名 eth0。
reject 设置到指定网络为拒绝访问(不可达),避免某些到这个网络的连接超时和等待,直接返回网络不可达。
metric 跃点数
3.常用命令
3.1 添加和删除路由
命令:route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]
增加/删除路由的相关参数:
-net 表示到为一个网域。
-host 表示到单部主机。
netmask 网络掩码 决定一个网域的大小。
gw gateway 的简写,后续接的是 IP 的数值,与 dev 不同。
dev 用于指定由哪一块网路卡出去,后面接网卡名eth0。
- 添加/删除到指定网络的路由
route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}
NETWORK-ADDRESS:用于指定网络地址。
NETMASK:用于指定子网掩码。
INTERFACE-NAME:用于指定接口名称,如eth0。
示例:
#增加或删除到网域192.56.76.X的路由 通过eth0网卡
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
route del -net 192.56.76.0 netmask 255.255.255.0 dev eth0
- 添加/删除路由到指定网络为不可达
设置到指定网络为不可达(应用场景不多)
route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} reject
NETWORK-ADDRESS 网络地址。
NETMASK 网络掩码。
比如你的vpn是10.8.0.X,想禁止到这个网络
例1:route add -net 10.8.0.0 netmask 255.255.255.0 reject
例2:route del -net 10.8.0.0 netmask 255.255.255.0 reject
3.2 添加/删除默认网关
route {add | del } default gw {IP-ADDRESS} {INTERFACE-NAME}
IP-ADDRESS 用于指定网关的IP地址。
INTERFACE-NAME 用于指定网卡名称,如eth0。
例:
1. route add default gw 192.168.1.1 dev eth0
2. route del default gw 192.168.1.1 dev eth0
3. route add default gw 192.168.233.2 dev eth1 metric 99
3.3 查询路由信息
route 或者 route -nee
-n 不要使用通讯协定或主机名称,直接使用 IP 或 port number。
-ee 使用更详细的资讯来显示。
输出信息:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 0 0 0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 0 0 0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 0 0 0
参数详解:
Destination 目标网络或目标主机。值为0.0.0.0(有时候显示default)时,表示这个是默认网关,外出所有的数据都发到这个网关。
Gateway 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,不需要经过网关。
Genmask Destination的网络掩码,Destination 是主机时设为 255.255.255.255,默认路由设置为 0.0.0.0
Flags 标记
● U 该路由可以使用。
● H 该路由是到一个主机(host),也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
● G 该路由是到一个网关(gateway)。如果没有设置该标志,说明目的地 是直接相连的。
● R 恢复动态路由产生的表项。
● D 该路由是由改变路由(redirect)报文创建的。
● M 该路由已被改变路由报文修改。
● ! 这个路由将不会被接受。
Metric 路由距离(跃点数),到达指定网络所需的中转数,是大型局域网和广域网设置所必需的。
Ref 路由项引用次数 。
Use 此路由项被路由软件查找的次数。
Iface 网卡名字,例如 eth0。
4.路由匹配过程
当主机需要向某个IP地址发起通信时,它会对路由表进行匹配,以确定如何发送数据包。匹配过程如下:
-
把通信的目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项,继续下一条目比对
-
当计算完路由表中所有的路由项后,选择记录下的路由项中的最长匹配路由(网络掩码中具有最多“1”位的路由项)来和此目的IP地址进行通信。
-
如果存在多个最长匹配路由,那么选择具有最低跃点数的路由项。
-
如果存在多个具有最低跃点数的最长匹配路由,那么:均根据最长匹配路由所对应的网络接口在网络连接的高级设置中的绑定优先级来决定(一般有线(eth0) > 无线 (wlan0) > 移动信号(4G))。
-
如果优先级一致,则选择最开始找到的最长匹配路由。(排在前面的路由)
-
匹配不到就会走默认路由
4.1 查看路由匹配过程
traceroute 域名/ip
例如:traceroute www.baidu.com
输出:
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
1 192.168.0.1 (192.168.0.1) 0.484 ms 0.467 ms 0.460 ms
2 * * *
3 100.67.69.6 (100.67.69.6) 1.011 ms 1.011 ms 100.67.69.2 (100.67.69.2) 1.031 ms
4 61.48.75.37 (61.48.75.37) 0.996 ms 2.544 ms 2.539 ms
5 61.135.33.197 (61.135.33.197) 5.611 ms 61.148.146.181 (61.148.146.181) 1.412 ms 61.148.157.109 (61.148.157.109) 1.154 ms
6 61.51.115.102 (61.51.115.102) 1.405 ms 61.148.146.178 (61.148.146.178) 1.121 ms 61.51.117.2 (61.51.117.2) 1.328 ms
7 202.106.48.18 (202.106.48.18) 2.869 ms 61.49.168.78 (61.49.168.78) 2.843 ms 2.721 ms
5.扩展:windwos下的路由命令
简单的的操作如下,
#查看路由状态:
route print
#只查看ipv4(ipv6)路由状态:
route print-4(-6)
#添加路由:route add 目的网络 mask 子网掩码 网关 METRIC 跃点数 ---- 临时
route add 192.168.1.0 mask 255.255.255.0 192.168.1.1 METRIC 3
# 添加永久:route -p add 目的网络 mask子网掩码 网关 METRIC 跃点数
route -p add 192.168.1.0 mask 255.255.255.0 192.168.1.1 METRIC 3
# 删除路由:route delete 目的网络 mask 子网掩码(如果目的网络唯一可以不写子网掩码)
route delete 192.168.1.0 mask 255.255.255.0