微型互联网项目,第一部分

作者: John S. Tonello

正如 LJ 读者所熟知的那样,Linux 驱动着我们每天使用的许多技术,从智能电视到 Web 服务器。Linux 无处不在——除了大多数家庭和教室。

如果我们想帮助培养下一代工程师和计算机科学家,这是一个问题。事实上,如果青少年(或任何其他对技术好奇的个人群体)想了解 Linux,他们通常必须依靠一位懂技术的朋友或愿意指导他们的家长。

这个分为三部分的文章系列旨在改变这种状况,提供一种让任何人通过构建一个本质上是微型、自包含的互联网来学习 Linux 的方法。使用旧设备和免费软件,您将构建一个专用网络(使用您自己的域名),构建网站,设置电子邮件服务器,安装和使用数据库,以及设置 Linux 发行版镜像。

如果您喜欢通过实践学习,但又被书店里厚厚的 Linux 书籍吓到,那么这个微型互联网项目非常适合您。如果您是一位有兴趣将 Linux 带入课堂的老师,这是一个很好的方法。

该项目的核心是一个 Proxmox KVM 环境。KVM,或基于内核的虚拟机,是 VMware 和 Hyper-V 等通常很昂贵的 VM 技术的开源替代方案。您将使用 Proxmox 托管多个 Ubuntu 14.04 服务器(或其他 Linux 版本),通过专用网络连接它们,并在过程中学习很多关于 Linux 的知识。

图 1. Proxmox

微型互联网项目假设您具备一些基本的计算机技能(Windows、Mac 或 Linux),您手头有一些闲置的电脑,并且您有一些时间可以动手操作。该项目可以全部或部分完成,具体取决于您的兴趣和需求。它特别为希望向学龄儿童介绍 Linux 的教育工作者设计。

您将构建什么

您将在此项目中使用开源软件,因此您需要的一切都将可以免费下载和使用。您还将利用虚拟化技术,这将使您能够部署一群虚拟机。总共,您将部署

  • Proxmox 服务器,用于托管您的所有虚拟机。

  • 两个 DNS 服务器,一个主服务器和一个辅助服务器。

  • 一个电子邮件服务器。

  • 一个或多个 Web 服务器。

  • 一个 Ubuntu 14.04 软件仓库镜像。

严格来说,镜像不是必需的。只要您有互联网连接,您就可以在您部署的所有服务器上下载新软件和运行 Linux 更新。但目标是创建一个自包含的微型互联网,即使没有与公共互联网的永久连接也能工作。设置本地镜像将使您能够做到这一点。

可选地,您可以构建两个或多个 Proxmox 主机并设置集群(当我描述构建 Proxmox 服务器时,我会介绍这一点)。显然,对于您想要添加到您的微型互联网的每个 Proxmox 主机,您都需要一台物理计算机。

项目要求

当涉及到此项目的硬件时,目标不是让您购买任何新东西,而是使用您已有的东西——可能是您最近退役的台式机、旧无线路由器或旧笔记本电脑或上网本。如果您没有类似这样的闲置硬件,请问问朋友和家人,然后考虑 Craigslist 或 eBay。

您需要的最基本硬件包括

  • 一台支持虚拟化的 64 位 PC。

  • 一台可以连接到网络并运行 Web 浏览器的 PC(Windows、Mac 或 Linux)。

  • 一个网络交换机或路由器。

可选配置

  • 另一台支持虚拟化的 64 位 PC,以便您可以构建集群。

  • 某种网络附加存储 (NAS)。

  • 另一台可以运行 Linux 的旧 PC,用作代理服务器。

硬件

主服务器

此项目的关键要求是一台主计算机,其处理器可以处理虚拟化。许多 2010 年左右或之后生产的计算机都具有此功能,包括我用于我的第一个微型互联网的塔式机。它有

  • 一个 Intel i3 处理器(四核)。

  • 8GB 内存(可以少一点,但不能少太多)。

  • 两个 2TB SATA 硬盘(一块硬盘就足够了)。

  • 两个 10/100/1000 以太网端口(它在主板上内置了一个,我添加了一张 PCI 卡)。

