[root@bogon ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default bogon 0.0.0.0 UG 100 0 0 ens33 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33 192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
route 命令的输出项说明:
| 输出项 | 说明 |
| --- | --- |
| Destination | 目标网段或者主机 |
| Gateway | 网关地址,”\*” 表示目标是本主机所属的网络,不需要路由 |
| Genmask | 网络掩码 |
| Flags | 标记。一些可能的标记如下: |
| | U — 路由是活动的 |
| | H — 目标是一个主机 |
| | G — 路由指向网关 |
| | R — 恢复动态路由产生的表项 |
| | D — 由路由的后台程序动态地安装 |
| | M — 由路由的后台程序修改 |
| | ! — 拒绝路由 |
| Metric | 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) |
| Ref | 路由项引用次数(linux 内核中没有使用) |
| Use | 此路由项被路由软件查找的次数 |
| Iface | 该路由表项对应的输出接口 |
#### **三、3 种路由类型**
##### **1、主机路由**
主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如,在下面的示例中,本地主机通过IP地址192.168.1.1的路由器到达IP地址为10.0.0.10的主机。
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0
##### **2、网络路由**
网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。
Destination Gateway Genmask Flags Metric Ref Use Iface
192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0
##### **3、默认路由**
当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。例如,在下面的示例中,默认路由是IP地址为192.168.1.1的路由器。
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
#### **四、route、ip route、ip rule命令介绍**
##### **1、route命令**
设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
其中:
* **add** : 添加一条路由规则;
* **del** : 删除一条路由规则;
* **-net** : 目的地址是一个网络;
* **-host** : 目的地址是一个主机;
* **target** : 目的网络或主机;
* **netmask** : 目的地址的网络掩码;
* **gw** : 路由数据包通过的网关;
* **dev** : 为路由指定的网络接口。
**route 命令使用举例**
添加到主机的路由
route add -host 192.168.1.2 dev eth0:0
route add -host 10.20.30.148 gw 10.20.30.40
添加到网络的路由
route add -net 10.20.30.40 netmask 255.255.255.248 eth0
route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
route add -net 192.168.1.0/24 eth1
添加默认路由
route add default gw 192.168.1.1
删除路由
route del -host 192.168.1.2 dev eth0:0
route del -host 10.20.30.148 gw 10.20.30.40
route del -net 10.20.30.40 netmask 255.255.255.248 eth0
route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
route del -net 192.168.1.0/24 eth1
route del default gw 192.168.1.1
##### **2、ip rule**
早期在管理Linux系统的网络时,常使用ifconfig及route之类的命令,不过如果你准备开始使用linux强大的基于策略的路由机制,那么,就请不要使用这类工具了,因为这类工具根本无法用于功能强大的基于策略的路由机制,取而代之的工具是iproute。
[root@bogon ~]# ip rule help Usage: ip rule { add | del } SELECTOR ACTION ip rule { flush } ip rule [ list ] SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ] [ iif STRING ] [ oif STRING ] [ pref NUMBER ] ACTION := [ table TABLE_ID ] [ nat ADDRESS ] [ realms [SRCREALM/]DSTREALM ] [ goto NUMBER ] TABLE_ID := [ local | main | default | NUMBER ]
如果新加的路由在main表之外的路由表,则只有先添加规则后才能确定新的路由表的ID,有了新的路由表ID后,才能在该路由表中添加路由。
在添加规则时,需要先定义好优先级、条件及路由表ID,然后才可以添加规则。如下例:
#根据源地址决定路由表 ip rule add from 192.168.10.0/24 table 100 ip rule add from 192.168.20.20 table 110
#根据目的地址决定路由表 ip rule add to 192.168.30.0/24 table 120 ip rule add to 192.168.40.0/24 table 130
#根据网卡设备决定路由表 ip rule add dev eth0 table 140 ip rule add dev eth1 table 150
#此外还可以根据其他条件进行设置,例如tos等等
上面的路由表都是用100、110、120、130等数字表示的,时间一久难免自己也会忘记该路由表的作用,不过iproute提供了一个路由表和名称的对应表(/etc/iproute2/rt\_tables),可以手动修改该表。
可以看到添加路由表100后,显示确实是100,在修改rt\_tables的映射关系后(100映射到wangtong),ip rule show的内容也变化了。
当然也可使用ip命令来删除路由表了。
#根据明细条目删除 ip rule del from 192.168.10.10
#根据优先级删除 ip rule del prio 32765
#根据表名称来删除 ip rule del table wangtong
ip rule show查看的只是有哪些路由表,要查看路由表里面的具体路由,则可以使用ip route show/list table ID/name,默认的ip route show查看的是main表的路由条目。
进行路由时,正是根据路由规则来进行匹配,按优先级(pref后数值)从高到低匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的。
>
> 注:各路由表中应当指明默认路由,尽量不回查路由表.路由添加完毕,即可在路由规则中应用
>
>
>
### 最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
### 资料预览
给大家整理的视频资料:

给大家整理的电子书资料:

**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK