Tiny Internet 项目,第二部分

在 2016 年 5 月刊(也可在这里获取)中,我介绍了 Tiny Internet 项目的想法,这是一个独立的 Linux 项目,展示了如何在一台计算机上使用一到两台旧计算机、一台路由器和一堆 Linux 软件构建公共互联网的关键部分。在第二部分中,您将学习如何使用 Proxmox 构建虚拟机主机并部署您的第一个服务器。在第三部分(即将推出)中,您将构建一个模板来制作 DNS 和电子邮件主机、网站和 Linux 发行版镜像。

这个项目您需要两台独立的计算机。第一台是您的“管理 PC”。它可以是任何具有网络访问、图形浏览器(如 Firefox 或 Chrome)和至少一个 USB 端口的台式机或笔记本电脑。第二台机器将成为您的虚拟机主机。

中心思想是构建一个“互联网一体机”,其中包含常见的 Linux 服务器,并使用此设置向年轻人或新手教授 Linux。使用虚拟化软件,您将在单台硬件上部署多个服务器,这些服务器将处理域名、电子邮件、网页等。您不需要任何新的或花哨的东西。我是在一台使用了六年的 Velocity Micro 台式机上构建的原型,该台式机配备 Intel i3 处理器、8GB 内存、两张网卡和几个 1TB 硬盘。

选择您的硬件

首先,您需要一台支持虚拟化的计算机——这意味着其 BIOS、支持 64 位的 CPU 和主板允许您与将在其上运行的虚拟机共享系统的所有资源。您可能已经试验过 VirtualBox 甚至 VMware ESXi 软件的免费版本。这里的想法是相同的:将多个虚拟服务器放置在单台物理机器上,并共享该物理机器的所有资源,包括内存、CPU 和硬盘。

Linux 版本称为 KVM,即基于内核的虚拟机。对于本项目,您将使用一个预编译版本,名为 Proxmox,它附带了您所需的一切。

要查看您心仪的计算机是否可以成为 Proxmox 服务器,您需要检查它是否支持虚拟化。Windows、Linux 或 Mac OS X 都有图形工具可用,如果您有一台没有安装操作系统的机器,您可以使用任何 Linux 版本从 USB 或 CD 驱动器启动它来进行测试。请参阅本文末尾的“资源”部分,了解如何操作。

在 Windows 上,您可以从主计算机属性中了解很多信息。右键单击“计算机”(在桌面或“开始”菜单上),然后查看窗口的下半部分,它看起来类似于图 1。

图 1. Windows 计算机属性

如果您看到“四核 CPU”或类似的内容,以及“64 位操作系统”,那么您很可能拥有一台(一旦擦除)可以工作的机器。为了更确定,您可以使用 Intel 或 AMD 工具进一步识别您的 CPU 是否支持虚拟化(再次,请参阅文章末尾的“资源”)。

图 2. SecurAble 帮助您了解有关处理器的更多信息。

如果您计划使用旧的基于 Intel 的 Apple Mac,则有很多支持虚拟化。让旧款 Mac 从 USB 启动可能有点棘手,我在这里不会介绍这些步骤。但是,我已经成功地在几台 Intel Mac 上安装了 Linux,并且运行良好。

如果您已经在台式机或服务器上安装了 Linux,您可以使用一些简单的终端命令来查看它是否支持虚拟化。打开终端并输入此命令


$ cat /proc/cpuinfo | grep vmx

如果它返回类似于以下文本的内容(每个 CPU 重复几次),那么您就成功了,可以继续下一步(如果您仍然不确定,请查看“资源”以获取更多选项)


[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]

如果 flags 输出包含 vmx(可能在输出中以红色突出显示),则您应该可以设置。如果不是,请检查您系统的 BIOS。虚拟化通常在系统上是可能的,但默认情况下是禁用的。在您系统的 BIOS 中查找虚拟化设置,启用它并重新启动。

虽然 Tiny Internet 项目旨在提供您所需的一切,而无需访问公共互联网,但事实是您需要您的 Linux 发行版镜像来连接到外部服务器。您可以通过设置代理服务器(我将在第三部分中介绍)或在您的 Proxmox 主机上安装两张以太网卡来做到这一点。有线连接比无线连接更容易设置,我不建议使用 Wi-Fi 卡或 USB 加密狗作为主机的第二个连接。

