用备件构建办公室网络

作者:Jos Hartman

1998 年我们搬到瑞士时,我们加入了一个英语教会。作为一个计算机人员,我自然而然地参与了教会所谓的计算机系统。该系统由一台 Power Macintosh 7200/90、一台通过 AppleTalk 连接的 Apple LaserWriter 360 打印机和一台装有 Windows 98 的 PC 组成。机器之间交换数据的唯一方法是“地毯局域网”,而 Mac 是所谓的互联网机器(仅供牧师使用电子邮件)。

1999 年期间,办公室开始扩张,这些可怜的小系统无法应对需求的突然增长。互联网也开始成为一个因素,因为每个人都在使用电子邮件,并且教会需要一个网站。

作为一个教会,没有很多资金可以出去购买我们需要的一切。我们大致计划了我们想要的东西,然后我们呼吁会众捐赠他们的旧计算机系统。通过这种方式,我们为每位管理员获得了足够的台式电脑,以及一台可以作为服务器使用的额外电脑。通过不断请求不用的电脑,我们慢慢地将办公室网络建设成今天的样子

1. 一个主要的办公室网络,包含两台服务器(主服务器和备份服务器)、两台局域网打印机、六台工作站和一个 ADSL 互联网连接。

2. 一个专用的互联网网络,管理互联网服务:Web、电子邮件和 VPN 网关。

3. 第三个网络用于开发和测试,也用作远程备份设施。

这三个网络都相距 40 多公里,通过互联网和 VPN 网络相互连接。

硬件

几乎所有的计算机和打印机都是捐赠的(都是别人的旧垃圾)。它们的范围从 133MHz 到 350MHz 奔腾机器,最大内存为 64MB RAM 和 2-6GB 的磁盘空间。

办公室网络是主网络,由六台机器组成。除了服务器之外,它们都是基于奔腾的机器。由于办公室工作人员习惯使用 Windows,因此决定在他们所有的机器上安装 Windows NT 4.0。我们选择 NT 4.0 是因为它比 Windows 9x 更稳定和安全,并且足够小,可以在硬件上运行。

服务器机器是一台 IBM 奔腾 133MHz,配备 16MB 内存和一个 10GB 磁盘。这台机器上安装了 Slackware 7.1 和 2.2.14 Linux 内核。信不信由你,这台机器管理得非常好,即使它充当邮件服务器、内部 Web 服务器以及库和地址数据库服务器。它也是连接互联网的防火墙/网关,最初通过拨号调制解调器,现在通过 ADSL。

由于办公室网络以前从未有过专用的互联网连接,因此在 ISP 放置了一台单独的计算机,以便为教会提供网站。它运行 Web 服务器软件、邮件系统和 VPN 拨号服务。办公室服务器定期连接到此服务器,以下载任何等待的电子邮件并传递排队的传出电子邮件。这台服务器是一台 266MHz HP 机器,配备 64MB 内存和 15GB 磁盘空间。由于 VPN 网络,这台计算机实际上是冗余的,但我们决定保留它,以便邮件、Web 和其他网络服务与办公室服务器分离。

第三个网络是开发和测试网络。它由一台服务器组成,其软件设置与办公室服务器相同。此服务器主要用于在将新软件组件安装到办公室之前对其进行测试。它也充当所有办公室计算机和互联网计算机的备份服务器。这是一台 300MHz 西门子机器,配备 64MB 内存和一个 160GB 磁盘。

软件描述

由于没有数千瑞士法郎来为所有计算机购买微软软件,我们决定尽可能使用开源和免费软件,工作站上的操作系统除外。如前所述,这是 Windows NT 4.0。

办公室设置

工作站使用 Netscape 4.76 进行网页浏览和 Netscape 的内置电子邮件客户端。我们使用 Netscape 的原因有很多,主要原因是

1. 它比 Microsoft Explorer 和 Outlook Express 更灵活。

2. 它不易感染电子邮件和 HTML 病毒。

作为办公套件,我们最初使用 StarOffice 5.1,然后迁移到 StarOffice 5.2。StarOffice 工作得很好,但我们偶尔会遇到使用新发布的版本保存的 Word 文档的问题。

标准 Slackware 7.1 发行版安装在服务器上,以及一些额外的软件包

  • Samba 作为文件和打印服务器

  • Postfix 用于发送和接收电子邮件

  • Apache 作为内部 Web 服务器

  • MySQL 用于数据库服务器

  • PHP 4.0 用于开发浏览器界面,以及用于自动生成每日和每月报告的独立 PHP 可执行文件。

  • StarOffice 日历服务器用于会议和房间安排。

  • ipchains 用于防火墙和 NAT 到互联网。

  • CIPE Version 1.6 用于 VPN 网络。

互联网设置

互联网机器是连接万维网的唯一接口,提供必要的服务

  • Apache 用于 Web 服务器

  • sendmail 用于邮件服务器

  • ipchains 用于防火墙功能

  • CIPE 1.6 用于 VPN 网络。

  • PPTP 用于 VPN 拨入设施。

  • Sophos 防病毒软件(仅在接收邮件时运行)

开发和备份设置

作为主要的开发和测试环境,它几乎是办公室服务器的副本。它还具有一些额外的软件,用于开发和测试新的软件和软件包。

信息流

那么这一切是如何连接的呢?所有重要信息都存储和管理在办公室网络内部。这包括使用 StarOffice 创建的所有文档和服务器上的 SQL 数据库。SQL 数据库内部的信息使用 Netscape 和 PHP(编译为 Apache 中的共享对象)进行编辑。除了接下来讨论的邮件之外,没有任何信息离开办公室网络(远程备份时除外)。

邮件由 ISP 的互联网服务器接收,然后通过 VPN 内部转发到办公室服务器。在这里,每个人都使用 Netscape 阅读他/她的电子邮件。发送邮件时,邮件首先被强制发送到办公室服务器,然后通过 ISP 的服务器转发。这样做的方式是,1) 因为有时分配的 ADSL IP 地址会被列入黑名单,并且 2) ADSL IP 永远不会相同。使用 ISP 的服务器(具有固定 IP)可以很好地解决这个问题。

互联网服务器还负责接受和验证来自需要访问办公室网络内部信息的理事会成员的 VPN 呼叫。在这里,我们选择了 PPTP,因为它不需要客户端的任何特殊软件即可工作。我们还以这样一种方式设置了 PPTP,即根据登录 ID,我们可以使用 ipchains 进一步限制访问。

VPN 网络

拥有所有这些小的网络岛屿,它们需要以某种方式相互连接。显然,互联网太危险和开放。起初我们使用 SSH,但这证明太麻烦了。我们需要一种更简单的数据传输方式。

我们研究了 IPSec,它看起来很棒,但它不合适,因为办公室和备份网络都位于智能 ADSL 调制解调器之后。这些调制解调器从互联网侧自动执行 NAT 并阻止某些端口。最后,我们决定使用 CIPE 1.6。

CIPE 非常小巧,但安装和配置相当容易。它在自动 NAT ADSL 调制解调器后面工作也没有问题。

首先,我们以星型方式设置了 VPN。办公室服务器和备份服务器都创建了到互联网服务器的 VPN 连接,该服务器具有固定 IP。当我们开始通过这些 VPN 连接进行备份时,我们意识到这种星型方式限制了吞吐量。到互联网服务器的互联网链路正在执行双重任务,首先接收来自办公室网络的数据包,然后将相同的数据包发送到备份服务器。

这个问题通过在办公室和备份网络之间直接创建第三个 VPN 连接来解决。然而,这导致了另一个有趣的问题,因为办公室服务器和备份网络都具有 ADSL 网络分配的动态 IP。这通过在 dyndns.org 中创建两个域来解决。通过这种方式,一台机器可以找到另一台服务器的 IP 地址。我们仍然必须编写一个小的类似 ping 的实用程序来检测 IP 更改并强制 CIPE 与新的 IP 地址重新协商 VPN 连接。

开源软件

我们在这些网络的设置中专门使用了免费和开源软件。这使我们能够根据需要配置软件,并将其安装在我们想要的位置。以下是我们已安装的所有免费和/或开源软件包的列表。

VPN(CIPE 和 PPTP)

我们使用 CIPE (Linux) 将不同的网络连接在一起。为了允许用户从互联网访问 VPN,我们在 Linux 网关上安装了 PPTP 服务器软件。使用 PPTP 使我们能够使用标准的 Windows VPN 适配器来控制访问。

Apache、PHP 和 MySQL

我们使用 MySQL 构建了一个定制的地址和库数据库系统。为了检索和编辑 SQL 数据,我们使用 PHP 编写了 GUI,以从标准浏览器搜索和编辑数据。

