Linux的高级路由和流量控制:路由策略数据库

如果你有一个大规模的路由器,你可能不得不同时满足不同用户对于路由的不同需求。路由策略数据库可以帮助你通过多路由表技术来实现。

如果你想使用这个特性,请确认你的内核配置中带有 "IP: advanced router" 和 "IP: policy routing" 两项。

当内核需要做出路由选择时,它会找出应该参考哪一张路由表。除了 "ip" 命令之外,以前的 "route" 命令也能修改 main 和 local 表。

缺省规则:

[ahu@home ahu]$ ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default

上面列出了规则的优先顺序。我们看到,所有的规则都应用到了所有的包上 (“from all”)。我们前面已经看到了 "main" 表,就是“ip route ls”命令的输出,但是“local”和“default”是初次见到。

如果我们想做点">有趣的事情,就可以生成一些指向不同路由表的规则,取代系统中的路由规则。

对于内核如何处理一个IP包匹配多个规则的精确意义,请参见Alexey关于 ip-cref文档。

1. 简单的源策略路由

让我们再来一个真实的例子。我有两个Cable Modem,连接到了一个 Linux的NAT (“伪装”) 路由器上。这里的室友们向我付费使用 Internet。假如我其中的一个室友因为只想访问 hotmail 而希望少付一些钱。对我来说这没有问题, 他们肯定只能使用那个比较次的 Cable Modem。

那个比较快的cable modem 的IP地址是 212.64.94.251, PPP 链路,对端IP是212.64.94.1。而那个比较慢的cable modem 的IP 地址是212.64.78.148,对端是195.96.98.253。

local 表:

[ahu@home ahu]$ ip route list table local
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
local 10.0.0.1 dev eth0 proto kernel scope host src 10.0.0.1
broadcast 10.0.0.0 dev eth0 proto kernel scope link src 10.0.0.1
local 212.64.94.251 dev ppp0 proto kernel scope host src 212.64.94.251
broadcast 10.255.255.255 dev eth0 proto kernel scope link src 10.0.0.1
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 212.64.78.148 dev ppp2 proto kernel scope host src 212.64.78.148
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1

有很多明显的事实,其实可能还需要进一步说明。好了,这样就行了。“default” 表为空。

让我们看看“main”路由表:

[ahu@home ahu]$ ip route list table main
195.96.98.253 dev ppp2 proto kernel scope link src 212.64.78.148
212.64.94.1 dev ppp0 proto kernel scope link src 212.64.94.251
10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1
127.0.0.0/8 dev lo scope link
default via 212.64.94.1 dev ppp0

我们现在为我们的朋友创建了一个叫做“John”的规则。其实我们完全可以使用纯数字表示规则,但是不方便。我们可以向 /etc/iproute2/rt_tables 文件中添加数字与名字的关联:

# echo 200 John >> /etc/iproute2/rt_tables
# ip rule add from 10.0.0.10 table John
# ip rule ls
0: from all lookup local
32765: from 10.0.0.10 lookup John
32766: from all lookup main
32767: from all lookup default

现在,剩下的事情就是为 John 的路由表创建路由项了。别忘了刷新路由缓存:

# ip route add default via 195.96.98.253 dev ppp2 table John
# ip route flush cache

这样就做好了。至于如何在 ip-up 阶段实现就留给读者自己去研究吧。

时间: 2024-09-20 10:54:32

Linux的高级路由和流量控制:路由策略数据库的相关文章

Linux的高级路由和流量控制:其它可能性

