论坛风格切换切换到宽版
  • 762阅读
  • 8回复

[问题求助]用 Linux 打造路由器 [复制链接]

上一主题 下一主题
离线njbenben.
 
发帖
1976
C币
-198903
威望
358
贡献值
1
银元
-2
铜钱
4361
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
发言.者:韩波   (.hbzzx2001@yahoo.com.cn )学习

摘自 : IB.M developerWorks--- 印刷

Linux 作为一种新近崛起的操作系统,由于其性能稳定,源码开放及价格方面的..优势而逐渐被广大用户所接受。现在 Linux 的主要用武之地在于服务器领域,但是,经过适当的配置之后,它还可以担当互联网的物理基石-.-路由器这一重要角色。电脑

路由器是通信子网中的通信节点,每个路由器都计算并维护一张路由表,并据此指导数据报前往最佳路径中的下一站,这便是所谓的路.由。这样,经过互联网上所有路.由器的通力合作,数据报就能够沿着一条"最佳"路径到达目的地。在 GNU 软件 Zebra 的协助下,我.们可.以将 Linux 机器打造成一台功能完备的路由器,它能够同时支持 RIPv1、 R.IPv2、RIPng、OSPFv2.、OSPFv3、BGP - 4 和 BGP - 4+ 等诸多 TCP/IP 协议。现在我们首先了解一下 OSPF 和 BGP 协议的运行模式和.基本原理,然后介绍 Zebra 的安装配置方法,让你的 Linux 机器变成支持 OSPF 与 BGP 的路由器。健康

BGP/OSPF 概述

如今,许多公司都.建有多个网络,如果这些网络的类型不尽相同,则需要用路由器进行互联.。路由器是与两个或两个以上的网络连接的计算机,它根据路由协议生成并维护一个路由表,并按照该路由表中的信息转发包。这些路由器对公司内部的网络结构了如指掌,知道将分组送到目的地的全部细节,但对于其他公司的网络结构并不了解。像这样"在同一机构下管理的一系列路由器和网络"被称为自治系统(AS)。由不同机构掌管.的.自治系.统,可以采用不同的路由选择算法;但同一自治系统内的所有路由器都使用同一路由协议,以便于自治系统内部各个.路由器互换路由信息来维持相互的连通性。每一个自治系统都有一个16位的"自治系统(AS)编号"作为标志,就像 IP. 地址一样,它是由专门机构来分配的。.

自治系统内.的路由器.称为"内部网关",所用的协议称为".内部网关协议"。内部网关协议大体上分为两类,一类是距离向量协议,如 RIP,EIG.RP 协议;另一类.是链路状态协议如 OSPF .协议。链路状态路由协议与距离向量协议的不同之处在于,采用链路状态路由协议的路由器不是交换到达目的地的距离,而是维护一张网络拓扑结构图。然后用数据库表示该图,其中的表项对应网络的一条链路。路由器根据数据库的信息计算出"最佳路由",由此指导包的转发。当网络拓扑结构发生变化时,只需.将相应纪录而非整个数据库通知其他节点。各路由器做出相应修改并重新计算路由后,就可以继续正常工作。外贸

因为"开放式最短路径优先协议"的文档必须公开发表,所以它是"开放式的"(Open);又因为它采用"最短路径优先"(SPF)算法来计算一个节点到所有其它节点间的最短路径,故名为 OSPF。OSPF 具有支持多重度量制式和多重路径等诸多优.点,因此.成为因特网上推荐使.用的内部网关协议,RIP 却由于自身的局限性而被打入冷宫。现在,在性能上唯一能够与 OSPF 相匹敌的.内部网关协议便是 EIGRP--Cisco 的一个专有协议,但 OSPF 的"开放"本身就是一个响亮的招牌,因为谁.也不想受制于某家.供应商。域名

前面提到,自治系统内的路由器不必知道其他自治.系统的内部结构细节,从而有效地节约了路由器的内存和 CPU 时间,并提高了网络带宽的利用率。但是,如果想与其他公司(自治系统)通信时该怎么办呢?很简单,我们可以在自治系统内指定一个与其他自治系统相连.的路由器为"外部网关",通过它进入.其他自治系统。该路由器使用的协议叫做"外部网关协.议",如边界网.关协议(BGP)。相邻的两个网关必须首先互换"邻机探测"报文,协商是否愿意成为"邻机"。成为邻机则意.味.着两个自治系统同意中转双方的通信流。同意后,两个邻机互换"邻机可达性报文",来监督他们之间的链路的工作情况。接下来便是最重要的工作,用"网络可达性报文"来交换通.过各邻机所能到达的网络的信息,从而实现自治系统之间的连通性。在外部网关的眼里.只由外部网关和连接他们的链路,如此以来,自治系统内的通信由内部网关处理,自治系统.之间的通信交由外部网关处理--一个分级路由的景象已经展现在我们面前,实际上,因特网正是由大量自治系统组成的。教育

