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链,未开启,数据包丢弃