![创建一个隧道来托管我家里的动态 IP 网站](https://linux22.com/image/1622066/%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E9%9A%A7%E9%81%93%E6%9D%A5%E6%89%98%E7%AE%A1%E6%88%91%E5%AE%B6%E9%87%8C%E7%9A%84%E5%8A%A8%E6%80%81%20IP%20%E7%BD%91%E7%AB%99.png)
我家里有一台非常强大的机器,我想用它来创建一个网站。这台服务器的等价价格是每月 1000 美元。
由于我的 IP 理论上是动态的(即使它在过去几个月没有改变),我无法直接使用它
我想获得一个虚拟主机并创建一个隧道(使用 c 或 c# 语言)以将此虚拟机与我的家庭网站连接起来。该机器不会有任何其他东西。
我的问题是这是否是正确的方法。
答案1
我相信您是在重复做很多次重复的事情。为了写这篇文章,我将接受您关于每月托管费用为 1000 美元的说法,并假设您拥有带宽。
首先,您只需使用动态 DNS 即可实现此目的,而无需隧道/VPN - 特别是如果您的 IP 很少更改。这是最简单的方法。
如果您想要隧道,使用现有的 VPN 系统(如 OpenVPN)似乎工作量要少得多。这将创建一个强大的隧道,但确实有开销 - 实际上,大多数系统可以将加密/解密卸载到 CPU 上的自定义例程(Google AES-NI),因此负载通常无关紧要。有很多 VPN 提供商专门通过此服务提供静态 IP - 可能比运行 VPS 更便宜。
说到这个让我想起,当互联网还处于起步阶段时,我为我的小众 ISP 解决了这个问题,我们不得不依赖大型电信公司提供任何类型的 DSL。我使用 pppd 提供隧道 - pppd 的可选加密很糟糕,但如果您想要原始隧道,它是一个现成的选项。您可能还想将 IPIP 隧道视为另一种未加密的现成替代方案。
如果您编写程序,您将会重新发明轮子并学到很多痛苦的教训,例如为什么即使网站是 TCP,隧道也应该是 UDP,您不能只编写一段代码来执行此操作,您需要编写客户端和服务器,以及检查其启动的方法等。事实上,这听起来像是您正在尝试重新发明代理或负载平衡器 - 而且您几乎(但不完全)可以仅使用 iptables 规则重新创建它 - 您当然可以使用 iptables DNAT 规则和一些轻量级脚本来跟踪 IP 进行更新。
简而言之,如果你想学习,那就玩得开心——但这是一个已经解决的问题。