建立一个高级路由器

许多人对路由器感到比较陌生,事实上作为一个防火墙使用的 Linux 系统已经是一个路由器了,只.不过还有点"简陋"而已。然而,我们的目标是用 Linux 打造一个"高级"路由器,它必须能够利用动态路由协议(上文提到的协议皆为动态路由协议)工作。这些协议能够使路由器互换相关信息,从而共享穿越网络时所用的那些路径--路由。这一.点对于大型网络(比如 Internet)而.言是"异常".重要的,因为此时再用静态路由(也就是人工.计算设置路由)是根本不现实的。外贸

举例来说.,即使在比较理想--即不考虑路由的变化的情况下,一个边界网关协议(BGP)路由表也至少包含 100,000 条以上的表项。这时,手工建立这样的静态路由是难以.忍受的。很明显,即使我们的网络小于 I.nternet--比如一个大型公司网络,我们还是更.加喜欢动态路由协议。域名

外部网关协议 BGP 通常作为 Internet .的骨干使用,而其它的协议(.如 OSPF)则适于小型的互连网络。开放式最短路径优先(OSPF)协议是一个应用最广的内部网关协议(IGP)。Zebra 是一个开放源代码程序包,通过它你可以在 Linux 上运行 BGP 与 / .或 .OSPF。教育

安装 Zebra

你既可以从 Zebra.org 网站下载 Zebra 的.最新源程序,也能从 Redhat 和 Debian 中获得它,但不一定是.最新版的。从源代码中进行软件安装,你就会发现使用的是一些普通的安装过程。简介如.下:.

./configure
make
make install

配置脚本会搜索系统上已经安装的 IP 栈并且自动地设置成支持他们。.当前,IP 栈很可能仅仅是指 IPv4,但是 IPv6 用.户也不用.担心,因为 Zebra 也会发现并且支持它。教育

程序安装之后,还可能必须在 /etc/servi.ces 中增加一些命令行。Zebra 的守护程序在他们自己的虚拟终端连接(VTY)下运行,所以你.的系统必须知道这些虚拟.终端连接。这里是你应该增加的一些连接∶虚拟主机

zeb.ra.srv 2600/tcp # zebra service.
zebra 2601/tcp .# zebra. vty学习
r.ipd 2602/tcp # RIPd vty.
ripngd 2603/tcp # RIP.ngd v.ty.
ospfd 26.04/tcp # O.SPFd vty域名
b.gpd 2605/tcp # BGPd vty虚拟主机
ospf.6d 2606/tc.p # OSPF6d vty.

配置 Zebra

如果你已经熟悉 Cisco IOS,那你就能在短时间内掌握 Zebra,因为你会发现两者极为相似。Zebra 的每个守护程序使用一个单独的 VTY,这些 VTY 可以通过一个远程登录会话进行动态配置。所以,如果你需要设置 OSPF,简单.地远程登录到该 Linux 上 2604 端口;为了修改内核的路由表或设.置路由协议间的再分发,你可以远程登录到端口 2601,该 Zebra 守护程.序充当内核管理器,管理其他..的守护程序和系统本身之间的通信。域名

现在介.绍如何在一个服务.器上创建和运行 OSPF 和 BGP。Zebra 的守护程序运用纯文本文件储存它们的配置。对于 OSPF/BGP 路由器,将用到三个文件∶zebra.conf、ospfd.conf 和 bgpd.conf。举例..来说,zebra.conf 文件可能会是这样:             电子

! Zebra c.onfiguration saved. from vty          婚庆
! 2002/02/28 01:4.6:12    美容
!
hostname .L.inuxRouter /*主机名为 LinuxRouter*/教育
password .zebra /*口令.为 zebra*/.
e.nable passwo.rd z3bRa /*进入特权模式时的口令为 z3bRa */    美容
l.og file /var/log./zebra/zebra.log /*日志文件的地址*/           女人
!
interface eth0 /*以太.接口 .eth0*/.
desc.r.iption Interface to External Network/*对接口的描述*/    美容
ip address 10.0.0.1./.24 /*该接口的 IP 地址*/    健康
!
inter.face eth1/*以太接口 eth.0*/(广告)
description I.nterface to Internal .Network/*对接口的描述*/服务器
ip address 192.168..66.1/24/.*该接口的 IP 地址*/.

这里的感叹号充当注解标识或分隔符。尽管存在大量不同的网络接口类型(Ethern.et、.ISDN 等等),但只要是 Linux. 内核能够辨认的网络接口类型,Zebra 都可以使用。    外汇

