https://mp.weixin.qq.com/s?__biz=MzIwMDIxOTgxNw==&mid=2247555503&idx=1&sn=d4cce92bb04fbc32570feabdb611f15b&chksm=9682d469a1f55d7fb5d2b8519bc00b5f354c952643e32c1e95c5c069bb6aa651e39e34c75c80&scene=27
https://www.cnblogs.com/longlyseul/p/16987765.html
https://www.sohu.com/a/487135768_121206653
https://blog.csdn.net/bbq1234564/article/details/129195206

一、路由的概念

路由是指寻找从一个网络到另一个网络的最佳路径的过程。当一台计算机发送数据包时,该数据包需要经过多个路由器才能到达目标地址。路由器的任务是查找数据包的最佳路径,并将其转发到下一个路由器,直到数据包到达目标地址。

二、路由器

路由器是实现路由功能的关键设备。路由器根据预定义的路由表查找数据包的下一跳,然后将数据包转发到正确的接口。路由表包含了网络地址和关联的下一跳地址,路由器使用这些信息来确定下一个路由器的位置。

三、路由表

https://www.sohu.com/a/487135768_121206653
https://blog.51cto.com/u_14731/6565477 (Android路由原理)

1.作用

1 选择网卡。
2 指定下一跳地址(网关地址–指路由器地址)。

2.策略

为了满足更灵活的配置策略,操作系统支持了多个路由表,在路由表上层添加了可配置的策略,通过这层策略确定网络数据的转发需要查询哪个路由表。这一层就是策略路由。

  • 格式
    优先级: from 匹配规则 lookup 路由表

开始数字为优先级,数字越小,优先级越高

第0条规则
第0条规则为系统默认,不可更改
第0条规则为
0: from all lookup local
表示所有的连接,首先遍历local表

  • 原理
    路由策略根据数据包 和 匹配规则,确定要查哪张路由表进行数据转发。 整个过程是按照优先级来查的。 假设某个ip数据包匹配到了路由策略的规则,则使用该规则指定的路由表去查询下一跳和网卡。如果在该路由表中查找到转发规则,则转发数据包,否则继续查下一个优先级的策略。

3.路由操作命令

https://blog.csdn.net/younger_china/article/details/72081779

  • 查看策略路由(所有的路由表)
    ip rule show

  • 查看路由表
    ip route show table 表名

查看默认路由表: ip route show,等价于 ip route show table main (linux默认路由表是main),等价于 ip route show table 254 (main表对应的编号是254)。

查看路由表名与编号:cat /etc/iproute2/rt_tables

  • 向路由表中添加路由
    在 Android 中,默认的路由表是 main,但是你可以创建自己的路由表。
    示例:将路由添加到 main 表,将网络 192.168.1.0/24 通过接口 eth0 和网关 10.0.2.2 进行访问。
    ip route add table main 192.168.1.0/24 via 10.0.2.2 dev eth0

  • 创建新的路由表并添加路由

创建新的路由表:

ip rule add from all table 100
在这个例子中,我们创建了一个新的路由表 100。

然后,添加路由:

ip route add table 100 192.168.1.0/24 via 10.0.2.2 dev eth0
在这个例子中,我们将路由添加到新创建的路由表 100,将网络 192.168.1.0/24 通过接口 eth0 和网关 10.0.2.2 进行访问。

  • 从路由规则策略中删除路由表
    ip rule del table tableid

  • 向路由规则策略中添加路由表
    ip rule add table main

  • 从路由表中删除路由
    如果你想要删除一个路由,你可以使用以下命令:

ip route del table main 192.168.1.0/24
在这个例子中,我们从 main 表中删除了路由 192.168.1.0/24。

4.android路由表详解

https://www.iteye.com/blog/wx1568206809-2449614
https://www.jianshu.com/p/41d5cad23eab (android6.0)

  • 特殊说明
    android最多支持255张路由表
    有三个路由表是系统默认的,即253(default)、254(main)、255(local)
    main中包含的规则为busybox route -n里打印的
    ip route 等同于ip route show table main,默认显示main路由表的路由。

  • fwmark
    fwmark是用于实现策略路由的,mark的意思是给数据流量打标记,这样路由规则就可以根据mark值做一些更细粒度的路由策略。

ip rule 常见策略说明

  • from all fwmark 0xc0000/0xd0000 lookup legacy_system

  • from all oif eth0 uidrange 0-0 lookup eth0

  • from all unreachable (一般位于路由策略的最后一项)
分类: 路由

0 条评论

发表回复

您的电子邮箱地址不会被公开。