我们还构建了 PHP 作为独立程序,我们使用它来自动生成数据库中所有数据的每日、每周和每月报告。

StarOffice 5.1 和 5.2

我们在办公室网络中的每台 PC 上都安装了 StarOffice 5.1。主要原因是它是免费的,并且它可以在我们要求的所有平台(Windows、Linux 和 Solaris)上运行。它还具有 JDBC 功能,例如,允许我们访问 MySQL 数据库并生成邮件合并类型的运行,每月打印 500 多封信封。

Samba 和 SMB

Linux 上的 Samba 用作办公室中 Windows 机器的文件服务器和打印服务器。Samba 提供了在共享上实施访问控制的绝佳可能性,但最常用的功能是强制用户和访问权限,当用户连接到共享时。这允许我们在不同用户之间共享文件,而不会遇到读取或写入访问问题。

RSync 和 SSH

RSync 和 SSH 主要用于在不同网络之间创建所有重要数据的镜像映像,通常在夜间进行。我们大量使用 rsync 协议在机器之间传输更改。

E-Fax 用于传真

我们还为传出传真实施了传真网关。此网关使用 Samba 打印队列提交作业,然后通过浏览器界面将传真最终发送到传真号码列表。这种工作方式曾经在Linux Gazette中描述过,我们通过使用 e-fax(非常小的占用空间)而不是 Hylafax(在我们的案例中是过度杀伤)来适应我们的目的。

sendmail 和 Postfix 用于邮件

对于我们的邮件系统,我们同时使用 sendmail 和 Postfix。Sendmail 用作互联网连接上的 MTA,而 Postfix 是办公室网络的邮件网关。我们这样做是因为 sendmail 在拒绝中继或接受来自 VPN 网络外部域的邮件方面非常严格。另一方面,Postfix 在配置方面非常灵活,并且更容易为办公室邮件网络设置和配置。

Sendmail 也更容易配置,以便在邮件接收期间实施过滤器程序,典型的例子包括病毒扫描程序。我们还有脚本来检查超大的传入附件,将传入图像的分辨率更改为较小的尺寸等等。

Sophos 防病毒软件用于检查电子邮件病毒

目前,我们使用 Sophos 防病毒软件检查每封传入邮件是否包含病毒。我们决定使用 Sophos,因为它适用于不同的平台,如 Linux、Windows 和 Solaris。在 Sourceforge 上,我们找到了一个名为 sophie 的软件包,它使用 Sophos API 构建一个永久运行的病毒检查器。这使得检查收到的邮件中是否包含病毒的速度提高了近 100 倍。

CVS 用于跟踪 HTML 更改,WinCVS 用于编辑网页

我们还使用 CVS 来跟踪对互联网 Web 服务器上的网页所做的更改。CVS 允许多个人以受控方式更新网站的各个部分,并且 CVS 注释使记录对网页的更改变得更容易。

由于我们有 Windows 用户,因此 CVS 命令行工具对他们来说有点令人生畏。为了克服对命令行的恐惧,我们在 Windows 机器上安装了 WinCVS,它为 CVS 提供了 GUI 界面。现在,用户可以轻松地从 CVS 检出文件,进行更改,然后在完成后提交回去。

结论

那么我们从这次实践中学到了什么?我们了解到,通过使用开源,可以以最小的软件和硬件投资构建办公室解决方案。

使所有这些小的开源项目协同工作,同时解决办公室工作人员遇到的日常问题,既有趣又具有挑战性。

此外,我们在过去两年中积累的所有经验和知识,我们都可以再次用于我们的专业工作中,解决客户问题。

我们要感谢像 Linux JournalLinux Gazette 这样的杂志以及像 Linux Weekly News 和 SourceForge 这样的网站,它们始终有关于人们如何使用开源项目解决问题的文章。从这些文章中,我们获得了很多解决问题和满足我们遇到的要求的想法。

Jos Hartman 自 1989 年以来一直使用 UNIX,自 1995 年以来一直使用 Linux。他是一名软件开发人员,为气象和航空领域编写消息处理软件。在他的空闲时间,他喜欢观看火车,因为他的爱好是火车模型。他目前与妻子在瑞士生活和工作,他的妻子正在享受永久假期。

电子邮件:jos@hartman.ch

加载 Disqus 评论