0%

Linux路由信息学习

写在前面

route命令用来查看Linux内核路由表。

表项内容说明

route命令输出如下,使用-n选项表示不解析名字,可以加快信息输出速度。

1
2
3
4
5
6
7
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.204.112.1 0.0.0.0 UG 0 0 0 ens160
10.10.30.0 * 255.255.255.0 U 0 0 0 ens192
10.204.112.0 * 255.255.254.0 U 0 0 0 ens160
link-local * 255.255.0.0 U 1000 0 0 ens192
172.17.0.0 * 255.255.0.0 U 0 0 0 docker0

字段解释如下:
| 字段 | 说明 |
| :— | :— |
| Destination | 目标网段或主机 |
| Gateway | 网关地址, *或全0表示目标是本主机所属的网络,不需要路由 |
| Genmask | 网络掩码 |
| Flags | U:路由时活动的;H:目标是个主机;G:路由指向网关;R:恢复动态路由产生的表项;D:由路由的后台程序动态的安装;M:由路由的后台程序修改; !:拒绝路由 |
| Metric | 路由距离,到达指定网络所需要的中转数(linux内核中没有使用) |
| Ref | 路由项引用次数(linux内核中没有使用) |
| Use | 此路由项被路由软件查找的次数 |
| Iface | 该路由表项的输出接口 |

Linux上有三种路由类型:

  • 主机路由。路由表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。
  • 网络路由。代表主机可以到达的网络。网络路由的Flags字段为N。
  • 默认路由。当主机不能再路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由上。默认路由的Flags字段为G。

对于一个物理网卡,Linux默认只支持一条默认路由。当然可以通过route命令手动添加多条默认路由,当重新启动网口时,会把其它默认路由去掉,只剩下一条该网口生成的默认路由。

常用命令

添加或删除路由

route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]

route add default gw 192.168.5.1

route add -net 10.204.0.0/16 eth0
route add -net 10.204.0.0/26 gw 10.204.123.1

查询路由信息

route -nee

ee选项表示详细信息