使用开源技术构建数字生活方式
多年来,我享受了家中许多技术带来的好处。(翻译:技术宅拥有所有炫酷的玩具!)即使我的朋友和家人没有互联网接入,我仍然经常惊叹于现代技术带来的便利,其中许多是开源的。
几年前,我们在整栋房子里铺设了网线,使我们能够从家里的任何房间访问内网和互联网。除了在炎热、尘土飞扬的阁楼里被困数小时之外,这真的不像您想象的那么困难。一旦我们实现了无处不在的网络访问,配置一些服务供家人使用就变得理所当然了。首先,我设置了 Samba,以便我的妻子和我可以有一个共同的地方来存储家庭文档、图片和音乐。这样,我的妻子可以使用她的 Windows 工作站访问我们的文件,而我可以使用我的 Gentoo Linux 工作站通过 NFS,一切“开箱即用”。
最终,我们设置了一个 Apache Web 服务器来提供网页服务。我将其配置为提供一个内网网页,其中只是一堆常用的超链接,以及一组不同的网页给来自互联网的访问者,我在那里尝试推广各种副业。
当然,我运行着自己的电子邮件服务器,exim 用于 SMTP,Courier IMAP 用于 IMAP。我使用 dyndns 为我的服务器提供一个完全限定域名 (FQDN),可以从互联网访问。这样,即使我更换互联网提供商,我的电子邮件和 Web 地址也不会改变。
MythTV 肯定是我遇到过的最酷的玩具。MythTV 是一款数字视频录像机 (DVR),在 Linux 下运行。基本上,要构建一个 MythTV 盒子,您需要从一个标准的 Linux 盒子开始,添加一个视频采集/调谐器卡,一个带有 S-Video 或复合输出的显卡,以及大量的硬盘空间。您最终得到的是功能增强版的 TiVo。使用 MythTV,家庭成员可以从各种不同的菜单中选择他们感兴趣的电视节目,安排何时以及如何录制,并在他们想看的时候观看。该系统甚至可以将节目录制到特定的组中。这样,我孩子们的节目会被录制到“儿童”录制组中,我的孩子们知道如何使用调谐器卡附带的遥控器导航到他们的录制组观看我们为他们录制的节目。孩子们不必等到星期六早上才能观看卡通片和教育节目,我们也不必担心他们偶然看到不适合他们的节目。MythTV 通过互联网自动下载当地的电视节目表——所有这些都附带 MythTV 允许我们跳过广告的额外好处。我不仅可以跳过广告,还可以提高播放速度。通过跳过广告并将播放速度设置为 150%,我可以在 15 分钟或更短的时间内看完 30 分钟的新闻。
但 MythTV 的功能远不止简单的 DVR 功能——远远超出。我们使用 MythMusic 模块播放我们的 CD 和 MP3。我们所有的家庭照片都在电脑上,所以我们可以使用 MythImages 模块在电视上观看它们。我的孩子们很喜欢在电视上看到他们自己和他们认识的人。MythVideo 模块允许我们观看从互联网下载的 .avi 和 .mpg 视频文件。当您考虑到 MythTV 包括天气、游戏、新闻和 DVD 模块时,您会开始明白 MythTV 是一个全方位的娱乐系统。
感谢 Vonage 及其烦人的广告,几乎每个人都听说过 IP 语音 (VoIP)。大多数人都知道您可以使用您的计算机和 VoIP 通过互联网与其他人免费通话。有些人知道您可以使用 VoIP 使用普通电话与其他人通话。但更少的人知道使用名为 Asterisk 的开源软件包设置起来有多么容易。Asterisk 是一个全包式的电话工具箱,这只是一种花哨的说法,即您想对电话和电话呼叫做的任何事情,您都可以使用 Asterisk 完成。
在我们家,Asterisk 处理所有来电和去电,并取代了我们过去散落在房子各处的来电显示盒和答录机。但我们的 Asterisk 安装不仅仅是答录机功能。它还可以筛选我们的电话,几乎可以防止任何电话推销员打扰我们。当有电话进来时,电脑会检查是否有有效的来电显示信息。如果没有,电脑会接听电话并要求来电者输入他们的电话号码。如果他们不输入,系统会挂断他们的电话。一旦收到有效的来电显示,来电者就会听到答录机问候语。系统非常智能,可以按姓名问候我们的朋友、家人和同事。问候语告知来电者,他们必须按 # 键才能联系到我们;否则,他们可以按 * 键或等待 15 秒钟被发送到语音邮件。在这一切发生的同时,电脑会在 MythTV 上显示来电显示,并在服务器的扬声器上宣布来电者的姓名。所有这些都在我们的电话开始响铃之前就发生了!
自从我们安装该系统以来,我们没有一个电话推销员费心按 # 键与我们交谈。此外,许多给我们打电话的人只是想留言,例如我们的牙医诊所确认预约。
我们获得了几个功能,这些功能本应从我们以前的电话公司额外付费。呼叫等待允许我们在已经通话时接听来电。请勿打扰功能允许我们告诉 Asterisk 系统只需将呼叫者发送到语音邮件,这样我们就可以在家中享受一些时光,而不会被电话铃声打断。当然,我们可以通过电话网络或电子邮件远程访问我们的语音邮件。当有人给我们留下新的语音邮件消息时,我甚至会收到寻呼。
因为我的雇主非常仁慈地允许我偶尔在家工作,所以我往往经常打电话。Asterisk 系统让我在办公室拥有一个单独的虚拟电话线。因此,我可以打电话而不会占用普通的家用电话。我的妻子可以在她需要的时候随时使用电话,即使我可能整天都在打电话处理业务。
Asterisk 和 VoIP 为我们使用电话系统提供了很大的灵活性。我们可以使用 VoIP 电话,例如 Cisco 7960,或者我们可以使用许多软电话之一,例如 X-Ten。由于 Asterisk 支持所有主要的 VoIP 协议,例如 SIP、H.323、MGCP、Skinny 和 IAX2,我们的选择几乎是无限的。我们还可以选择安装模拟电话适配器 (ATA),这使我们能够使用现有的电话和电话线路。但我们的 VoIP 系统最好的功能之一是它比我们以前的 PSTN 电话线便宜得多。当我们使用 Qwest 时,我们有一个未公开的电话号码和来电显示,每月花费我们 40 美元,包括长途电话费。因为我能够批发购买 VoIP 电话服务并添加语音邮件等呼叫功能,所以我们上个月的电话账单约为 15 美元,但电话使用量相同甚至更多。
当然,所有这些服务都对磁盘存储提出了很高的要求。仅仅购买一堆硬盘是不够的。您必须有一种有意义的方式来组织它们。因为我拥有超过 1 TB 的磁盘存储空间,所以我使用企业卷管理系统 (EVMS) 来管理我的硬盘空间。虽然我可以选择任何可以想象的 RAID 配置,但我选择了一个简单的线性驱动器追加配置。这基本上相当于能够将所有已安装的 200-320GB 驱动器的存储空间加起来,并将它们作为一个大型驱动器呈现,我可以在其上放置一个或多个文件系统。更重要的是,EVMS 使我可以灵活地将数据从一个物理磁盘移动到另一个物理磁盘,而无需将其从一个文件系统移动到另一个文件系统。我基本上有四个物理硬盘驱动器,它们在逻辑上组合起来形成一个非常大的虚拟硬盘驱动器。驱动器 /dev/hdb1、/dev/hdc1、/dev/hdd1 和 /dev/hda4 组合形成 /dev/evms/media,其中包含一个 750GB 的文件系统。
此功能最近帮助了我。几周前,我开始在系统日志中看到来自一个“中间”驱动器的硬盘 I/O 错误。在大多数情况下,这将是坏消息。但由于我及早发现了问题并正在运行 EVMS,所以我能够购买一个新的硬盘驱动器并将其安装在服务器中。然后,我能够使用 EVMS 管理实用程序将数据从故障驱动器迁移到新驱动器,而无需更改底层文件系统。我只需卸载文件系统,将新驱动器添加到逻辑卷,然后将数据从故障硬盘驱动器中迁移出去。完成后,我只需重新挂载文件系统,几乎没有数据丢失。因此,通过使用相同的原则,我计划能够淘汰旧驱动器并用新驱动器替换它们,而无需进行通常的备份和恢复周期。卷管理器将简单地将数据从旧驱动器透明地移动到新驱动器。
但是,当我想用新的 400GB 驱动器替换老化的 200GB 驱动器,但又没有任何空闲驱动器插槽时,会发生什么情况?显然,我不可能对 750GB 的数据进行备份和恢复!嗯,这不会成为问题,因为有一种名为 ATA over Ethernet 或 ATAoE 的原生 Linux 协议。使用 EVMS、ATAoE 和一个名为 Vblade 的开源软件包,我将能够在我的台式电脑中安装一个新的驱动器,并在我的服务器电脑上本地访问它。EVMS 会将“远程”硬盘驱动器视为本地安装的驱动器,并允许我通过网络将数据迁移到它。迁移完成后,我只需卸下旧驱动器并将新驱动器安装到服务器中。当我重新启动服务器时,就好像新驱动器一直都在那里一样。
由于我的许多(如果不是大多数)朋友也拥有家庭网络,因此将它们全部连接在一起似乎很有趣。由于我的大多数朋友都拥有动态 IP 地址,并且他们中的一些人使用 Linux 以外的系统作为他们的互联网路由器,因此 IPv6 是不可能的。相反,我使用开源软件包 OpenVPN 来连接我朋友的网络。在我朋友的网络之间建立 VPN 连接使我们所有人都可以透明地访问彼此的计算机,甚至是 NAT 防火墙后面的计算机。无处不在地访问彼此的网络和计算机使我们能够进行私有文件和资源共享。使用名为 Unison 的程序,我们能够保持家庭照片的同步存档以及彼此财务文件的加密备份。由于这种网络网络的动态性质,我们使用开源软件包 Quagga,它使用 OSPF 和 RIP 来管理各个网络之间的路由。到目前为止,这项工作更多的是一种学习经验,而不是实际利益,但我们仍在努力。
在花费了这么多时间让这些玩具和小工具工作后,现在是开始研究一些实用工具的时候了。首先,我们快要被垃圾邮件淹没了。我配置了 Exim 邮件服务器,根据地址和主题将收到的电子邮件放入文件夹中。这在减少我阅读电子邮件的时间方面效果很好。我可以删除整个我不感兴趣的文件夹。但是,很明显我需要做更多的事情。我正在考虑配置 SpamAssassin 来分类收到的电子邮件。SpamAssassin 对给定的电子邮件消息执行一系列测试,以确定它成为垃圾邮件的可能性有多大。每条消息都会获得一个分数。分数越高,消息越有可能是垃圾邮件。那些 SpamAssassin 认为可能是垃圾邮件的消息将被路由到 TMDA 进行最终验证。
TMDA 实现了所谓的质询/响应机制,用于验证电子邮件。本质上,对于 TMDA 处理的任何消息,TMDA 都会向原始发件人发送回复消息。这是 TMDA 所做的质询部分。如果发件人不是垃圾邮件发送者,他们很可能会回复质询消息。这是响应部分。当 TMDA 收到对给定质询的响应时,它会安排传递原始电子邮件消息。理论是,大多数垃圾邮件发送者不会回复质询,因此 TMDA 不会传递垃圾邮件消息。最终,垃圾邮件将过期并被删除,永远不会被传递。TMDA 作为唯一的垃圾邮件过滤机制的唯一问题是,有些人不想被质询消息打扰。这就是为什么我打算首先通过 SpamAssassin 运行消息的原因。这样,只有垃圾邮件消息才会被质询。
我在本文中尝试概述开源领域中一些非常酷的技术。希望您读到了一些您以前不知道的东西。现在,我要去弄清楚为什么我的录像机一直闪烁 12:00。好吧。
本文资源: /article/9192。
Mike Diehl 在新墨西哥州阿尔伯克基市的 Sandia 国家实验室为 SAIC 工作,他在那里编写网络管理软件。Mike 与他的妻子和两个小男孩住在一起,可以通过电子邮件 mdiehl@diehlnet.com 联系到他。