安装两张网卡后,您的 Proxmox 主机将能够与公共网络和私有网络通信,在其之上运行的虚拟机也是如此。

虚拟化软件:Proxmox

由于您显然对 Linux 和自由软件最感兴趣,让我们使用自定义 KVM Proxmox。

您可以在许多 Linux 发行版(特别是基于 Debian 的版本)的服务器设置过程中安装 KVM。这些开箱即用的 KVM 工作良好,但我发现它们对于 Tiny Internet 项目来说有点太复杂了。使用 aptyum 在现有机器上安装 KVM 是可行的,但这对于新手来说不容易做到。

就其本身而言,KVM 也没有 GUI 界面——对于 Linux 专家来说,这是一个缺点,但对于新手来说则不然。稍后将有很多命令行工作要做,所以我想要一个易于使用的 KVM 管理界面,最好是基于浏览器的界面。我找到的工具,例如 WebVirtMgr,是可行的,但同样,它们对于新手来说设置起来有点太复杂了。

Proxmox 运行良好,因为它包含以下内容

  • 一个相当标准的,如果说是轻量级的 Debian 内核。

  • 一个易于使用的 Web 界面。

  • 一个现成的 .iso,可以刻录到 USB 或 DVD 上。

  • 用于管理集群和存储的优秀工具。

Proxmox 支持集群,这使您可以设置多台 VM 主机。它还支持各种存储类型,包括本地和基于网络的驱动器。

安装 Proxmox

1. 下载 .iso 并制作可启动的 USB。 如果您曾经下载过 Linux .iso 并使用它创建可启动的 USB 或 DVD,您可以轻松完成此步骤并直接进行安装。如果您是这个过程的新手,您将需要几个工具。Ubuntu 网站为 Windows、Mac 和 Linux 用户提供了良好的说明。(请参阅“资源”以了解更多关于每个工具的信息。)

DVD 方法是可行的,但它会花费更长的时间,并且灵活性会稍差。我建议使用 USB 拇指驱动器来创建可启动的操作系统安装程序,但有时较旧系统的 BIOS 可能不支持从 USB 启动。在这些情况下,与其对着墙撞头试图让原始系统从 USB 启动,不如使用 DVD。如果您使用的是 Mac,这可能是唯一的启动方式;在 Apple 硬件上支持 USB 启动本身就是一个教程。

您需要的 .iso 是 Proxmox 虚拟化环境 (PVE)。使用您的管理 PC,下载最新版本。(在撰写本文时,它是 4.1。)该文件小于 1GB,很容易放入 2GB 拇指驱动器中。将 .iso 刻录到 USB。

使用您的管理 PC 并转到这里并下载安装程序。

2. 启动 Proxmox PVE 安装程序。 从您的管理 PC 中移除 USB,并使用它启动您的 Proxmox 机器。

初始安装屏幕提供三个选项。选择“Install Proxmox VE”。

图 3. 初始 Proxmox 安装屏幕

接下来,选择您要安装它的驱动器。如果您的主机有多于一个驱动器,您将在此处获得选择。否则,它将默认为类似于 /dev/sda 的东西。

图 4. 选择安装驱动器

与任何操作系统安装一样,这将擦除您驱动器上的所有内容。慢慢来,确保选择正确的驱动器。

在下一个屏幕中设置您的位置,然后再继续设置网络,其中包括主机名(机器在您的网络和 DNS 中显示的名称)、IP 地址、子网掩码、网关和 DNS 服务器。这些不会是随机的;您需要认真考虑您未来的网络、您的 VM 以及您将要给您的 DNS 服务器的地址。

对于您的私有网络,您将部署五到七台机器,这些机器将需要它们自己的地址和一个域名。我使用“tiny.lab”以避免使用 .com、.net、.org 或任何其他可能导致问题的公共域名扩展名。因此,有了这个简单的计划,您将创建以下内容

  • Proxmox 主机。

  • 两台 DNS 服务器。

  • 一台邮件服务器。

  • 一个镜像。

  • 两台或更多台 Web 服务器。

鉴于此架构,将第一个非网关地址给 Proxmox 主机(在我的示例中为 pve),并像这样寻址其他主机

  • pve — 10.128.1.2

  • dns01 — 10.128.1.3

  • dns02 — 10.128.1.4

  • mail — 10.128.1.5

  • mirror — 10.128.1.6

  • web01 — 10.128.1.7

