1.路由器的原理

先谈谈路由是怎样一回事情。TCP/IP通信时,使用IP和netmask来确定机器所在的子网,假如是同子网的机器间通信,就直接用广播的方式传过去。具体情况是:

源地址发出arp广播寻问目的地址的MAC

目的地址回应arp广播,将MAC发会源地址

构建联接开始传送(也是广播的形式)

倘若目的地址和源地址不在同一子网内就须要把包传送到路由器(网段,注意TCP/IP通信西路由和网段是一个概念,不过这并不适用于所有的通信合同),再由路由器一级级的发送,直至送到目的地址所在子网的路由器,再由此路由器在此子网内用广播的形式传送。

路由分为动态路由和静态路由。其中静态路由的是很简单的,就是在网路中从源地址到任意的目的地址都只要一条固定的传送路线。动态路由也就是有好几条传送路线啦。动态路由的益处再于若果一条路线不通了还可以使用另外一条路线,这时就有两个很重要的问题:怎样选择最合适的传送路线?怎样传递路由信息?

不同的选择方式和传递方法形成了不同的路由合同。动态路由合同中最常用的是RIP合同和EGP合同,其他的还有Hello,BGP(似乎是这个吧,:pp总之我是没有见过的)等。选择传递路线的方式在配置路由器中不是重点,这儿就不说了。下边重点讲下路由信息的传递。

RIP合同是通过主动的广播是传送路由表的。它的实现方式很简单,路由器在启动的时侯发出一个恳求,收到恳求的机器就把自己的路由表传送给它。也可以由路由器主动的广播来发出自己的路由表。RIP合同经常用在不大的局域网中,好多的Unix工作站都配置了RIP合同(由一个叫routed的daemon来完成)。这样作的用处在于便捷了网路管理员,可以不用每台机器或则路由器都配置的路由表(网段)。实际上,中科院的网路用的就是RIP。按我的意见,RIP是最弱的,假如有人捣乱一下linux 内核,胡乱广播路由表,结果一定会挺好看:)

EGP合同在传送自己的路由表前要通过一个"找邻居"的方式来确定不会收到不相干的路由表,其具体方式是路由器要先配置几个邻居,也就是其他的路由器,由这种路由器来传递给它的路由表。这样,路由器就安全多了。

里面简单的谈了一些在配置路由器中可能用到的原理,好多地方可能讲得不是很正确和完整,希望诸位看官不吝指点。:)

2.用Linux做路由的方式

Linux做路由是很容易的,不过要分清不同的情况,好多人在配置路由时搞错了情况,以至于费了很大劲也弄不下来。我把常见的情况分为3种:

1。只有有限的ip资源,希望通过一个合法ip代理出多个内部ip的情况这个使用IpMasquerade就可以了,具体方式可以参看IpMasquerade的英文How-To或raner写的Linux做路由器(精华区中)

2。为了减少局域网的负担,把几个合法ip单独割下来,做一个小子网的情况。

这些情况,就是精华区中那篇最老的Linux做路由器的文章了,是那种日本人写的那篇。这些情况是最简单的,只要在内核中编译上网卡的驱动和IpForwarding再正确算出netmask,写静态路由表和arp表即可。

想补充两句的是关于静态路由表和arp表的问题,通常人只是照者去做了没有想为何,虽然弄清为何还是对配置路由器和处理故障很有帮助的这儿降低的静态路由表的作用是告诉从外边来要进子网的包路由的方向降低静态arp表是由于这个子网原本是从大的子网划出去的,所以本子网内传送包以及从大子网的外边来包的时侯,包的源地址广播发出的arp申请须要回应,这个工作原本是由哪个IP的机器来完成的,但是如今隔了个路由器,arp恳求传不过去,但是也须要路由器来应答,以促使源地址把数据传送到路由器上。

3。想用linux来取代原先的正常的路由器。此类情况大多是由于,硬件路由价位高昂如何安装LINUX,软路由的功能上或性能上不能满足要求。此类情况曾经没有文章提及过,虽然这倒是最简单的一种情况。

这时只要问清楚运行的路由合同就可以了,假如是静态路由的话,先设置好你的网卡,致使你做路由的机器可以ping通外边和上面子网,这部份slackware和redhat的设置各不相同,redhat比较简单,只要用netconfig加上就可以,而slackware对第一块网卡用netconfig,对前面的网卡则要手工写一下

ifconfig$IF1$IPADDR1netmask$NETMASK1broadcast$BROADCAST1

routeadd-net$NETWORK1netmask$NETMASK1gw$IPADDR1

。这时侯路由即使配置好了,不过要注意的是,redhat上的IpForwarding的开关缺省是关上的,须要在netconfig上面设为打开。假如没有装X的东西,这么也可以手工更改/etc/sysconfig/network文件和/etc/sysconfig/network-script目录下的if-eth?等文件假如是动态路由的话要分情况,rip是最好弄的,只要起个routed就可以了,倘若不行就给routed加上-g-s参数让routed去广播路由表就可以了。

假如是其他的情况就要配置gated了,gated是一个专用的,支持多路由合同的高效的路由软件,其缺点是配置麻烦,假如我再写下去还会吃了中中午了linux路由器,所以呢有能力的就去看man和文档,没有时间和精力去看的呢先推荐一本书《TCP/IPAdministration》有英文译本linux系统路由器,内容是老点,不过还值得收藏,上面对路由问题讲得很清楚。假如连书都不想买,那只得等我有空再写啦……

选择哪些发行版本来实现路由器呢?一般的可以使用slackware和redhat,基本上对redhat不是十分清楚的用户不要使用redhat,由于要用得好还是很麻烦的,选择要安装的软件就是很厌恶的事情,redhat的东西往往会有hole假如对系统不熟还是不要用。slackware很简单(甚至可以说很单纯:),很适宜对系统不太熟悉的用户使用。

其实这种大的distribution用来做route其实是可以的啦,不过呢,我可以给你们推荐一个很小很小的东西,就是LRP(LinuxRouteProject),这个东西还是很酷的,是一个微型的debian,究竟有多小呢?只有一张软驱!!!不要看它小,但是功能很全,并且设置很简单,基本上不懂linux也可以设置。

本文原创地址://gulass.cn/rhxzzhsdcslx.html编辑:刘遄,审核员:暂无