黑客和 / - 你的个人服务器:网络
如今,似乎每个人都在谈论云。现在,“云”究竟意味着什么似乎因人而异,但通常,云指的是某种服务,例如电子邮件、Web、DNS、文件存储等等,这些服务由第三方为您管理。 许多人喜欢将他们的电子邮件服务、博客或图片站点外包给其他人是多么容易。 就像换油、房屋维修和烹饪一样,服务器管理是您可以付费(用金钱或营销数据)让其他人为您管理的另一项任务。
与这种外包工作的趋势并驾齐驱的是一种日益增长的运动,它重视自己动手做事。 一些例子包括参与设计自己的电子产品的“创客”、DIY 家居装修、园艺、业余奶酪制作、烘焙甚至家庭酿造。 事实是,许多这些所谓的琐事实际上相当有益,甚至自己动手做也很有趣。 我认为我们 Linux 用户应该将同样的想法应用于服务器管理。 事实证明,在家管理自己的服务而不是将它们外包给云端是非常有益的、具有教育意义的,而且并不十分困难。 最重要的是,当您管理自己的服务器时,您可以完全控制您的服务器、服务器上安装的内容以及谁可以看到它。
在本系列专栏中,我将讨论如何在家里设置各种类型的服务,以及如何让它们对整个互联网开放。 在本系列的第一篇专栏中,我将讨论在您在家中设置第一个服务器之前应该考虑的一些关于网络的事情。
当涉及到在家托管服务器时,并非所有的 ISP(互联网服务提供商)都是一样的。 在我甚至讨论带宽之前,您首先应该查看您的 ISP 的服务条款。 事实证明,一些 ISP 不鼓励、不允许,有时甚至直接阻止家庭用户在互联网上托管自己的服务。 大量摄入咖啡因,尝试通读您的 ISP 的服务条款(或者只是打电话询问他们),看看他们是否有任何类型的限制。 如今,至少即使是服务器友好的 ISP 也通常默认阻止出站电子邮件流量(SMTP 端口 25)以防止垃圾邮件。 虽然我将在以后的关于电子邮件的专栏中更详细地讨论这个问题,但一些 ISP 会解除这种限制,而另一些则不会。 最重要的是,如果托管您自己的服务器对您很重要,您将需要确保您使用允许这样做的 ISP。 对我来说,这项政策在选择 ISP 时比速度甚至价格更重要。
无论您拥有哪种类型的互联网连接,最终您都至少被分配一个公共路由 IP 地址。 如果此地址在您每次连接到互联网时(或每次您的 DSL 或有线调制解调器重置时)都会更改,则您拥有动态 IP。 如果此 IP 保持不变,则它是静态的。 虽然人们历史上一直在静态 IP 和动态 IP 上运行服务器,但使用动态 IP,您将不得不经历额外的麻烦来设置某种动态 DNS 服务,以便每次您家中的 IP 更改时,每个尝试访问您在互联网上的服务的人都将获得新的 IP。 不幸的是,由于 DNS 的工作原理,您不能总是保证(即使使用低 TTL)每个人都会及时看到您更改的 IP,因此如果您认真地想在家中运行服务器,我建议您购买一个或多个静态 IP。
通常,当您评估您家中的互联网连接质量时,您首先会查看您的下载速度。 普通家庭用户更依赖于他们的下载带宽,而不是他们的上传带宽,作为衡量他们的连接有多“快”的标准,而且许多家庭互联网连接的下载带宽远高于上传带宽。 但是,一旦您开始在家中托管服务器,您就会发现它们的性能更多地受您的上传带宽的制约。 如果您想在家中托管带宽密集型服务,例如流媒体音频或视频或图像密集的网站,您可能需要升级或更改您的互联网连接以获得更多的上传带宽。 另一方面,您的个人 DNS 或电子邮件服务器即使上传带宽有点低,也可能会很好。 虽然家庭的上传带宽可能比数据中心慢,但大多数家庭连接(至少在美国)都是不计量的,因此您不必担心带宽上限。
如今,大多数想要在家中托管服务器的人倾向于通过某种 DSL 或有线调制解调器访问互联网。 此设备一端连接到电话线或其他电缆,另一端提供网络端口(有时是 USB 端口)。 更复杂的调制解调器实际上可以充当网关,甚至充当 DHCP 服务器,并将内部 IP 分配给家中的计算机,而公共 IP 则驻留在调制解调器本身上。
如果您计划在您的家庭网络内部拥有多台计算机,我建议将调制解调器配置为更像桥接器,以便将公共路由 IP 地址分配给受您控制的设备,无论是家庭路由器还是您网络上的计算机。 如今,大多数家庭路由器(包括 DSL 和有线调制解调器,如果您的 ISP 允许您配置它们)都具有端口转发功能,以便可以将 предназначенный направленный 您的 Web 服务器(端口 80 和 443)的传入流量重定向到内部 IP 地址。 您对网关的控制越多,您在设置服务器和网络时就越灵活。 如果您选择使用消费级路由器而不是将家用计算机变成网关,您可能需要选择可以刷新自定义 Linux 固件(如 OpenWRT 或 DD-WRT)的路由器,这样您就可以像 Linux 服务器充当网关一样拥有一些相同的灵活性。
当然,任何时候您向互联网开放一项服务,您都将自己暴露于攻击之下。 如今,即使您只是在互联网上有一台独立的服务器也没关系; 攻击是自动化的,因此您的默默无闻并不能确保安全。 确保您在互联网上提供的任何服务和服务器都保持最新,并安装最新的安全补丁。 如果您能够在网关路由器上配置防火墙,则默认阻止所有传入端口,并且只允许您知道需要打开的端口进入。 如果您要向公共互联网开放 SSH 服务器,请务必审核您的密码,并确保它们难以猜测(或者更好的是,完全禁用密码并使用基于密钥的身份验证)。 如今,更多的家庭(和企业)Linux 服务器因糟糕的密码而被黑客入侵,而不是其他任何原因。
当我在谈论防火墙时,如果您碰巧使用带有 iptables 的 Linux 设备作为路由器,这里有一个快速提示。 即使您被授予多个公共 IP,您也可能会发现您更喜欢让所有互联网流量都通过中央路由器,这样更容易监控和保护。 为了实现这一点,您可能需要配置您的网关设备以响应所有公共 IP,并将私有 IP 分配给您家中的计算机。 假设我有几个静态 IP,包括 66.123.123.63 和 66.123.123.64,以及一个配置为在 eth0 上响应这两个 IP 的网关路由器。 我在我的网络上有一台内部服务器,IP 地址为 192.168.0.7。 因为它有一个内部 IP,我想将 направленный на 66.123.123.64 的流量转发到 192.168.0.7。 我可以做到这一点的第一种方法是仅将特定端口上的流量转发到此主机。 例如,如果这是一个 Web 服务器,我可能只想将端口 80 和 443 转发到此服务器。 我可以在我的网关路由器上使用这些 iptables 命令进行端口转发
iptables -t nat -A PREROUTING -d 66.123.123.64 -i eth0 -p ↪tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.7:80 iptables -t nat -A PREROUTING -d 66.123.123.64 -i eth0 -p ↪tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.0.7:443
如果您只有一个公共 IP 但网络中有多个服务器,这也是一个常见的解决方案,因此您可以将 Web 端口转发到内部 Web 服务器,并将电子邮件端口转发到不同的电子邮件服务器。 这种方法可行; 但是,每次我想转发另一个端口时,我都必须确保添加新的防火墙规则。 如果我只是想让路由器将所有 направленный на 66.123.123.64 的流量转发到 192.168.0.7,我可以使用以下两个命令
iptables -t nat -A PREROUTING -d 66.123.123.64 -i eth0 -j ↪DNAT --to-destination 192.168.0.7 iptables -t nat -A POSTROUTING -s 192.168.0.7 -o eth0 -j ↪SNAT --to-source 66.123.123.64
请注意,由于这些命令转发 направленный на 该内部主机的所有流量,而不管端口如何,因此我将需要确保锁定该内部服务器上的防火墙规则。
这应该足以让您开始在家中进行网络设置,以便到下个月,您就可以准备好设置您的第一个服务。 在我的下一篇专栏中,我将重点介绍 DNS,包括如何注册域名以及如何设置您自己的家庭 DNS 服务器。
Kyle Rankin 是旧金山湾区的系统架构师,也是许多书籍的作者,包括 The Official Ubuntu Server Book、Knoppix Hacks 和 Ubuntu Hacks。 他目前是北湾 Linux 用户组的主席。