静态路由和动态路由有什么区别 动态路由和静态路由的区别?有哪些常见的动态路由协议?

今天稍微了解了一下 Linux 下的策略路由,给大家分享一下。

首先我们看一下什么是静态路由和动态路由,然后,策略路由是属于静态路由的一种。

静态路由和动态路由有什么区别 动态路由和静态路由的区别?有哪些常见的动态路由协议?插图电脑技术吧

静态路由

首先,静态路由就是由 SA 手动通过命令或者编辑系统配置文件添加的路由,当一个新的 IP 包过来的时候,Linux 内核就会去匹配 IP 路由规则,如果匹配到了,就会执行这条转发规则,如果没有匹配到,就会执行默认路由规则。当系统规模较小的时候,路由规则较容易的时候,静态路由的数量也比较少,足够用了。

静态路由和动态路由有什么区别 动态路由和静态路由的区别?有哪些常见的动态路由协议?插图1电脑技术吧

动态路由

而在大型复杂的网络环境中,有几十条甚至几百条路由都要 SA 手工配置的话,那工作量就太大了,而且还非常容易出错,于是人们就发明了动态路由。动态路由策略可以使得 Linux 路由器向邻居主动学习得到路由表,并且通过动态路由协议来自动寻找最佳路由,其中比较常用的动态路由协议有 OSPF,RIP 等等。Linux 上的动态路由软件有 quagga,这个我们以后在单独的专题里再展开说。

策略路由

明显,策略路由就是由管理员设定好一些路由策略。以前我们设定路由规则的时候只能通过来源 IP、目的 IP 来设定规则,而通过策略路由,我们可以实现 通过网段选择路由,通过 IP 包的 TOS 域来选择路由,通过应用层协议 (如 HTTP 协议) 来选择路由,等等。而使得策略路由能够在 Linux 上实现的基础是 Linux kernel 2.2 加入了 Advanced Routing 功能,这使得 Linux 的路由功能甚至超越了一些商用的路由器。而 Advanced Routing 引入的两项重大技术就是 多路由表和规则 这 2 个东西。

多路由表

Linux 系统可以总共具有 0~255 这 256 张路由表,而且每张表都是独立的。过来一个 IP 包时是按照优先级顺序挨个检查路由策略数据库(RPDB)中的每个路由表进行匹配并执行操作的。

静态路由和动态路由有什么区别 动态路由和静态路由的区别?有哪些常见的动态路由协议?插图2电脑技术吧

具体的优先级是通过 /etc/iproute2/rt_tables 这个文件确定的,

## reserved values#255 local254 main253 default0 unspec 表 255 本地路由表(Local table)本地接口地址,广播地址,NAT 地址都放在这个表。该路由表由系统自动维护,管理员不能直接修改。表 254 主路由表(Main table)如果没有指明路由所属的表,所有的路由都默认都放在这个表里,一般来说,旧的路由工具(如 route 命令)所添加的路由都会加到这个表,一般是普通的路由。表 253 默认路由表(Default table)一般来说默认的路由都放在这张表。表 0 保留。

路由规则

路由规则是通过 iprouter2 这个软件包中的指令来操作的。里面包括最常用的命令 ip route 和 ip rule。

比如,查看路由表,这里有 3 张路由表。

$ ip rule show0:from all lookup local32766:from all lookup main32767:from all lookup default

查看路由规则

$ ip route show table main 10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10 default via 10.10.15.1 dev eth0

正文完
 0