Linux的高级路由和流量控制:介绍iproute2

希望这篇文档能对你更好地理解Linxs2.2/2.4的路由有所帮助和启发。不被大多数使用者所知道的是,你所使用工具,其实能够完成相当规模工作。比如route 和ifconfig,实际上暗中调用了非常强大的iproute 2的底层基本功能。

Linux能为你做什么

一个小列表:

• 管制某台计算机的带宽
• 管制通向某台计算机的带宽
• 帮助你公平地共享带宽
• 保护你的网络不受DoS攻击
• 保护Internet不受到你的客户的攻击
• 把多台服务器虚拟成一台,进行">负载均衡或者提高可用性
• 限制对你的计算机的访问
• 限制你的用户访问某些主机
• 基于用户账号(没错!)、MAC地址、源IP地址、端口、服务类型、时间或者内容等条件进行路由。

现在,很多人都没有用到这些高级功能。这有很多原因。比如提供的文档过于冗长而且不容易上手,而且流量控制甚至根本就没有归档。

1 为什么使用 iproute2?

现在,绝大多数 Linux 发行版和绝大多数 UNIX都使用古老的arp, ifconfig和route命令。虽然这些工具能够工作,但它们在Linux2.2和更高版本的内核上显得有一些落伍。比如,现在GRE隧道已经成为了路由的一个主要概念,但却不能通过上述工具来配置。
使用了iproute2,隧道的配置与其他部分完全集成了。

2.2 和更高版本的Linux 内核包含了一个经过彻底重新设计的网络子系统。这些新的代码让Linux在操作系统的竞争中取得了功能和性能上的优势。实际上,Linux新的路由、过滤和分类代码,从功能和性能上都不弱于现有的那些专业的路由器、防火墙和流量整形产品。

随着新的网络概念的提出,人们在现有操作系统的现有体系上修修补补来实现他们。这种固执的行为导致了网络代码中充斥着怪异的行为,这有点像人类的语言。过去,Linux模仿了SunOS的许多处理方式,并不理想。

这个新的体系则有可能比以往任何一个版本的Linux都更善于清晰地进行功能表达。

2 iproute2 概览

Linux有一个成熟的带宽供给系统,称为Traffic Control(流量控制)。这个系统支持各种方式进行分类、排序、共享和限制出入流量。

我们将从 iproute2 各种可能性的一个简要概览开始。

3 先决条件

你应该确认已经安装了用户级配置工具。这个包的名字在RedHat和Debian中都叫作“iproute”,也可以在这个地方找到:

ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.2.4-now-ss??????.tar.gz

你也可以试试在这里(ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz)找找最新版本。

iproute 的某些部分需要你打开一些特定的内核选项。应该指出的是,RedHat6.2及其以前的所有发行版中所带的缺省内核都不带有流量控制所需要的绝大多数功能。

而RedHat 7.2在缺省情况下能满足所有要求。

另外,确认一下你的内核支持netlink ,Iproute2需要它.

时间: 2024-12-23 18:18:17

Linux的高级路由和流量控制:介绍iproute2的相关文章

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

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

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

如果你有一个大规模的路由器,你可能不得不同时满足不同用户对于路由的不同需求.路由策略数据库可以帮助你通过多路由表技术来实现. 如果你想使用这个特性,请确认你的内核配置中带有 "IP: advanced router" 和 "IP: policy routing" 两项. 当内核需要做出路由选择时,它会找出应该参考哪一张路由表.除了 "ip" 命令之外,以前的 "route" 命令也能修改 main 和 local 表. 缺省规

Linux的高级路由和流量控制:多播路由

Multicast-HOWTO已经很古老了(相对而言) ,而且不够准确甚至会因此而误21136.html">导读者. 在你开始进行多播路由之前,你需要重新配置你的Linux内核来支持你想实现的多播路由类型.这一步需要你来决定使用何种类型的多播路由.基本上有这么四种:DVMRP (RIP单播协议的多播版本),MOSPF(同理,只不过是OSPF),PIM-SM ("Protocol Independent Multicasting - Sparse Mode",协议无关多播

Linux的高级路由和流量控制:动态路由OSPF和BGP

当你的网络变得确实比较大,或者你开始考虑成为国际互联网的一部分的时候,你就需要能够动态调整路由的工具了.站点之间经常由越来越多个链路互相连接. OSPF和BGP4几乎已经成了Internet的实际标准.通过gated和zebra,Linux全都能支持. 因为这些内容暂时没有包括进本文档,我们在此仅给出具体的学习方向: 纵览: Ciscohttp://www.aliyun.com/zixun/aggregation/9344.html">系统设计大规模的IP网络 对于OSPF: Moy, J

Linux的高级路由和流量控制:构建网桥以及用ARP代理构建伪网桥

网桥是一种安装在网络中,不需要任何后续配置的设备.网络交换器基本上就是一个多口网桥.也就是说网桥就是一个两口的交换器.而Linux能支持多个接口的网桥,成为一个真正的交换器. 网桥经常被用于改进那些http://www.aliyun.com/zixun/aggregation/7317.html">工作状态不佳但是又不能改造的网络.因为网桥是一个2层设备(IP下面的那一层),路由器和服务器意识不到它的存在.也就意味着你可以完全透明地阻挡或者修改数据包,甚至流量整形. 另一件好事是,假如一个

Linux的高级路由和流量控制:内核网络参数

内核有很多可以在不同环境下调整的参数.通常,预设的缺省值可以满足99%的环境要求,we don't call this the http://www.aliyun.com/zixun/aggregation/3415.html">Advanced HOWTO for the fun of it! 有个很有趣的地方:/proc/sys/net,你应该看看.这里一开始并没有把所有的内容归档,但我们正在尽力如此. 有时候你需要看看Linux的内核源代码.读读Documentation/files

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

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

Linux的高级路由和流量控制:GRE和其他隧道

Linux有3种隧道.它们是: IP-in-IP 隧道. GRE 隧道和非内核隧道(如PPTP). 1. 关于隧道的几点注释 隧道可以用于实现很多非常不一般而有趣的功能.但如果你的配置有问题,却也会发生可怕的错误.除非你确切地知道你在做什么,否则不要把缺省路由指向一个隧道设备.而且,隧道会增加协议开销,因为它需要一个额外的IP包头.一般应该是每个包增加20个字节,所以如果一个网络的MTU是1500字节的话,使用隧道技术后,实际的IP包长度最长只能有1480字节了.这倒不是什么原则性的问题,但如果

Linux的高级路由和流量控制:用Cisco和6bone实现IPv6

1. http://www.aliyun.com/zixun/aggregation/9485.html">IPv6隧道 这是Linux隧道能力的另一个应用.这在IPv6的早期实现中非常流行.下面动手试验的例子当然不是实现IPv6隧道的唯一方法.然而,它却是在Linux与支持IPv6的CISCO路由器之间搭建隧道的常用方法,经验证明多数人都是照这样做的.八成也适合于你. 简单谈谈IPv6地址: 相对于IPv4地址而言, IPv6地址非常大,有128bit而不是32bit.这让我们得到了我们