Linux 在 Holt 公立学校

作者:Mark Lachniet

Holt 公立学校位于密歇根州中部地区,由大约 5,400 名学生组成,年龄从学前班到 12 年级不等。我们拥有由 10 所学校和一个行政办公楼组成的广域网。这些学校内共有约 900 台工作站:约 600 台 Macintosh 机器(LC3 和 Centris 610)和约 300 台 Intel 机器。已安装的网络由多个 10MB/s 以太网 LAN 网段组成,这些网段通过 56K 专线连接。DSU/CSU 单元由使用 Newport Systems LAN2LAN 卡的 Novell 4.x 文件服务器控制,并且仅路由 IPX 流量。Novell 文件服务器为 Intel 机器提供 NetWare 服务,为 Macintosh 机器提供 AppleTalk 服务。

自 1993 年以来,计算机网络世界发生了翻天覆地的变化,我们认识到需要更新我们的系统。除了应用需要更大的带宽之外,让教室能够访问互联网已成为必需。公立学校一直面临着紧张的财政预算,而对网络进行重大更改通常成本很高。由于这些因素,我们学区不得不研究升级系统的替代方法。通过两种关键技术的结合,即扩频无线 WAN 链路和 Linux 代理服务器,我们能够提供我们学区想要的东西:一个功能强大且成本低廉的系统。事实上,根据我们的财务计算,整个系统(包括 Linux 机器硬件)应该在 5 年内收回成本,这仅仅是基于六条专线的经常性成本。

升级我们的网络有两个主要问题。第一个问题是我们的 WAN 链路速度慢且非常昂贵。使用 56K DSU/CSU,我们能够传递 GroupWise 电子邮件,进行一些管理并复制我们的 Novell 目录服务。在这种速度下,复制文件很慢,整个学区访问互联网是不可想象的。为了提供更大的带宽,我们用 Pinnacle Communications of Dayton, Ohio 公司的无线 4MB/s 桥接单元替换了我们的 56K 线路。无线链路可以在每个通道上以 2MB/s 的速率同时传输数据,并充当以太网桥。

以太网桥,以其最简单的形式,是一种根据数据包的目的地选择性地转发或丢弃数据包的设备。网桥学习哪些网络设备(基于其唯一的 MAC 地址)位于哪个网络接口上,并将信息记录到其内部表中。当数据包到达网桥时,网桥会查看其目的地。如果数据包的目标是网桥的另一侧,则转发该数据包。如果数据包的目标是网桥同一侧的网络设备,则忽略该数据包。通过这种方式,网桥仅传递需要发送的数据包,并消除网段之间不必要的流量。我们使用的无线桥接产品在以太网段和无线“虚拟”网络之间执行完全相同的功能。这使得网络配置非常简单高效。

Linux at Holt Public Schools

最初,我们使用了如图 1 所示的路由 56K 解决方案。对于我们的 Novell 网络,这工作得相对良好。但是,它要求所有流量都必须路由。这对于 NetWare 来说很好,NetWare 使用 RIP 等协议来自动配置路由。但是,为了传递 TCP/IP 数据,有必要将我们的 C 类 IP 地址范围划分为多个较小的子网。这将导致可用 IP 地址的净损失,并加剧带宽问题。

使用无线链路,我们能够建立一个更加灵活的网络。由于链路可以配置为点对点或多点,因此可以创建一个由多个位置组成的单个虚拟桥接无线电网络。在教育中心,我们有全向天线,配置为中继器。由于远程位置使用定向链路并直接指向教育中心,因此它们无法直接相互通信。为了缓解这个问题,教育中心网桥配置为将所有非针对其自身以太网 LAN 网段的流量转发回无线网络。因此,虽然一所小学无法直接与另一所小学通信,但它们可以通过在 OMNI 中额外跳转一次来进行通信。这在硬件中透明地发生,并且网络设备看不到。除了一所偏远的学校 (Dimondale) 外,我们能够将每个位置连接到一个单一的无线网络中。我们在西校区区域使用了一个中继器,将这所辅助学校连接到更大的网络。在这个位置,实际上有两个不同的无线链路插入到同一个集线器中。虽然到 Dimondale 的链路实际上是一个完全不同的无线网络,但在逻辑上,它似乎是更大的无线网络的一部分。完整的物理无线网络看起来像图 2 中的图片。

Linux at Holt Public Schools

通过桥接拓扑,我们能够在扩展 TCP/IP 功能的同时维护我们的 Novell 通信。对于我们的 TCP/IP 服务,我们部署了许多 Linux 代理服务器。这些 Linux 服务器是奔腾计算机,范围从奔腾 90 到奔腾 150。它们具有 32 到 64MB 的奇偶校验 RAM 和 850MB 到 2.1GB 的 IDE 硬盘。它们每个都有两张 D-Link NE2000 兼容以太网卡。这些机器安装了最简化的 Slackware 3.2 发行版,配置为 IP Masquerading 防火墙,并充当我们远程 LAN 网段的互联网网关。服务器上还运行着 Squid Internet Object Cache 软件,这使我们能够在服务器上缓存 HTTP、FTP、GOPHER 和 WAIS 数据。大多数其他 Linux 软件,例如登录 shell、FTP 服务等,已被禁用或限制为单台管理机器。

在 IP Masquerading 和 Squid Object Cache 之间,我们能够提供必要的互联网服务。通过 masquerading,我们仅使用 7 个真实的 IP 地址就为我们大约 900 个客户端提供了访问权限。此外,我们可以配置防火墙以允许不同类型的工作站进行不同的访问。例如,我们可能希望配置防火墙,以限制计算机实验室,同时允许教师工作站访问。此外,由于防火墙的性质,我们的客户端或多或少无法被外部世界访问,从而赋予了一定的安全性。使用标准的 ipfwadm 程序,有许多可能的配置选项。

