ip高级功能.docx
- 文档编号:6439188
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:63
- 大小:88.47KB
ip高级功能.docx
《ip高级功能.docx》由会员分享,可在线阅读,更多相关《ip高级功能.docx(63页珍藏版)》请在冰豆网上搜索。
ip高级功能
BertHubert
NetherlabsBV
bert.hubert@netherlabs.nl
GregoryMaxwell(章节作者)
remco%virtu.nl
RemcovanMook(章节作者)
remco@virtu.nl
MartijnvanOosterhout(章节作者)
kleptog@
PaulBSchroeder(章节作者)
paulsch@
JasperSpaans(章节作者)
jasper@spaans.ds9a.nl
PedroLarroy(章节作者)
piotr%omega.resa.ed
一个非常上手的关于iproute2,流量整形和一点netfilter的指南.
译者序
可以说,翻译这篇文档的过程就是我重新学习Linux的过程.与原文的作者感受相似,当我根据这篇文档大致了解了Linux在IP方面的功能后,绝对是"itreallyblewmeaway!
".才发现我以前一直是把Linux当成UNIX来用,Linux本身很多精彩的功能都被我忽略了.看来Linux在路由方面的设计的确非常独到.但愿这篇文章的内容能够对您应用Linux有所帮助.本文档的原作实际上还尚未完成,估计要等到Linux的2.6版内核发布之后才能最终定稿.但是我已经等不及了,非常希望尽快与各位共享这篇文档.如果这篇文档的原作完成,我会尽力追踪翻译.这里是本HOWTO的正规出处.由于本人的英语和语文都是业余水平,有两三处晦涩或者与技术无关的内容没有翻译,希望英语高手予以指点.如有词不达意甚至理解错误之处,非常渴望您能通过Email告知!
谢谢!
2/15/20035:
28PM译毕
JohnBull
目录
第1章贡献1
第2章简介2
2.1.除外责任与许可2
2.2.预备知识2
2.3.LINUX能为你做什么3
2.4.内务声明3
2.5.访问,CVS和提交更新4
2.6.邮件列表4
2.7.本文档的布局4
第3章介绍IPROUTE26
3.1为什么使用IPROUTE26
3.2IPROUTE2概览6
3.3先决条件6
3.4浏览你的当前配置7
3.4.1.让ip显示我们的链路7
3.4.2.让ip显示我们的IP地址7
3.4.3.让ip显示路由8
3.5.ARP9
第4章规则——路由策略数据库11
4.1.简单的源策略路由11
4.2.多重上连ISP的路由12
4.2.1.流量分割13
4.2.2.负载均衡14
第5章GRE和其他隧道15
5.1.关于隧道的几点注释15
5.2.IP-IN-IP隧道15
5.3.GRE隧道16
5.3.1.IPv4隧道16
5.3.2.IPv6隧道18
5.4.用户级隧道18
第6章用CISCO和6BONE实现IPV6隧道19
6.1.IPV6隧道19
第7章IPSEC:
INTERNET上安全的IP22
7.1.从手动密钥管理开始22
7.2.自动密钥管理25
7.2.1.理论26
7.2.2.举例26
7.2.3.使用X.509证书进行自动密钥管理29
7.3.IPSEC隧道32
7.4.其它IPSEC软件33
7.5.IPSEC与其它系统的互操作33
7.5.1.Windows33
第8章多播路由34
第9章带宽管理的队列规定36
9.1.解释队列和队列规定36
9.2.简单的无类队列规定37
9.2.1.pfifo_fast37
9.2.2.令牌桶过滤器(TBF)39
9.2.3.随机公平队列(SFQ)41
9.3.关于什么时候用哪种队列的建议42
9.4.术语43
9.5.分类的队列规定45
9.5.1.分类的队列规定及其类中的数据流向45
9.5.2.队列规定家族:
根,句柄,兄弟和父辈45
9.5.3.PRIO队列规定46
9.5.4.著名的CBQ队列规定48
9.5.5.HTB(HierarchicalTokenBucket,分层的令牌桶)54
9.6.使用过滤器对数据包进行分类55
9.6.1.过滤器的一些简单范例56
9.6.2.常用到的过滤命令一览57
9.7.IMQ(INTERMEDIATEQUEUEINGDEVICE,中介队列设备)58
9.7.1.配置范例58
第10章多网卡的负载均衡60
10.1.告诫61
10.2.其它可能性61
第11章NETFILTER和IPROUTE——给数据包作标记62
第12章对包进行分类的高级过滤器64
12.1.U32分类器65
12.1.1.U32选择器65
12.1.2.普通选择器66
12.1.3.特殊选择器67
12.2.路由分类器67
12.3.管制分类器68
12.3.1.管制的方式68
12.3.2.越限动作69
12.3.3.范例70
12.4.当过滤器很多时如何使用散列表70
第13章内核网络参数72
13.1.反向路径过滤72
13.2.深层设置73
13.2.1.ipv4一般设置73
13.2.2.网卡的分别设置78
13.2.3.邻居策略79
13.2.4.路由设置80
第14章不经常使用的高级队列规定82
14.1.BFIFO/PFIFO82
14.1.1.参数与使用82
14.2.CLARK-SHENKER-ZHANG算法(CSZ)82
14.3.DSMARK83
14.3.1.介绍83
14.3.2.Dsmark与什么相关?
83
14.3.3.DifferentiatedServices指导84
14.3.4.使用Dsmark84
14.3.5.SCH_DSMARK如何工作84
14.3.6.TC_INDEX过滤器85
14.4.入口队列规定87
14.4.1.参数与使用87
14.5.RED(RANDOMEARLYDETECTION,随机提前检测)87
14.6.GRED(GENERICRANDOMEARLYDETECTION,一般的随机提前检测)88
14.7.VC/ATM模拟89
14.8.WRR(WEIGHTEDROUNDROBIN,加权轮转)89
第15章方便菜谱90
15.1.用不同的SLA运行多个网站.90
15.2.防护SYN洪水攻击90
15.3.为防止DDOS而对ICMP限速91
15.4.为交互流量设置优先权92
15.5.使用NETFILTER,IPROUTE2和SQUID实现WEB透明代理93
15.5.1.实现之后的数据流图96
15.6.与PMTU发现有关的"基于路由的MTU设置"96
15.6.1.解决方案97
15.7.与PMTU发现有关的MSS箝位(给ADSL,CABLE,PPPOE和PPTP用户)98
15.8.终极的流量控制:
低延迟,高速上/下载98
15.8.1.为什么缺省设置不让人满意99
15.8.2.实际的脚本(CBQ)100
15.8.3.实际的脚本(HTB)102
15.9.为单个主机或子网限速103
15.10.一个完全NAT和QOS的范例104
15.10.1.开始优化那不多的带宽104
15.10.2.对数据包分类106
15.10.3.改进设置107
15.10.4.让上面的设置开机时自动执行108
第16章构建网桥以及用ARP代理构建伪网桥109
16.1.桥接与IPTABLES的关系109
16.2.桥接与流量整形109
16.3.用ARP代理实现伪网桥109
16.3.1.ARP和ARP代理110
16.3.2.实现110
第17章动态路由——OSPF和BGP112
17.1.用ZEBRA设置OSPF112
17.1.1.必要条件113
17.1.2.配置Zebra113
17.1.3.运行Zebra115
第18章其它可能性117
第19章进一步学习119
第20章鸣谢120
第1章贡献
本文档的成形得益于很多人的贡献,我希望能够回报他们.列出其中几个:
RustyRussell
AlexeyN.Kuznetsov
来自Google的一些好心人
CasemaInternet的工作人员
第2章简介
欢迎,亲爱的读者.希望这篇文档能对你更好地理解Linxs2.2/2.4的路由有所帮助和启发.不被大多数使用者所知道的是,你所使用工具,其实能够完成相当规模工作.比如route和ifconfig,实际上暗中调用了非常强大的iproute2的底层基本功能.我希望这个HOWTO能够象RustyRussell的作品那样通俗易懂.你可以随时给HOWTO工作组发电子邮件来找到我们.但是如果您的问题并不直接与这个HOWTO文档相关,请首先考虑发给邮件列表(参考相关章节).我们可不是免费的帮助平台,但我们经常会在邮件列表上回答问题.在钻研这个HOWTO之前,如果您想做的只是一点简单的流量整形,不妨直接去看看其它可能性这一章里面的CBQ.init.2.1.除外责任与许可这个文档依着对公众有利用价值的目的而发布,但不提供任何担保,即使是在经销或者使用在特定场合时的潜在担保.简单地说,如果您的STM-64骨干网瘫痪,并向您尊敬的客户们散布黄色图片,对不起,那绝对不关我的事.Copyright(c)2002所有:
berthubert,GregoryMaxwell,MartijnvanOosterhout,RemcovanMook,PaulB.Schroeder等等.这份材料可以在遵从OpenPublicationLicense,v1.0(或更新版)各项条款的前提下发布.OpenPublicationLicense的最新版可以在http:
//www.opencontent.org/openpub/得到.请随意复制并发布(出售或者赠送)本文档,格式不限.只是请求将纠正和/或注解转发给文档的维护者.还希望如果你出版本HOWTO的硬拷贝,请给作者们发一份以备复习之用.
2.2.预备知识
就像标题所暗示的,这是一个"高级"HOWTO.虽然它不是终极的航天科技,但还是要求一定的基础知识.这里是一些可能对你有帮助的参考文献:
RustyRussell的networking-concepts-HOWTO非常精彩的介绍,解释了什么是网络以及一个网络如何与其它网络互联.LinuxNetworking-HOWTO(以前叫做Net-3HOWTO)好东西,虽然非常冗长.它讲授的内容就是你连接到Internet所需的的配置内容.应该在/usr/doc/HOWTO/NET3-4-HOWTO.txt中,也可以在线阅读.
2.3.Linux能为你做什么
一个小列表:
管制某台计算机的带宽
管制通向某台计算机的带宽
帮助你公平地共享带宽
保护你的网络不受DoS攻击
保护Internet不受到你的客户的攻击
把多台服务器虚拟成一台,进行负载均衡或者提高可用性限制对你的计算机的访问
限制你的用户访问某些主机
基于用户账号(没错!
),MAC地址,源IP地址,端口,服务类型,时间或者内容等条件进行路由.现在,很多人都没有用到这些高级功能.这有很多原因.比如提供的文档过于冗长而且不容易上手,而且流量控制甚至根本就没有归档.
2.4.内务声明
关于这个文档有些事情要指出.当我写完这个文档的绝大部分的时候,我真的不希望它永远就是那个样子.我是一个坚信开放源代码的人,所以我希望你能够给我发回反馈,更新,补丁等等.所以你应该尽可以告知我你的手稿或者指出一些哪怕是无关紧要的错误,不必犹豫.如果我的英语有些晦涩,请原谅那不是我的母语,尽可以给我建议.果你认为自己更有资格维护某个章节,或者认为自己可以写作并维护一个新的章节,请您一定不要客气.这个HOWTO的SGML可以通过CVS得到,我估计肯定有很多人还在为它出力.作为请求援助,你会在文档中发现很多"求助"的字样.我们永远欢迎您的补丁!
无论您在哪里发现"求助",都应该明白您正在踏入一个未知的领域.这并不是说在别的地方就没有错误,但您应该倍加小心.如果您确认了某些事情,请您一定通知我们,以便我们能够把"求助"的标记去掉.关于这个HOWTO,Iwilltakesomelibertiesalongtheroad.Forexample,Ipostulatea10MbitInternetconnection,whileIknowfullwellthatthosearenotverycommon.
2.5.访问,CVS和提交更新
本HOWTO的规范位置在这里.我们现在向全球开放了匿名CVS访问.从各个角度来说这都是一件好事.你可以轻松地升级到本HOWTO的最新版本,而且提交补丁也不再成为问题.另外的好处是,这可以让作者在源码上独立地继续工作.
$exportCVSROOT=:
pserver:
anon@outpost.ds9a.nl:
/var/cvsroot
$cvslogin
CVSpassword:
[enter'cvs'(without's)]
$cvsco2.4routing
cvsserver:
Updating2.4routing
U2.4routing/lartc.db
如果您做了修改并希望投稿,运行:
cvs-z3diff-uBb
然后把输出用电子邮件发给,我们就可以很轻松地把它集成进去了.谢谢!
请确认你修改的是.db文件,其它文件都是通过它生成的.提供了一个Makefile帮助您生成postscript,dvi,pdf,html和纯文本格式的文件.你可能需要安装docbook,docboot-utils,ghostscript和tetex等等支持软件才能生成各种格式的文本.注意,不要更改2.4routing.sgml!
那里面有旧版本的HOWTO.正确的文件是lartc.db.
2.6.邮件列表
作者已经开始收到关于这个HOWTO越来越多的邮件了.为了把大家的兴趣条理化,已经决定启动一个邮件列表,让大家在那里互相探讨有关高级路由和流量控制的话题.你可以在这里进行订阅.需要指出的是,作者们对于列表中没有问及的问题不可能及时回答.我们愿意让列表的归档成为一个知识库.如果你有问题,请搜索归档,然后在post到邮件列表里.
2.7.本文档的布局
我们几乎马上就要做一些有趣的实验,也就意味着最开始部分的基本概念解释并不完整或者不完善,请您不必管它,后面会一点点说清楚.路由和包过滤是完全不同的概念.关于过滤的问题,Rusty的文档说得很清楚,你可以在这里找到:
Rusty出色的不可靠指南我们则将致力于netfilter与iproute2相结合后能做什么.
第3章介绍iproute2
3.1为什么使用iproute2
现在,绝大多数Linux发行版和绝大多数UNIX都使用古老的arp,ifconfig和route命令.虽然这些工具能够工作,但它们在Linux2.2和更高版本的内核上显得有一些落伍.比如,现在GRE隧道已经成为了路由的一个主要概念,但却不能通过上述工具来配置.使用了iproute2,隧道的配置与其他部分完全集成了.2.2和更高版本的Linux内核包含了一个经过彻底重新设计的网络子系统.这些新的代码让Linux在操作系统的竞争中取得了功能和性能上的优势.实际上,Linux新的路由,过滤和分类代码,从功能和性能上都不弱于现有的那些专业的路由器,防火墙和流量整形产品.随着新的网络概念的提出,人们在现有操作系统的现有体系上修修补补来实现他们.这种固执的行为导致了网络代码中充斥着怪异的行为,这有点像人类的语言.过去,Linux模仿了SunOS的许多处理方式,并不理想.这个新的体系则有可能比以往任何一个版本的Linux都更善于清晰地进行功能表达.
3.2iproute2概览
Linux有一个成熟的带宽供给系统,称为TrafficControl(流量控制).这个系统支持各种方式进行分类,排序,共享和限制出入流量.我们将从iproute2各种可能性的一个简要概览开始.
3.3先决条件
你应该确认已经安装了用户级配置工具.这个包的名字在RedHat和Debian中都叫作"iproute",也可以在这个地方找到:
ftp:
//ftp.inr.ac.ru/ip-routing/iproute2-2.2.4-now-ss.tar.gz你也可以试试在这里找找最新版本.iproute的某些部分需要你打开一些特定的内核选项.应该指出的是,RedHat6.2及其以前的所有发行版中所带的缺省内核都不带有流量控制所需要的绝大多数功能.而RedHat7.2在缺省情况下能满足所有要求.另外,确认一下你的内核支持netlink,Iproute2需要它.
3.4浏览你的当前配置
这听上去确实让人惊喜:
iproute2已经配置好了!
当前的ifconfig和route命令已经正在使用新的系统调用,但通常使用了缺省参数(真无聊).
新的工具ip成为中心,我们会让它来显示我们的网卡配置.
3.4.1.让ip显示我们的链路
[ahu@homeahu]$iplinklist
1:
lo:
mtu3924qdiscnoqueuelink/loopback00:
00:
00:
00:
00:
00brd00:
00:
00:
00:
00:
00
2:
dummy:
mtu1500qdiscnooplink/ether00:
00:
00:
00:
00:
00brdff:
ff:
ff:
ff:
ff:
ff
3:
eth0:
mtu1400qdiscpfifo_fastqlen100link/ether48:
54:
e8:
2a:
47:
16brdff:
ff:
ff:
ff:
ff:
ff
4:
eth1:
mtu1500qdiscpfifo_fastqlen100link/ether00:
e0:
4c:
39:
24:
78brdff:
ff:
ff:
ff:
ff:
ff
3764:
ppp0:
mtu1492qdiscpfifo_fastqlen10link/ppp
你的结果可能有所区别,但上述显示了我家里NAT路由器的情况.我将只解释输出中并非全部直接相关的部分.因为并不是所有部分都与我们的话题有关,所以我只会解释输出的一部分.我们首先看到了loopback接口.Whileyourcomputermayfunctionsomewhatwithoutone,I'dadviseagainstit.MTU(最大传输单元)尺寸为3924字节,并且不应该参与队列.这是因为loopback接口完全是内核想象出来的,并不存在的接口.现在我们跳过这个无关的接口,它应该并不实际存在于你的机器上.然后就是两个物理网络接口,一个接在我的cablemodem上,另一个接到我家里的以太网端上.再下面,我们看见了一个ppp0接口.应该指出,我们没有看到IP地址.iproute切断了"链路"和"IP地址"两个概念的直接联系.当使用IP别名的时候,IP地址的概念显得更加不相关了.尽管如此,还是显示出了标识以太网卡硬件的MAC地址.
3.4.2.让ip显示我们的IP地址
[ahu@homeahu]$ipaddressshow
1:
lo:
mtu3924qdiscnoqueuelink/loopback00:
00:
00:
00:
00:
00brd00:
00:
00:
00:
00:
00inet127.0.0.1/8brd127.255.255.255scopehostlo
2:
dummy:
mtu1500qdiscnoop7link/ether00:
00:
00:
00:
00:
00brdff:
ff:
ff:
ff:
ff:
ff
3:
eth0:
mtu1400qdiscpfifo_fastqlen100link/ether48:
54:
e8:
2a:
47:
16brdff:
ff:
ff:
ff:
ff:
ffinet10.0.0.1/8brd10.255.255.255scopeglobaleth0
4:
eth1:
mtu1500qdiscpfifo_fastqlen100link/ether00:
e0:
4c:
39:
24:
78brdff:
ff:
ff:
ff:
ff:
ff3764:
ppp0:
mtu1492qdiscpfifo_fastqlen10link/pppinet212.64.94.251peer212.64.94.1/32scopeglobalppp0
这里包含了更多信息.显示了我们所有的地址,以及这些地址属于哪些网卡."inet"表示Internet(IPv4).还有很多其它的地址类型,但现在还没有涉及到.让我们先就近看看eth0.上面说它与IP地址10.0.0.1/8相关联.这是什么意思呢?
"/8"表示IP地址表示网络地址的位数.因为一共是32个bit,所以我们的这个网络有了24bit的主机空间.10.0.0.1的开始8bit是10.0.0.0,也就是我们的网络地址,我们的子网掩码是255.0.0.0.其它的bit直接连接在这个网卡上,所以10.250.3.13可以直接通过eth0联络到,就象10.0.0.1一样.对于ppp0,仍是相同的概念,虽然数字看上去有所不同.它的地址是212.64.94.251,不带子网掩码.这意味着这是一个点到点的连接,而且除了212.64.94.251之外的地址是对端的.当然,还有很多信息.它还告诉我们这个链路的另一端只有一个地址:
212.64.94.1./32意思是说没有表示网络的bit.掌握这些概念是绝对重要的.如果有问题,不妨先参考以下这个HOWTO文件开头曾经提到的那些文档.你应该注意到了"qdisc",它是基于对列规范的一个概念.它在后面会变得很重要.
3.4.3.让ip显示路由
好的,现在我们已经知道如何找到10.x.y.z了,然后我们就可以到达2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ip 高级 功能
![提示](https://static.bdocx.com/images/bang_tan.gif)