是由一项或者多项路由表组成的,每个IP报文被发送前,系统都会查找主机路由表,决定将这个报文从
哪个网卡,发送到哪个下一跳。路由表项可以分成主机路由,网络路由和默认路由3种。每条路由表项主要由
目标IP(主机或者网络),子网掩码,接口,网关(下一跳IP),度量(metric)这几项组成。
1,查找路由表
2,命中表项,则按表项指定,通过指定网络接口,将本IP报文转到到下一跳(或直接到目的地址)
3,不命中,则继续查找
4,如果全部表项都不命中,则查找默认路由
5,如果有默认路由,则按默认路由指定,通过指定网络接口,将本IP报文转到到下一跳
6,如果无默认路由,则丢弃本报文
route
Destination 目标网段或者主机
Gateway 网关地址,”*”或者“0.0.0.0” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:
U — 路由是活动的, H — 目标是一个主机, G — 路由指向网关,
R — 恢复动态路由产生的表项, D — 由路由的后台程序动态地安装,
M — 由路由的后台程序修改, ! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(数字越小优先级越高)
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口
sudo route add -host 192.168.43.192 metric 301 dev wlan0
增加完成后,我们可以看到多了一条指定发往192.168.43.192的数据要通过wlan0接口发送,
目标地址在直通的网络上,并且metric为301的路由表项。
如果目标主机不是在直通的网络上,需要gw(下一跳IP)转发,则如下加上gw选项则可,注意这个
gw必须是当前可以ping通的一个地址。
sudo route add -host 192.168.43.192 gw 192.168.43.1 metric 301 dev wlan0
sudo route del -host 192.168.43.192 metric 301 dev wlan0
删除完成后,我们可以看到之前给发往192.168.43.192的数据创建的路由表项被删除了
sudo route add -net 192.168.3.0 netmask 255.255.255.0 metric 100 dev eth0
增加完成后,我们可以看到多了一条指定发往192.168.3.0/24这个子网下的所有IP的数据要通过eth0接口发送,
并且metric为100的路由表项,同样如果目标网络需要通过gw(下一跳IP)转发,则加上gw选项则可。
sudo route del -net 192.168.3.0 netmask 255.255.255.0 metric 100 dev eth0
删除完成后,我们可以看到之前给发往192.168.3.0的数据包创建的路由表项被删除了
sudo route add default gw 192.168.43.1 dev wlan0
增加完成后,我们可以看到多了一条默认通过wlan0接口发送的默认路由表项,并且metric为0
sudo route del default gw 192.168.43.1
删除完成后,我们可以看到之前的默认路由表项被删除了