Linux 路由器
路由器是互联网最重要的组成部分之一,因为互联网上的每一比特信息都要经过许多路由器。互联网上使用的大多数路由器都是思科制造的。虽然这些路由器性能良好,但价格昂贵。
在我们需要节约成本的情况下,Linux 路由器是一个有吸引力的替代方案。当用作局域网的简单网关时,它几乎可以是免费的。所需要的只是一台旧的 486DX 机器,带有多个网络接口。显示器并非总是必需的。如果用于复杂的应用,您将需要一台奔腾 PI 200MHz MMX,虽然成本较高,但仍然比功能相当的商用路由器便宜三到四倍。
如果有一个拥有多个局域网的小型实验室,并希望建立一个可靠且安全的互联网连接,那么购买商用路由器的成本可能不合理。在这种情况下,最经济的解决方案是使用低成本处理器运行 LRP(Linux 路由器项目,www.linuxrouter.org)发行版,这是一个以网络为中心的 Linux 微型发行版。
LRP 非常小,可以安全地从单张 1.44MB 软盘启动。它使得构建和维护防火墙、路由器、交换机、集线器等变得廉价且直接。
在本文中,我们将展示如何为两到四个局域网设置 Linux 路由器,并在不同条件下测试其性能。这里描述的所有工作都是在运行在 733MHz 的 Intel PIII 上完成的。为了比较,我们还使用了奔腾 I 和 II。在此,我们介绍了我们对 Linux 路由器性能的调查结果,并将其与商用路由器进行了比较。
Linux 路由器最常见的功能是连接两个网络。通常,这将是局域网和互联网。对于我们的实验,考虑到无法获得足够快的互联网连接来充分地压力路由器,我们使用服务器来模拟互联网。
为了进行性能测量,我们设置了一个简单的路由器配置,如下所示
下载 idiot 镜像 (lrp 2.9.8) 的副本。有关详细信息,请参阅边栏“要使用哪个磁盘镜像”。
将镜像解压到软盘 (1.44MB/1.68MB 超级格式化) 并使其可启动。最好的方法是使用 WinImage (www.winimage.com)。
获取您正在使用的以太网卡的内核模块。我们使用了带有 RTL8139 芯片组的 RealTek 以太网卡,因此我们使用的模块是 rtl8139.o。将其添加到您的内核。您的 Linux 路由器现在已准备好进行配置。有关详细信息,请参阅边栏“为以太网卡添加内核模块”。
从您的 LRP 磁盘启动并打开 network.conf 文件(位于 /etc/network.conf 中)。现在修改它,使其看起来像清单 1 [可在 ftp.linuxjournal.com/pub/lj/listings/issue100/5826.tgz 获得]。适当的注释在那里用于修改。
保存更改并备份它们。重启。
Linux 路由器的配置现已完成。现在我们将描述其在不同配置中的性能。因为我们不使用动态路由,我们将在以下实验中根据实验的配置定义静态路由。注意:在您完成 Linux 路由器的配置后,请写保护您正在使用的软盘。
我们计算机实验室中的测试设置使用 100Base-T 以太网。网卡和交换集线器是 100Base-T。所有平台都运行 Linux 2.2 内核,而 Linux 路由器是它们所有平台的默认网关。性能是在不同的 LRP 盒子(例如 PI 133MHz、PI 200MHz 和 PIII 733MHz)上测量的。
第一个配置使用一个客户端和一个服务器。我们通过交叉 UTP 100Mb 电缆将服务器连接到 LRP 盒子的第一个网卡 (eth0),并将客户端连接到第二个网卡 (eth1)。然后,我们在 Linux 路由器上设置 ipchains 规则,以通过发出以下命令来转发客户端和服务器之间的流量
ipchains -I forward -j ACCEPT -s 192.168.1.0/24 -d 192.168.0.0/24 -b
我们测量了当服务器和客户端之间存在流量时 Linux 路由器的带宽。有关不同 LRP 盒子的测量结果,请参见表 1。