因此,对于 Proxmox 主机,将网络配置设置为以下内容

  • 主机名 — pve.tiny.lab

  • IP 地址 — 10.128.1.2

  • 子网掩码 — 255.255.255.0

  • 网关 — 10.128.1.1

  • DNS 服务器 — 10.128.1.3

图 5. Proxmox 网络配置

如果您计划部署多台 Proxmox 主机并形成集群,我建议保留您选择的子网的较低范围——即 10.128.1.1 到 10.128.1.255——这样您可以保持逻辑性。例如,您可以给 pve01 10.128.1.2 和 pve02 10.128.1.3,然后从 10.128.1.4 开始您的 DNS 服务器。

在下一个屏幕上输入密码后,安装将开始。大约五分钟后,系统会提示您重新启动。初始启动屏幕看起来像任何 Grub 菜单,如果一切顺利,您将最终看到一个登录屏幕和一个欢迎消息,告诉您将 Web 浏览器指向哪里:https://10.128.1.2:8006。

图 6. Proxmox 已准备就绪。

如果您使用了不同的 IP 地址,则会显示该 IP。稍后,在您设置好域名后,您将能够通过 https://pve.tiny.lab:8006 访问服务器。

但现在,IP 是唯一的进入方式。

3. 确认 Proxmox 主机上的网络设置。 与典型的 Linux 网络设置不同,Proxmox 主机使用桥接端口。在您通常看到 eth0 和 eth1 的地方,在 Proxmox 上您将看到 vmbr0 和 vmbr1。

要使两个 Proxmox 主机 NIC 正常工作,您需要编辑网络接口文件。从 pve 登录屏幕,使用用户名“root”和您在安装期间设置的密码登录。制作接口文件的副本(为了安全起见),然后编辑原始文件


# cd /etc/network/
# cp interfaces interfaces.bak
# vi interfaces

当您第一次打开该文件时,它看起来会像这样


[
auto lo
iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual
]

这不适用于您的目的。您需要为 eth0 设置一个静态桥接地址,并为 eth1 设置一个静态桥接地址。首先,设置将与您的私有网络 (tiny.lab) 通信的接口


[
auto lo
iface lo inet loopback

#iface eth0 inet manual (comment out or delete)

#iface eth1 inet manual (comment out or delete)

auto vmbr0
iface vmbr0 inet static
        address  10.128.1.2
        netmask  255.255.255.0
        dns-nameservers 10.128.1.3 10.128.1.4
        dns-search tiny.lab
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
]

请注意,该接口桥接到 eth0,但 eth0 本身未在此处配置。这是故意的。现在,配置第二个 NIC 以与您的公共网络(您家中或教室中连接到互联网的网络)通信


[
auto vmbr1
iface vmbr1 inet static
        address  192.168.1.75
        netmask  255.255.255.0
        gateway  192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0
]

这里有几件事需要注意。地址——192.168.1.75——是您公共网络上的任何空闲地址。不要随意选择此地址;确保该地址可用。

另请注意,第一个接口上没有网关地址。这是因为在一台连接到多个网络的机器上,您只能有一个网关。此外,dns-nameservers 设置为 8.8.8.8 和 8.8.4.4,即 Google 的公共名称服务器。您可以使用这些名称服务器,也可以使用您的 ISP 或学校提供的名称服务器。最后,请注意,此 vmbr1 接口桥接到 eth1。

保存文件并重新启动。

4. 设置您的私有网络设备。 从现在开始,您的大部分工作将在您的管理 PC 上完成,而不是在 Proxmox 主机上完成。

为了将其他机器连接到您的 Proxmox 主机,您需要将您的 Proxmox 服务器和您的管理 PC 放在同一网络上。这需要一个网络交换机或路由器。

如果您使用的是路由器,最好是具有无线功能的路由器,您可以将其设置为基本 LAN 地址 10.128.1.1。这将成为其网关地址(即使您不会将其用于此目的)。如果您的路由器包含 DHCP 服务器(大多数都包含),则该设备将自动向您连接到您的 Tiny Internet 网络的计算机分配 IP 地址。

图 7. 路由器设置