子网掩码都带有网络位的位数(例如/24),默认掩码则不然.(比如 2.55.255.255.0)。注意存在两个口令,一个用于用户模式而另一个用于特权模式。这不仅有利于向非管理员提供访问权限,而且对于创建路由服务器或者路由探测镜也是非常重要的。所有 BGP 管理员都知道,这些探测镜是调试路由问题的关键,因为.他们能够使你就象从一个外部 AS( AS代表自治系统)一.样查看路由。 BGP 路由需要用到 A.S. 编号,AS 编号是一些由 ARIN (美国互联网络号码注册机构)控制的注册号码。.

下一步将.启动一些必要的程序。用以下命令完成∶.
/us.r/sbin/zebra -dk.
/usr/sbin/ospf.d -d.
/usr/sbin/bgp.d -d投资

第一个命令,启动 zebra,该守护程序实际上用来更新内核的路由表。-dk 告诉该程序作为一.个守护程序.运行(d),它的大部分时间在后台运行。k 是另外的一个选项,告诉 Zebra 维护所有已配置的路由。它用来保证在你测试 Zebra 的时候不会意外地删除路由表。一般情况下,设置路由.和接口,需要将 ifconfig 和 ro.ute 这两个命令配合使用。而 Zebra 完全可以替代.这种路由管理方式,使用起来更为简洁。--- 印刷

设置 OSPF

至此,基本的服务已经具备,现在让我们 Telnet 到本地机器的 260.4 端口,开始配置 OSPF。为进入特权模式,键入 enable (正如在Cisco IOS 中一样),然后键入特权模式口.令。接下来,用 configuration terminal 命令切换到.配置模式。值得一提的是 Zebra 也能接受命令缩.写形式,这与 Cisco 极为相似,.如 configuration terminal 可以简写为 config t,这大大缩短了输入时间,使用起来更为方便。另外,如.果输入 list 和 ?,它将显示一个当前可用命令的清单,并附.有一些简略解释。除此之外,还可以键入 tab 用于命令的自动完成。这就是说,如果你想键入命令 clock,只要键入前两个字母 cl 然后按 tab 键,机器就会自动"补全"这条命.令--前提是你键入的字符足以唯一地确定这条命令。这是一个很好的功能,尤其是.当你习惯于这种用法时。          婚庆

接下来,我们还需.要告诉守护程序将通过 OSPF 广播哪些网络以及相关的域(area)。OSPF 的可.伸缩性允许它支持多个域。键入 router ospf 开始配置 OS.PF,然后键入 netwo.rk 192.168.66.0/24 area 0。这告诉路由器,我们将使用 OSPF 广播一个子网掩码为 255..255.255.0 的 192.168.66.0 网络。<性病>

在本例中.,我们让 eth0. 接口变成一个被动(passive)接口,以便使它不.能发送路由更新。这对于实验是非常重要的,因为在那个方向上的其他的路由器可能监听到发送的路由更新,将接口变成一个被动(passive)接口,从而有效的避免扰乱网络的正常运行。为此,键入命令 passive - interface eth0。如果打算将此路由器作为工作路由器使用时.,就没有这个必要了。一旦你完成修改,用 end 命令从.配置模式中退出,然后用 write file 命令保存。这里是一.个快照:(广告)

labrat:~# telnet 0 2604 /.*Telnet 到本地机器的 2604 端口*./.
Trying 0.0.0.0....(广告)
Con.nected to 0.             汽车
Escape character is. '^]'. /*用 '^]'.退出该会话*/投资

He.llo, this is zebra (versio.n 0.84b)域名
Copyright 1996-2000 Ku.nihiro Ishigu.ro(广告)

User Ac.cess Verification电脑

Password: /*在此键入口令,如 ze.b.ra*/虚拟主机
ospfd>; enable/*进入特权模式*./            杀毒
Password: /*输入特权模式口令,如 z3bRa*./.             汽车
ospfd# conf.igure terminal /*从终端配置路由.器*/电脑
ospfd(co.nfig)# router ospf /*配置 OS.PF*/    外汇
ospfd(config-router)# network 192.168.6.6.0/24 area 0 /*通过 OSPF 广播网络 network 192.168.66.0,/24 指出.子网掩码为 24 位,area 0 指出该网络所在的.域*/外贸
o.spfd(config-router)# passive-interface eth0 /*将 e.th0 接口设置成一个被动(passive)接口.*/             汽车
ospfd(config.-router)# end /*.退出配置模式*/学习
ospfd.# write. file /*保存修改*/电脑
Configuration saved to. /etc/zebra/ospfd.con.f学习

请记住.,为了让 OSPF 或 BGP 在某接口上工作,那么该接口必须处于"运行"状态。为手.工运.行一个接口,登录到端口 2601 并且在该接口上执行 no shut 命令。.

