Linux ip 路由表

766 阅读4分钟

ip 路由表的作用

  • 1:路由匹配(路由选择),根据目标ip在linux路由表之中进行匹配,找到合适的下一跳。
  • 2:决定数据包从哪个网络设备发出,判断依据是目标ip地址。

ip 路由表是否net namespace 隔离

是的。不同的 net namespace 具有不同的ip 路由表

ip 路由表的Linux 操作工具

  • ip route
  • route

ip 路由表的输出信息字段解释 (route -n)

Destination: 表示目的地址 Gateway:表示下一跳的地址 Genmask:表示子网掩码 Flags: 路由标志,表示当前网络路由的状态。 U 表示启动 Iface:表示目的地址,指定网络的数据包应该发往哪个网络接口 Metric:不太需要关注 Ref:不太需要关注 Use: 不太需要关注

ip 路由表之中 路由的种类

1: 主机路由

路由表中指向单个 IP 地址或主机名的路由记录

2: 网络路由

主机可以到达的网络

3: 默认路由

当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由 的 Destination 是 default 或 0.0.0.0。

注意:ip 路由表之中的一条记录就是一个路由。

ip 路由表的使用方式

可以这样理解,内核是如何使用 ip路由表进行路由选择的。 简单地介绍: 如果 路由表之中的Destination 与 数据包的目的ip 相等,那么表示匹配,如果数据包之中的目的ip地址与路由规则的子网掩码相与,等于路由表之中的Destination,那么也表示匹配。使用所匹配的路由信息进行下一步的数据包流转。

多路由表

Linux 之中内置了四张路由表,0号表 local表 main表 default表 ip route 默认显示 main表之中的路由规则。 route 显示 main表之中的路由规则

策略路由

策略路由的定义

根据策略来决定使用哪一个路由表进行路由匹配

策略

策略的属性

优先级(数字越小 优先级越高)

Linux 内置的 默认策略

0: from all lookup local (所有数据包都发往local表进行匹配) 32766: from all lookup main (所有数据包都发往main表进行匹配) 32767: from all lookup default (所有数据包都发往default表进行匹配)

匹配规则为,先把数据包 使用 local表的路由规则进行匹配,如果没有匹配的规则,则使用 main 表的规则进行匹配,如果没有匹配的规则,则使用 default表的规则进行匹配。

ip路由表的操作

1: 查看local 表 之中的路由规则

ip route show table local 

2: 查看local表之中的本机网络地址

ip route show table local type local

3: main 表之中 创建路由

 route add default gw 网关的ip地址

4: main 表之中 删除路由

route del -net 规则的目的ip netmask 规则的子网掩码

5: 显示当前的策略

ip rule show 

注意:

1:Linux ip路由之中的一个规则,任何一个从 非本机环回接口进入的数据包,数据包之中的来源ip是本机,默认会被丢弃。但是接口开启了accept_local 内核参数配置后,可以接收此数据包。

问题

1: 路由规则之中,Gateway的值是 0.0.0.0 表示什么意思?也就是下一跳是0.0.0.0 是啥意思? 表示如果目的ip地址与子网掩码相与之后,如果和Destination相同,那么表示两个ip处于同一个网络之中。处于同一个网络之中的两个主机可以直接通信,不需要网关。

2:路由选择判断是否 目的ip 是本机ip 的规则是什么?

执行 ip route show table local type local 服务器接收到数据包的时候,查看目的ip地址是否为本机ip,如果是的话,那么数据包就流向 iptables 的INPUT链,不匹配,就是进行ip_forward判断,如果开启,数据流向FORWARD链,未开启,数据包丢弃