在您的路由器中,将 WAN 设置留空或禁用。只需为 LAN 设置以下内容

  • IP 地址 (10.128.1.1)

  • 子网掩码 (255.255.255.0)

  • 开启 DHCP

  • 配置无线安全

如果您使用的是“哑”交换机(未管理的交换机),您需要在您的管理 PC 上设置静态 IP 地址,然后才能加入您的私有网络。交换机不会在私有网络上分配 DHCP 地址,因此您必须手动设置一个。稍后,您可以部署 DHCP 服务器,但现在,静态很容易。

务必为您的管理 PC 提供一个超出您的服务器地址范围的静态地址,可能从 10.128.1.25 甚至 10.128.1.50 开始。基本的静态 IP 配置应如下所示

  • IP 地址 — 10.128.1.25

  • 子网掩码 — 255.255.255.0

  • DNS 服务器 — 10.128.1.3, 10.128.1.4

同样,网关被特意省略。在这种情况下,您的管理 PC 的网关已设置为您的家庭或学校网络(在本例中为类似 192.168.1.1 的地址)。该网关地址使您能够访问互联网上的目的地。您的私有网络机器不需要网关即可相互通信。

如果您的管理 PC 具有以太网端口和无线网络,请使用有线端口连接到公共网络(在本例中为 192.168.1.1)。使用无线网络连接到您的 Tiny Internet (10.128.1.x)。这样,您将可以同时访问公共互联网和您的私有 Tiny Internet。

重要的是要注意,将一台计算机连接到两个不同的网络可能非常古怪。幸运的是,Windows 7、Mac OS X 和大多数现代 Linux 桌面版本都可以自动协商网络连接。在 Linux 中,Network Manager (network-manager) 可以处理双网络,但它可以为有线连接提供路由优先级。这意味着您应该将您的互联网连接网络连接到有线端口,并使用无线网络连接到您的私有网络。在 Linux Mint 中,我发现相反的配置会使 Web 浏览速度变慢,因为系统首先尝试通过有线私有网络访问互联网。如果您必须以这种方式连接,请在 /etc/network/interfaces 中设置指标。(请参阅“资源”。)

请注意,您可能必须重新启动您的管理 PC 才能使网络设置生效。在继续之前执行此操作。

5. 登录 Proxmox GUI。 现在 PVE 主机已启动并运行,并且它和您的管理 PC 都可以通过您的路由器(或交换机)相互通信,您已准备好开始工作。在您的管理 PC 上,将浏览器指向 Proxmox 主机提供给您的地址:https://10.128.1.2:8006。输入 root 用户名和您的密码。

单击“确定”以消除“无效订阅警告”后,您将看到主视图,左侧分为服务器管理器列,右侧分为主信息面板。底部的面板提供有关您执行的操作(例如启动或停止服务器)的实时更新。

图 8. Proxmox 主视图

如果您将 Proxmox 主机命名为“pve”,则当您展开“数据中心”文件夹时,列出的服务器将为“pve”。在其下方列出的是本地存储,名为“local”。

浏览各个选项卡,并熟悉该界面。其中大部分是不言自明的。

6. 部署您的第一个服务器。 您现在已准备好部署您的第一个虚拟机。在执行此操作之前,请决定是否要通过向您的设置添加一个或多个 Proxmox 服务器来部署集群。如果您这样做,您必须在添加任何 VM 之前立即添加第二个 PVE 主机。否则,如果您稍后决定添加更多 PVE 主机,您将必须删除您创建的所有虚拟机并基本上重新开始。

Proxmox 为从 CentOS 7、Ubuntu 15.04、Debian 7、LAMP 堆栈和 WordPress 到所有内容提供了一些免费的可用模板。如果您的 Proxmox 服务器可以访问互联网——直接或通过代理服务器——您可以通过单击“local”(您的存储驱动器),然后选择“内容”选项卡和“模板”来下载和安装这些模板。

但是,现在,您将通过下载最新的 Ubuntu .iso(或您喜欢的任何 Linux 版本)并从中构建 VM 来从头开始部署您自己的虚拟机。

使用您的管理 PC,下载 Ubuntu 14.04.3-server-amd64.iso。这是 Ubuntu 服务器版本的长期发行版,您将在没有 GUI 桌面的情况下运行它。.iso 文件略大于 600MB。

要从此 .iso 构建 VM,您需要将其上传到您的 Proxmox 服务器。