这章列出了一些有关Linux的高级路由和流量整形的计划.其中有些链接应该单独写一章,有些本身的文档十分完整,不需要更多的HOWTO. 1Q VLAN在Linux上的实现(网站) VLAN是一种使用非物理方法把网络划分成多个部分的技术.这里可以找到很多有关VLAN的信息.利用这个实现,你可以让你的Linux机器与VLAN设备(比如http://www.aliyun.com/zixun/aggregation/15069.html">Cisco Catalyst,3Com: <Coreb

Linux的高级路由和流量控制:Netfilter和iproute

迄今为止我们已经了解了iproute是如何工作的,并且多次提到了netfilter.这里,你正好可以趁机看一看Rusty出名地不可靠的指南. Netfilter本身可以在这里找到. Netfilter可以让我们进行包过滤或者篡改数据包头.有一个特别的功能就是我们可以给数据包打上一个数字标记.使用--set-mark机制就可以. 例如,这个命令把所有发往25/tcp(发出邮件)的数据包都打上了标记: # iptables -A PREROUTING -i eth0 -t mangle -p tcp

自定义路由和负载均衡策略镜像acs/proxy 参考文档

自定义路由-使用手册 acs/proxy 自定义代理镜像,通过 FROM dockercloud/haproxy 的方式继承自镜像 dockercloud/haproxy,动态感知容器的状态,做到后端容器负载均衡代理和服务发现.特点是将 HAProxy 负载均衡软件的所有配置都参数化了,方便您自定义自己的需求和配置. 该镜像主要用于 Alibaba Cloud 容器服务的默认路由服务不能满足您需求的场景,方便您对 HAProxy 进行自定义配置. 文档中会提到 acs/proxy 和 HAPro

默认路由-TCP IP路由技术问题请教

问题描述 TCP IP路由技术问题请教 现在碰到如下情景,linux设备网络模块中有多条路由 例如 a业务有自己的路由I,目的ip x.x.x.x(也可以是域名) b业务有自己的路由II 目的ip y.y.y.y (也可以是域名) 1.当配置默认路由III时,a业务正常,此时跟踪验证业务是走自己的路由I 并未走默认路由,即便是将默认路由配为还回地址,业务依然正常 2.当未配置默认路由时,a业务异常,此时没有到x.x.x.x的数据包发出 3.此时本地demo模拟a业务,没有配置默认路由情况下,能否

ASP.NET Core的路由[2]:路由系统的核心对象——Router

ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用.但是具体的路由解析功能其实并没有直接实现在RouterMiddleware中间件中,而是由一个Router对象来完成的.[本文已经同步到<ASP.NET Core框架揭秘>之中] 目录 一.IRouter接口 二.RouteContext 三.RouteData 四.Route 五.Rou

《IP路由协议疑难解析》一1.2 静态路由和动态路由

1.2 静态路由和动态路由 IP路由协议疑难解析可在路由器上手工(静态)设定(用来转发数据包的)路径信息(即静态路由),迫使路由器通过某特定端口或下一跳IP地址,转发匹配(静态路由中所包含的)目的IP地址的数据包.可设置静态路由,来匹配"各式各样"的目的IP网络地址.还有一种让路由器获取路由信息的手段,那就是在其上运行分布式的应用程序,来自动收集,并在路由器间彼此共享路由信息.此类分布式应用程序不仅能自动收集路由信息,还能实时跟踪网络连通性状态,并会尽量提供实时而又有效的路由信息,故称

路由知识 静态路由 rip eigrp ospf

第1章 路由选择原理 1.1 几个概念 1.1.1 被动路由协议 用来在路由之间传递用户信息 1.1.2 主动路由协议 用于维护路由器的路由表 R2#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area        N1 - OSPF N

思科模拟器静态路由和动态路由配置

思科模拟器 静态路由,动态路由 RIP配置 动态路由协议 RIP 命令就两行比较简单 实验拓扑图如下: 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Network/lyjs/ 要想实现pc1 和pc2 通讯就要对R1 ,R2,R3 进行配置 1. 静态配置命令格式如下: 对于R1 Router>en Router#conf Configuring from terminal, memory, or network [terminal]?

通过VRRP实现路由备份与路由分流

VRRP(Virtual Router Redundancy Protocol)是一种容错协议.通常,一个网络内的主机设置一条缺省路由,这样,主机发出的目的地址不在本网段的报文将通过缺省路由发往路由器Router,从而实现了主机与外部网络的通信.当路由器Router发生故障时,本网段内所有以Router为缺省路由下一跳的主机将断掉与外部的通信. VRRP就是为解决上述问题而提出的,它为具有多播或广播能力的局域网(如:以太网)设计.VRRP将局域网的一组路由器(包括一个MASTER和若干个BACK