要查看您想到的计算机是否可以成为 Proxmox 服务器,有几种方法可以测试它是否支持虚拟化。本文末尾的“资源”部分列出了适用于 Windows 和 Linux 的工具。

对于已经使用 Linux 桌面或服务器的用户,您可以使用现有命令来查看是否支持虚拟化。打开终端并运行此简单命令进行快速检查


$ cat /proc/cpuinfo | grep vmx

它应该返回类似以下内容(为您的每个核心重复多次)


[flags    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
 ↪pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse
 ↪sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc
 ↪arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc
 ↪aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl
 ↪vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1
 ↪sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c
 ↪rdrand lahf_lm ida arat epb xsaveopt pln pts dtherm
 ↪tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms]

如果标志包括 vmx(可能在输出中以红色突出显示),那么您可能可以继续了。您也可以检查系统的 BIOS。通常,虚拟化是可能的,但默认情况下是禁用的。在您的 BIOS 中查找它,启用它并重启。

如果您有想要用于此项目的其他硬盘驱动器,您可以将它们安装在您的主服务器(Proxmox 主机)中。从技术上讲,您只需要一个驱动器,但拥有多个驱动器可以为您备份您构建的内容提供不错的选择。学习如何挂载多个驱动器也是一个好习惯!

管理 PC

您需要某种第二台计算机来充当您的主管理机。这台计算机不需要支持虚拟化。它只需要能够运行 Web 浏览器,也许还有 tinyproxy,并具有以太网端口和 Wi-Fi——或两个以太网端口。如果机器没有内置 Wi-Fi,您可以购买一个 USB 无线网卡来完成这项工作。这里的目标是拥有一台具有两个网络连接的机器:一个连接到您的微型互联网,另一个连接到您用来访问互联网的网络,例如您的家庭或学校网络。

管理 PC 可以是您当前的台式机或笔记本电脑,并且可以是 Windows、Mac 或 Linux。如果您计划拥有一台带有两个以太网端口的主 Proxmox 服务器,如果您想同时连接到您的专用微型互联网和公共互联网,您的管理 PC 只需要有两个网络连接。一种方案还使用这台 PC 作为 http 代理服务器,这也需要访问公共和专用网络。

我有几台旧笔记本电脑,并且我成功地使用了以下设备作为我的管理 PC

  • 一台 IBM ThinkPad T60p(带有内置 Wi-Fi 和 10/100/1000 有线以太网)。

  • 一台 Dell Mini 9(带有内置 Wi-Fi 和 10/100 有线以太网)。

  • 一台 Dell Mini 10(带有内置 Wi-Fi 和 10/100 有线以太网)。

  • 一台第一代基于 Intel 的 MacBook(带有内置 Wi-Fi 和 -10/100/1000 有线以太网)。

  • 一台 Dell GX620(带有一张 Wi-Fi 卡和内置 10/100 有线以太网)。

任何旧塔式 PC 或台式机也都可以——不需要花哨的东西!

理想情况下,您的管理 PC 将运行带有桌面环境(如 GNOME、KDE 或 Xfce)的 Linux 版本。但这并不是必需的。目标是让您轻松入门 Linux,而不是残酷地把你扔进游泳池。

可选:如果在您的教室(或实验室)中无法运行专用 Linux 计算机,但您想体验一下,您可以始终使用 USB 闪存盘启动 Windows 或基于 Intel 的 Mac。我稍后会详细介绍这一点,但您可以在 Ubuntu 网站上了解更多关于制作可启动 Linux USB 盘的信息。“资源”部分提供了相关信息。

用于您的微型互联网的其他 PC