图 1. 用于测量 LRP 盒子带宽的设置一
在这种情况下,奔腾 I 的测量结果具有误导性,因为瓶颈是 100Base-T 以太网的 90Mbps 实际限制,而不是路由器的容量。
配置二是用一个服务器和多个客户端完成的。我们将一个服务器连接到 LRP 盒子的第一个网卡 (eth0),并通过不同的集线器将三个局域网分别连接到其他三个网卡。设置如图 2 所示。此设置的 ipchains 规则如下所示
ipchains -I forward -j ACCEPT -s 192.168.0.0/24 -d 192.168.1.0/24 -b ipchains -I forward -j ACCEPT -s 192.168.0.0/24 -d 192.168.2.0/24 -b ipchains -I forward -j ACCEPT -s 192.168.0.0/24 -d 192.168.3.0/24 -b ipchains -I forward -j ACCEPT -s 192.168.1.0/24 -d 192.168.2.0/24 -b ipchains -I forward -j ACCEPT -s 192.168.1.0/24 -d 192.168.3.0/24 -b ipchains -I forward -j ACCEPT -s 192.168.2.0/24 -d 192.168.3.0/24 -b
您可以编写一个脚本来运行这些规则,从而无需每次启动 LRP 盒子时都在命令提示符下输入它们。它应该放在根目录中,以便用户只需输入 ./文件名 即可运行所有规则。我们测量了当服务器和多个客户端(客户端可能来自相同或不同的局域网)之间存在流量时路由器的带宽。
图 3 中的图表显示了 LRP 在服务器和客户端之间路由流量时的性能。从该图表中,我们得出结论,基于 PI 133MHz 的 Linux 路由器可维持约 51Mbps 的带宽,而基于 PI 200MHz 的 Linux 路由器可维持约 82Mbps 的带宽。发现在同一网段(例如,两者都在内部 LAN1 上)上的两个平台之间的测得带宽等于 90Mbps。在这种情况下,路由器不参与通信。这是 100Base-T 以太网、星型拓扑结构上的两台计算机之间的直接通信,因此以太网的实际限制为 90Mbps。由于物理传输介质的限制,无法计算基于 PIII 的 Linux 路由器的带宽。
对于第三个配置,我们设置了多个服务器和多个客户端(交叉 ping)。在此测试设置中,我们使用了连接到 LRP 盒子的 eth0 和 eth2 上的两个服务器。
当服务器 1 和客户端 1 以及服务器 2 和客户端 2 同时进行数据包交叉 ping 时,观察到 Linux 路由器的带宽略有降低(仅 1-2%)。
Linux 路由器运行非常稳定。我们已经运行了很长时间,并且在整个时间内都表现出非常稳定的性能。图 5 和图 6 中的图表显示,Linux 路由器的带宽相当恒定,并且数据量大幅增加。
用于从 Linux 路由器启动的写保护介质提高了其抵御黑客攻击的安全性。一旦启动,它就完全在 RAM 上运行。您可以安全地从软盘驱动器中取出软盘,并将其放在安全的地方,直到再次需要它。此外,单张软盘可用于启动许多相同的 Linux 路由器,并在运行时更改配置。
Linux 路由器易于操作和配置。除了普通 PC 所需的维护外,它不需要任何特殊维护即可使用。如果出现问题,配置它只需几分钟。此外,它基本上是软盘上的软件;如果您的 LRP 盒子因电源波动(第三世界国家的常见问题)而损坏,您可以立即将另一台可用的 PC 转换为您的路由器,方法是从损坏的 LRP(如果它们未损坏)添加网卡,然后从软盘启动它。此路由器根本不需要任何配置,除了运行时配置。您可以想象这有多大的优势——想想如果您的思科路由器损坏会发生什么。
以下是将 Linux 路由器与我们实验室中可用的思科 2620 路由器进行的比较。
构建一台好的 Linux 路由器(基于奔腾 I,200MHz MMX),配备 1 个 FDD、32MB RAM 的成本不到 100 美元。(如果您使用最低要求的硬件,即带有 16MB RAM 的 486DX,则可能几乎是免费的。)不一定需要显示器。您可以在配置时临时使用借来的显示器,或者通过远程串行连接进行配置(如果您通过 serial.lrp 软件包包含对此的支持)。另一方面,配备 50MHz Motorola 处理器、16MB 闪存 RAM 和 40MB DRAM 的思科 2620 的成本超过 3,500 美元。
虽然功耗在这里不是主要关注点,但在大多数应用中,值得注意的是,Linux 路由器(运行在 PI 200MHz, MMX 上)的功耗低于 30W,而思科 2600 系列路由器的功耗为 75W。
您可以在 Linux 路由器中添加任意数量的网卡(受主板上的插槽数量限制)。在思科 2600 中,只有一个快速以太网卡可用。
Linux 路由器的模块化是无与伦比的。它的软件包系统允许轻松删除和添加功能。您可以使用 lrpkg 命令添加/删除软件包,甚至在运行时也可以。只有当 Linux 路由器需要一些额外的硬件时,您才需要关闭它才能添加模块。但是,可以使用 insmod 在运行时安装硬件的内核模块。思科路由器的设计不如模块化。
对于 Linux 路由器,开放市场上有各种各样的硬件和软件产品可用,因为它具有普通 Linux 操作系统的完整结构。您可以使用任何支持 Linux 路由器的制造商的产品。另一方面,思科路由器在这方面受到限制。通常只有思科产品与思科路由器一起使用。
在您的路由器上使用 Linux 作为操作系统,您可以获得额外的优势,即您可以根据自己的需求使用 shell 脚本构建自己的软件包。您还可以从可用的 Linux 文献中获得大量帮助。思科路由器有自己的特定操作系统,称为互联网操作系统。思科 2620 使用 IOS 版本 12.1。虽然它是定期开发的,但您只能使用特定路由器上使用的特定 IOS 版本中可用的那些功能。
与思科路由器一样,Linux 路由器也支持多协议功能。它支持 RIP、BGP、OSPF 以及通过软件包添加的更多协议。
以太网路由器、防火墙、DNS 和 ISDN 等服务可以在 Linux 路由器上初始化。但是,初始化 DNS 等服务(高度 CPU 密集型)会降低其性能。最好使用单独的机器作为 DNS 服务器。思科路由器具有语音、数据和视频的多业务集成。与思科路由器一样,IP 伪装、端口转换、负载均衡、透明代理和接口别名都可以在 Linux 路由器上实现。
思科路由器支持 IPX、令牌环、VLAN、VPN、Apple Talk 和 DDR 以进行高级路由。Linux 路由器也可以通过适当的软件包支持这些功能。虽然要做到这一点,需要一些 Linux 专业知识和一些额外的硬件,这将增加 Linux 路由器的成本,但它仍然远低于思科路由器的成本。
根据思科路由器的型号和系列,它具有有限数量的 WAN 插槽。在 2620 中,有两个 WIC(WAN 接口卡)插槽、一个网络模块和一个高级集成模式插槽。双端口串行 WAN 卡的异步速度为 115.2Kbps,同步速度等于 2.048Mbps。端口 1 仅支持同步模式。Linux 路由器也支持 WAN 接口卡。Sangoma WIC (www.sangoma.com) 在 LRP 用户中非常受欢迎,它们的同步数据速率为 8Mbps。使用这些卡,您可以组合许多 LRP 盒子。但是,缺点是 LRP 盒子的成本会增加——此卡的价格约为 400 美元。
基于 133MHz 奔腾 I 的 Linux 路由器的带宽约为 51Mbps,而基于 200MHz 奔腾 I 的 Linux 路由器的带宽为 82.5Mbps。Linux 路由器在 733MHz PIII 上的性能非常高 (90Mbps),以至于它饱和了 100MHz 以太网。我们还研究了 RAM 对路由的影响。在这种情况下,事实证明,增加 RAM 对路由性能没有影响。但是,通过增加 RAM,您可以设置更大的 RAM 驱动器,如果您的路由表变得非常大,您可能需要这些驱动器。
我们已经探讨了 Linux 路由器的性能、稳定性、成本、高度模块化设计、低功耗等等。更多关于 Linux 路由器的工作正在进行中,以提高其路由性能。对于小型办公室或实验室,以节约成本为主要考虑因素,Linux 路由器是理想的解决方案。小型企业的典型配置如图 7 所示。

Kaleem Anwar (kaleem_002@yahoo.com) 即将从巴基斯坦拉合尔工程技术大学电气工程系毕业,专业为计算机工程。他的兴趣领域包括 Linux、Java、控制系统、计算机网络、算法设计和数字信号处理。
Muhammad Amir (amirsher03@hotmail.com) 即将从巴基斯坦拉合尔工程技术大学电气工程系毕业,专业为计算机工程。他的兴趣领域包括 Linux、Java、控制系统、计算机网络、算法设计和数字信号处理。
Ahmad Saeed (electri17@yahoo.com) 即将从巴基斯坦拉合尔工程技术大学电气工程系毕业,专业为计算机工程。他的兴趣领域包括 Linux、Java、控制系统、计算机网络、算法设计和数字信号处理。
Muhammad Imran (imran_uet@hotmail.com) 即将从巴基斯坦拉合尔工程技术大学电气工程系毕业,专业为计算机工程。他的兴趣领域包括 Linux、Java、控制系统、计算机网络、算法设计和数字信号处理。