图 9. 上传 .iso

在主 PVE 浏览器视图中,打开“数据中心”和您的机器 (pve),然后单击“local”存储图标。在右侧窗格中,单击“内容”选项卡和“上传”按钮。在弹出窗口中,浏览您刚刚下载的 .iso 文件。单击“确定”开始上传。

上传完成后,您应该会在“内容”选项卡页面的“ISO 镜像”列表下看到该文件。您现在已准备好部署它。

在主 Proxmox 浏览器视图的右上角,单击“创建 VM”按钮。在打开的模态窗口中,“节点”将填充您的 Proxmox 主机名称 (“pve”),“VM ID”将设置为 100。每个未来的 VM 将从此处自动递增。输入一个“名称”,例如“ubuntu”,然后单击“下一步”按钮或下一个选项卡。

图 10. 创建 Proxmox VM,步骤 1

选择操作系统类型——Linux 4.x/3.x/2.x 内核 (I26)。单击“下一步”,并确保选中“使用 CD/DVD 光盘映像文件 (iso)”单选按钮,选择存储驱动器 (“local”),并使用“ISO 镜像”下拉列表选择您上传的 .iso。单击“下一步”。

图 11. 创建 Proxmox VM,步骤 2

硬盘设置保持原样即可。请注意,您将在“local”驱动器上创建一个 32GB 的驱动器。这对于您创建的所有机器来说都足够了,除了镜像服务器,它将更像是 200GB。单击“下一步”。

根据您的机器拥有多少 CPU 和核心,您将能够添加多个“插槽”和多个“核心”。您的 Ubuntu 服务器将在单个 CPU 上运行良好,因此保留默认值(1 个插槽,1 个核心,默认 kvm64 类型),然后单击“下一步”。

对于内存,与 CPU 一样,您的设置可以根据您的系统拥有的内存量而变化。我假设您没有太多内存,并且我已经测试了各种配置,发现设置范围效果最佳。单击“在此范围内自动分配内存”旁边的单选按钮,并将“最大值”设置为 1024,“最小值”设置为 512。虚拟机将仅使用它需要的内存,通常会远小于 512MB,但如果需要,它可以自动使用多达 1GB。单击“下一步”。

对于网络,选择“桥接模式”和“桥接 vmbr0”。单击“防火墙”旁边的框,并将所有其他设置保留为默认值。单击“下一步”以查看您的选择摘要。当您单击“确认”时,Proxmox 将创建虚拟机。完成后,您将在主视图的左侧窗格中看到一个新图标。

图 12. 创建 Proxmox VM,步骤 3

要启动新的 VM,请右键单击它并选择“启动”,或者左键单击它一次,然后从右侧窗格中选项卡上方的菜单中选择“启动”。当它启动时,您将看到“摘要”选项卡的内容发生变化。右键单击机器并从此列表中选择“控制台”(或从选项卡上方的菜单中选择)。一个新的浏览器窗口将打开(检查以确保您没有阻止网站上的弹出窗口),您将看到 Ubuntu 启动屏幕。您已准备好开始部署 VM!

图 13. 您已准备好开始!

请继续关注即将推出的第三部分也是最后一部分!

资源

创建可启动的 Linux (Ubuntu) USB:https://help.ubuntu.com/community/Installation/FromUSBStick

检查 Linux 系统是否具有虚拟化功能:http://virt-tools.org/learning/check-hardware-virt

检查 Windows 系统是否具有虚拟化功能,适用于基于 Intel 的系统:http://intel.ly/217A6MK

SecurAble 是 Gibson Research Corp. 的一个工具,可帮助您了解有关处理器的更多信息:https://www.grc.com/securable.htm

检查 Macintosh 系统是否具有虚拟化功能——Apple 在 https://support.apple.com/en-us/HT203296 提供了一些工具。

您可以从 http://proxmox.com/en/downloads/category/iso-images-pve 下载可启动的 Proxmox .iso 文件。

在 Ubuntu Linux 接口上设置指标:http://bit.ly/1mRibHa

来自 WikiPedia 的关于路由器指标的信息:https://en.wikipedia.org/wiki/Metrics_%28networking%2

http://www.ubuntu.com/download/server 下载 Ubuntu server 14.04.3-server-amd64.iso。

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

加载 Disqus 评论