如果您在您的书房里运行这个项目,您将不需要更多的计算机。如果您在教室里构建这个项目,学生机可以非常像管理 PC,尽管它们每个只需要一个网络接口。如果您将每个人硬连接到您的微型互联网,显然每台 PC 都需要一个以太网端口。如果您使用无线网络,内置 Wi-Fi 或廉价的 USB Wi-Fi 网卡效果很好。理想情况下,您网络中的所有 PC 都将运行 Linux 版本,例如 Ubuntu、Xubuntu、Linux Mint、Fedora、SUSE、CentOS、Kali 或其他版本。

网络设备

同样,您可以使用您已有的任何交换机或路由器来创建您的专用微型互联网网络。您只需要一个网络交换机或路由器即可连接所有设备。如果您已经有一个家庭网络路由器,它可以兼作您的微型互联网交换机,但我建议使用第二个路由器来创建一个真正的独立系统。

如果您在教室里进行设置,我强烈建议使用无线路由器,这样您就可以轻松地将数十台学生电脑添加到您的微型互联网,而无需到处铺设大量的以太网电缆。当然,这看起来很酷,但不太实用。

您的微型互联网交换机(或路由器)只需要两个端口:一个连接到您的主 Proxmox 服务器,另一个连接到您的管理 PC。

对于我的第一个微型互联网,我使用了一台旧的 Netgear MR314 无线路由器,它具有以下特点

  • 四个 10/100 LAN 端口。

  • 一个 10/100 WAN 端口。

  • 802.11b 无线。

诚然,这个旧盒子仅支持 WEP 加密,但它工作正常。请记住,您的微型互联网是自包含的,没有直接连接到外部世界。是的,您需要一些安全措施到位,但您的主要安全风险来自您自己的微型互联网成员,而不是外部世界。

我还成功测试了以下网络设备

  • 一个 TP-Link TL-SG108 八端口 100/1000 交换机(新买的,25 美元)。

  • 一个 Netgear N600 四端口 10/100 无线双频路由器 WNDR3400。

图 2. Netgear

Netgear N600 成为我的最终选择,因为它具有 WPA2 安全、无线 n 功能以及用于添加 USB 驱动器的 USB 3.0 端口(用于制作简易 NAS)。

其他硬件

除了 PC 和网络设备外,您还需要一些 USB 闪存盘。您将把 .iso 镜像刻录到这些盘上,并将它们设置为可以从中启动。特别是,您将创建以下三个

  • Proxmox 4.x 启动盘。

  • Ubuntu 14.04 服务器启动盘。

  • Xubuntu 14.04 Trusty Tahr(或任何其他您想要的 Linux 版本桌面)。

如果您无法使用 USB 闪存盘,您可以始终使用 DVD,但这远不如 USB 闪存盘容易、灵活或便宜。不过,如果这是您所有的选择,请确保您有四到五张可用的空白光盘、一台不错的 DVD 刻录机和光盘刻录软件。

无线功能在现代 PC 和笔记本电脑中相当普遍,但您的旧机器可能没有。幸运的是,有许多非常便宜的 USB Wi-Fi 网卡可用(许多大约 8 美元左右)。如果您正在考虑购买一个(或十几个),请确保该设备在 Linux 下工作。更好的是:购买适用于 Linux、Windows 或 Mac 的设备。

软件

您将为微型互联网项目使用的所有软件都是免费和开源的。当然,其中大部分是 Linux 软件,但我也列出了一些适用于 Windows 和 Mac 用户的工具,特别是您需要用来从 .iso 文件创建可启动 USB 驱动器的软件。

您还会注意到,我正在使用 Ubuntu 14.04 作为我的虚拟机的基础。如果您宁愿使用 Fedora 或 SUSE 等,那由您决定。为了简洁起见,在谈到安装步骤时,我坚持使用 Ubuntu。

Proxmox 4.x

Proxmox 是一个开源 KVM 或基于内核的虚拟机主机。您可以使用许多不同的 Linux 版本来创建 KVM,但 Proxmox 是您的微型互联网的一个不错的选择,因为它功能齐全。它基于 Debian,类似于您将要安装的 Ubuntu 14.04,并且它具有出色的基于浏览器的管理工具。同样好的是,您可以使用 Proxmox .iso 在几分钟内安装系统,您将把它变成一个可启动 USB 盘。

