Linux 路由表说明

时间:2021-12-27 00:44:13

写在前面:

本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。

route 命令

选项:

  • -v :显示详细信息。

  • -n :不执行 DNS 反向查找(即不解析名称),直接显示数字形式的 IP 地址。

  • -e :netstat 格式显示路由表。

  • -C :打印 Linux 内核的路由缓存。

  • add :增加路由记录 / del :删除路由记录

    • -net :目的地址是一个网络。
    • -host :目的地址是一台主机。
    • netmask :目的地址的网络掩码。
    • gw :路由数据包通过的网关。
    • metric :设置路由跃点。

eg:

1、添加主机路由

route add -net 10.0.0.10 netmask 255.255.255.255 gw 10.139.128.1 dev eth0
route -n
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
...

2、添加网络路由

route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.139.128.1 dev eth0
route -n
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
...

3、添加设置默认网关跃点为 80

route add default gw 192.168.1.1 metric 80
route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
...

4、删除路由

route del default gw 192.168.1.1 metric 80

字段分析

使用 route or route -n 命令查看内核路由表:

route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 ens33
default         _gateway        0.0.0.0         UG    1000   0        0 br0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.29.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33
_gateway        0.0.0.0         255.255.255.255 UH    100    0        0 ens33

route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.29.2    0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.10.1    0.0.0.0         UG    1000   0        0 br0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.29.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.29.2    0.0.0.0         255.255.255.255 UH    100    0        0 ens33

字段分类说明:

字段 说明
Destination 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1)。
Gateway 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关(同一个局域网内2台主机通信不需要经过网关)。
Genmask Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255 ,是默认路由时会设置为 0.0.0.0
Flags 见下文说明。
Metric 跃点,指到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在 Linux 内核中使用)。
Ref 路由项引用次数 (不在 Linux 内核中使用)。
Use 此路由项被路由软件查找的次数。
Iface 网卡名字,例如 eth0 ;要去往这个网段需要使用哪一个网络接口。也就是 eth0 这张网卡。

可以看到 Flags 下面有许多字母组合,他们分别的含义是:

  • U (route is up) :该路由处于活跃;

  • H (target is a host) :目标是一部主机 (IP) 而非网域(子网掩码是 255.255.255.255);

  • G (use gateway) :需要透过外部的主机 (gateway) 来转递封包(一般指向默认网关);

  • R (reinstate route for dynamic routing) :使用动态路由时,恢复路由资讯的旗标;

  • D (dynamically installed by daemon or redirect) :已经由服务或转 port 功能设定为动态路由

  • M (modified from routing daemon or redirect) :路由已经被修改了;

  • ! (reject route) :这个路由将不会被接受(用来抵挡不安全的网域)。

路由种类

路由类型 子网掩码 Flag字段 描述
主机路由 255.255.255.255 UH 指向单个 IP 地址或主机名的路由记录
网络路由 255.255.255.0 U 代表主机可以到达的网络,比如说目的地址是 192.168.10.xxx
默认路由 0.0.0.0 UG 当主机不能在路由表中查找到目标主机的 IP 时,数据包就发到默认路由上