总的来说,无线链路的速度非常好。当网络首次启动时,我们开始收集有关链路速度和可靠性的信息。为此,设置了一个脚本,该脚本运行一个名为 tcpspray 的程序,以将 100KB 的数据传输到每个位置,并测量到达那里所需的时间。该脚本在管理工作站上持续运行,并每 15 分钟测试每个链路。以下是我们其中一个无线链路的实际输出—在这种情况下,是教育中心和高中之间的链路

Tue May 27 18:19:35 EDT 1997 Sycamore/HS: Transmitted
102400 bytes in 0.551536 seconds (181.312 kbytes/s)

对通过外部 USR 28.8k 上的 PPP 连接的机器运行相同的测试,我们得到以下结果

Tue May 27 18:25:43 EDT 1997 PPP: Transmitted
102400 bytes in 47.041576 seconds (2.126 kbytes/s)
诚然,该 PPP 链路的运行速度应该更快一些。我曾期望看到更接近 3K 或可能 4KB/s 的吞吐量。最后,为了将其与另一种流行的网络选项进行比较,请看一下我连接到我的个人互联网主机的 10MB/s LanCity 电缆调制解调器所达到的吞吐量
Mon May 26 18:28:13 EDT 1997 Cable Modem: Transmitted
102400 bytes in 0.294357 seconds (339.724 kbytes/s)
请记住,这些数字并不能让您了解全貌。例如,吞吐量的速度每时每刻都在变化,幅度高达 50%。网络中只需一瞬间的延迟就会产生非常差的读数。我提供的读数代表平均吞吐量。此外,发送和接收信息的计算机的速度也起着很大的作用。用于上述测试的所有机器都在运行 Linux,但如果不是,TCP/IP 堆栈的速度也将是一个因素。此外,重要的是要注意,某些服务比其他服务具有更多的数据开销。因此,性能可能会因您使用的服务而异。例如,FTP 的运行速度与 tcpspray 测试大致相同。

除了速度之外,控制互联网访问也很重要。作为一个公立学区,我们需要对我们的学生在互联网上做什么和看到什么负有一定的责任。为此,我们强制使用 Squid Cache,允许我们监控访问的文档类型,并要求有效的用户名和密码才能访问缓存。通过在防火墙处过滤端口 80 的所有流量,客户端工作站必须使用缓存才能获取 WWW 文档。Squid 允许使用 htpasswd 样式的身份验证,就像 Apache 等 Web 服务器软件包一样。使用这种身份验证方法,我们可以管理用户对缓存和万维网的访问。此外,Squid 允许我们配置访问控制列表,这将禁止某些可能危及我们学生天真无邪的“已知不良”站点。

Linux at Holt Public Schools

在每个单独的 LAN 网段,我们都有类似于图 3 中的图片的配置。无线链路插入到一个小型集线器中,该集线器也连接到 NetWare 服务器和 Linux 计算机。NetWare 服务器负责路由 IPX/SPX 流量,而 Linux 计算机负责 TCP/IP 流量。所有客户端工作站都配置为 10.0.0.0 网络,并将它们的 Linux 计算机设置为默认网关。当客户端发送 TCP/IP 流量时,它会通过 Linux 计算机,通过无线链路,到达教育中心,最终到达互联网。

在 Novell 方面,配置非常简单。我们只是将原始以太网卡保留在其原始设置,并为无线 LAN 配置了第二张以太网卡。当然,我必须用网络号 3141 配置第二张卡,这样我就可以称之为 “Pi in the Sky”(空中的 π)。我们都必须在可以的地方寻求幽默。

代理服务器一直运行良好。我们的第一个 Linux 代理服务器,它基于内核版本 2.0.18,已经运行了几个月,从未崩溃过。即使面对不断增长的需求(和日益流行的)PointCast 流量,它也表现出色。借助 Squid,所有通过代理的文档都会被缓存,从而允许后续请求以接近以太网速度从代理服务器获取。这减少了通过我们互联网连接以及整个互联网的流量。在学校环境中,这非常有效。例如,当老师想和整个计算机实验室一起访问某个网站时,他只需在前一天晚上查看页面即可。当班级第二天进来时,文档会非常快速地提供,使得整个班级都能够以以太网速度浏览该网站。借助诸如 wget 之类的实用程序,教师可以使用简单的 shell 命令递归地缓存整个站点。

使用 Linux 使我们能够组建一个大大改进的网络,并使用有限的资源为我们所有的工作站提供互联网访问。我们将 WAN 带宽从痛苦的 56K 提高到了令人尊敬的 4MB/s。在 Squid Internet Object Cache 的帮助下,我们已成为负责任的互联网公民,并减少了不必要的网络流量。现在,我们甚至可以将我们所有的电子邮件都称为航空邮件。如果没有每天为 Linux 做出贡献的数百人的努力,这一切都不可能实现。特别是在教育领域,Linux 非常适合—它便宜、灵活且功能强大。

Linux at Holt Public Schools
Mark Lachniet 是 Holt 公立学校的网络系统专家。Mark 的爱好包括飞盘高尔夫、“nerdin” 和自酿啤酒。可以通过 lachniet@pilot.msu.edu 联系 Mark。Mark 维护着一个小型的个人主页,其中包括 IP Masquerading 教程、关于创建像上面描述的代理服务器的 HOWTO(正在进行中)以及其他杂项内容。他的主页可通过 http://scnc.holt.k12.mi.us/~lachniet/ 访问。
加载 Disqus 评论