重要的是要注意,Proxmox 可以免费使用,但提供几个付费支持级别。如果您想购买这些服务,那由您决定。不过,此项目不需要购买任何东西。

Ubuntu 14.04 LTS

Ubuntu 14.04 的长期支持版本(也称为 Trusty Tahr)坚固、稳定、灵活,并为你所有虚拟机奠定了良好的基础。让我们下载并安装 64 位版本,您将使用它来构建您的虚拟机和 VM 模板。该操作系统也有 32 位版本,这意味着您可以在您所有的微型互联网计算机和服务器上安装相同的操作系统——即使您的一些设备较旧。例如,当我将我的 Dell Mini 9 设置为代理服务器时,我使用了 32 位 Ubuntu 14.04 以实现无缝集成。

图 3. Ubuntu Server

您将从最新的 Ubuntu 14.04 .iso 制作一个可启动 USB 驱动器;如果您选择 DVD 方式,您将创建一个可启动光盘。

Webmin 1.7x: Webmin 是一个基于浏览器的工具,它使管理(和理解)Linux 服务器变得容易得多。硬核命令行爱好者会嘲笑 GUI,但 Linux 新手会欣赏 Webmin 的强大功能和灵活性,它可以管理从 Apache Web 服务和 Postfix 相关邮件服务到更新和系统健康的一切。您将在您的基础 Ubuntu 14.04 VM 模板上安装 Webmin,并在之后在每台服务器上使用它。

图 4. Webmin

apt-mirror

微型互联网项目的目标是构建一个独立的互联网,为了做到这一点,您需要使您想要(并且可能梦想使用)的所有 Linux 软件在您的专用网络上可用。为此,您将在您的 Ubuntu VM 之一上安装 apt-mirror。

图 5. apt-mirror

要复制 Ubuntu Trusty Tahr Linux 发行版,您需要的磁盘空间将比您所有其他虚拟服务器加起来还要多得多。我已经使用标准 apt-mirror 设置(不带 -src 或源版本)进行了几次测试,我发现 main、security 和 i386 软件仓库总共不到 100GB。当您构建镜像 VM 时,您将制作一个 200GB 的磁盘,这应该为您未来的添加和软件仓库的自然增长提供足够的空间。

一旦您的本地镜像构建完成,Ubuntu 更新和升级将非常快。但是,最初下载镜像将需要数小时——即使在快速互联网连接上也是如此。不过,一旦完成,未来的更新就会很快,您将拥有构建和试验各种 VM 服务器所需的一切。

Bind9

为了使您的微型互联网尽可能真实,您将设置一个域名服务器 (DNS),这将使您能够为您的专用网络提供一个可工作的域名。Bind9 是 bind 的最新版本,它允许您设置正向和反向区域。这意味着如果您想运行一个名为 linuxrocks.com 的域名,您可以,并创建子域名,如 dns.linuxrocks.com 或 mirror01.linuxrocks.com。这也将使设置您的专用电子邮件系统变得容易得多,也熟悉得多。

Postfix 和 Dovecot

公共互联网的重要组成部分是电子邮件,如果您的微型互联网不提供这项重要服务,那将是不完整的。您将使用 Postfix 处理邮件,Dovecot 用于将邮件 POP 或 IMAP 到电子邮件客户端,如 Thunderbird。您的专用微型互联网的用户不仅能够拥有自己的电子邮件地址,而且还能够彼此自由交换电子邮件。

这些邮件服务是可靠且稳定的,并且受到各种电子邮件客户端的支持,包括 Thunderbird。您还将试验保护邮件服务器的安全,以便您可以了解更多关于邮件安全的信息。

LAMP 堆栈

Linux、Apache (Web)、MySQL(数据库)和 PHP 的组合构成了全世界和整个互联网数百万台服务器的基础。这种组合支持各种网站(和内容管理系统)、数据库驱动的 Web 应用程序等等。您将在您的 Ubuntu 14.04 VM 之一上部署一个“基础”LAMP 堆栈,然后制作它的模板。这样,您就可以部署您想要的尽可能多的不同 Web 服务器。