建立 BGP

BGP 与 OSPF 的配置大致相同。开始,打开一个远程登录会话到端口 2605。之后执行 configure .terminal,输入 rout.er bgp 进入 BGP 配置模式。如前所述,BGP 使用 AS 编号建立邻机关系并路由通信流。在我们的试验中,我们将使用一.个范围在 .64512 到 65534 之间的私有 AS 号码(换句话说,该号码.旨在机构内部有效,而在因特网上无效)。用 network 命令设置由 BGP 广播的那些网络,如 network 192.168.66..0/24..。与 OSPF 不同的是,BGP 邻机必须静态指定。如同下述∶neighbor remote-as 。这里是一个范例:健康

labrat:~# telnet 0 2.605           女人
Trying 0.0.0..0....
Connected to 0..虚拟主机
Escap.e character is '^]'.外贸

Hello, this is z.ebra .(version 0.84b)电脑
Copyright 1996-2000 .Kunihiro. Ishiguro.

User Access Verific.ation教育

Password:
bgpd>; enable
Password:
b.gpd# configure terminal(        游戏          )
bgpd(config)# router bg.p 65530 /..*配置 BGP,65530 是自治系统编号。也就是将该系统配置成自治系统 65530 上的外部网关*/.
bgpd(config-router)# network 192.168.66.0/24 /*.由 B.GP 广播的网络*/           女人
bgpd(config-router)# neighbor 10.0.0.5 remote-as 65531 /*.静态指定自治系统 65531 上 IP 地址为 10.0.0.5. 的路由器为本.机的邻机*/             汽车
bgpd(config-router)# .end电影
bgpd.# write file           建材
C.onfiguration saved to /etc/zebra/b.gpd.conf.

对于 OSPF 和 BGP,有大量选项可用,限于篇幅不能在此一一介绍。对.于每个协议,我建议在实际使用之前,不.妨先研究一番。为此,可以参考 .GNU Zebra 文档,它会给你提供许多帮助。             汽车

结束语

在网络中,路由通信流的方法有若干种。就路由器而论,虽然有用各种硬件可用,但是费用较高--人们自然就会想到运行一个用 Linux 系统构筑的功.能丰富的路由器作为代替。Zebra 路由.守护程序已经使这一切变为现实。因为支持 IPv4、IPv6 和其它各式各样的协议.,所以 Zebra 能够满足我们所有的路由需求。它还有一个好处就是,因为 Cisco IOS 和. Zabra. 极为相似,如果你以前在 Cisco IOS 环境中工作,可以轻松.的过渡到 Zebra 系统;同时,使用 Z.ebra 也能让你积累起丰富的类似于使用 Cisco IOS 路由器的经验和知识。

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线fenglipiao.
发帖
2012
C币
-60501
威望
388
贡献值
1
银元
-2
铜钱
4611
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
Re:用
zebra不错!昨天刚装上的,正在研究中!

离线beleen.
发帖
2112
C币
-60346
威望
394
贡献值
1
银元
-1
铜钱
4715
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
Re:用
大有收获多谢!!!!顶

离线gbbgbb.
发帖
2003
C币
-60860
威望
359
贡献值
1
银元
-2
铜钱
4504
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
Re:用
呵呵,跟cisco的指令很相似

离线baiyuvii.
发帖
2056
C币
-152556
威望
344
贡献值
1
银元
-4
铜钱
4523
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
Re:用
看了Zebra的网站支持的内核是2.4.x的,不知在fc4上能否实现那?请教了

离线mofan.
发帖
2003
C币
-139169
威望
389
贡献值
1
银元
-2
铜钱
4649
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
Re:用
这个没有试过!我是在2.4内核下装的!回去我到2.6下装试试!

离线yinhezixun.
发帖
2061
C币
-235551
威望
386
贡献值
1
银元
-1
铜钱
4624
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
Re:用
fc4,这个可以的

你test,我朋友安装过

离线brokenfly.
发帖
1941
C币
-152808
威望
364
贡献值
1
银元
-2
铜钱
4383
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13
Re:用
等待anhui的测试结果

离线qwer20.
发帖
2210
C币
-60177
威望
375
贡献值
1
银元
-3
铜钱
4907
人人网人气币
0
只看该作者 8楼 发表于: 2010-04-13
Re:用
zebra.conf
是不是要手动建立呢?


为什么我执行
/usr/sbin/zebra -dk
/usr/sbin/ospfd -d
/usr/sbin/bgpd -d
时出现can't open logfile /var/log/zebra/zebra.log

安装完后log下没有这个命令 ,我手动建立完后执行还是出现上面的提示。
请测试成功的朋友给指点一下。
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个