基础 LAMP VM 将包括

  • Apache2。

  • MySQL。

  • PHP 5.x。

  • phpMyAdmin。

最后一项 phpMyAdmin 是一个流行的基于浏览器的工具,用于管理 MySQL 数据库。它强大而灵活,非常适合学习更多关于数据库的知识。

Tinyproxy

当涉及到将您的专用微型互联网连接到公共互联网时,您有几个选项。一种是在您的主 Proxmox 主机中使用多个网卡。另一种是使用具有两个网络连接的辅助计算机充当代理服务器。各有优点,因此您可以稍后决定您想选择哪种方式。

如果您选择代理路径——使用单独的计算机中继您所有的 http、https 和 ftp 请求——您将安装 tinyproxy。它非常轻量级,不需要缓存(这可能会占用大量磁盘空间),而且速度很快。您必须对 apt 进行一些修改,以通过代理启用 Ubuntu 更新,但一旦设置完成,它就可以很好地工作。

DHCP

如果您玩过家庭网络——例如,您的互联网提供商提供的路由器——您可能熟悉 DHCP 的工作原理。DHCP 服务器将 IP 地址分配给连接到网络的所有设备,无论是计算机、平板电脑、智能手机还是恒温器。

如果您要部署一个大型微型互联网——例如,在教室里——拥有 DHCP 将使事情变得容易。是的,您可以为您专用网络上的所有机器分配静态 IP 地址(实际上,一些服务器必须具有静态地址),但对于普通用户,DHCP 工作良好。

如果您使用路由器(例如我之前提到的 Netgear 型号),它可能内置了自己的 DHCP 服务器。这意味着设备本身将 IP 地址分配给它建立的每个有线和无线连接,因此您的所有计算机、平板电脑和智能手机都有自己唯一的地址。插入路由器,将其连接到您的微型互联网,您就完成了。

isc-dhcp-server

如果您计划使用简单的网络交换机(根本不分配地址的那种),您将需要部署一个 DHCP 服务器。在这里,您将使用 isc-dhcp-server 完成这项工作。它轻量级且易于使用。即使您计划使用带有内置 DHCP 的路由器,您也可能想要部署一个单独的 isc-dhcp-server 作为备份(我将在本系列的后面部分讨论如何做到这一点)。

运行您自己的微型互联网的乐趣在于完全控制所有部分——服务器、客户端 PC 和网络。通过安装像 iperf 这样的简单工具,您将能够测试您的组件通信的速度。如果您曾经使用过像 Speedtest.net 这样的在线工具来测试您的家庭或工作场所互联网的下载和上传速度,您将熟悉 iperf 的作用。

图 6. iperf

您将使用 iperf 测试跨您的专用网络设备之间的速度,以及测试 Proxmox 主机上共存的服务器之间的速度。这就是真正变得有趣的地方。例如,即使您使用 10Mb 以太网交换机将您的 VM 主机与您的笔记本电脑连接,您也将能够测量您的各种 VM 之间的千兆位速度。那是因为它们通过单个服务器上的虚拟网络连接,仅受服务器总线速度的限制!这将使您的微型互联网成为一个快速而真实的地方,让您探索 Linux。

接下来

在接下来的部分中,您将使用我在这里介绍的信息构建您的 Proxmox 主机、Ubuntu 镜像以及电子邮件和域名服务器。之后,您将部署 LAMP 堆栈并构建一些网站、数据库,甚至 WordPress 网站。

资源

测试您的电脑以查看它是否支持虚拟化

创建可启动 USB 闪存盘

软件资源

其他有用的资源

John Tonello 是 SUSE 的全球技术营销经理,他在那里专门从事软件定义的基础设施。自 20 多年前从软盘构建他的第一个 Slackware 系统以来,他一直是 Linux 用户和爱好者。

加载 Disqus 评论