是否可以在 NAT 后面托管 Web 服务器

是否可以在 NAT 后面托管 Web 服务器

我的 PC 位于具有公共 IP 地址的 NAT 路由器后面。如果我想托管一个网站,那么我认为我需要一个域名,我可以从某个网站购买该域名,该网站承诺解析该域名的所有 DNS 请求并发送我的 NAT 路由器的 IP 地址(假设我不想将我的域名托管在他们的服务器上)。现在我想在我的计算机上托管一个 Web 服务器。

  1. 应该对 NAT 路由器的配置做哪些更改才能将 example.com 的所有 HTTP 请求转发到内部网络中的我的 PC。
  2. 上述策略正确吗?
  3. 它常用吗?

答案1

按照您描述的方式在 NAT 后面托管服务器是可行的。
看看这个Ubuntu 帮助页面NAT 后面的服务器基础知识。

更多参考资料,

  1. 在 NAT 后面托管 Apache 服务器
  2. 在 NAT 后面设置服务器
    这使用 NAT Buffalo AirStation 系列路由器和 Linksys 路由器示例
  3. Windows XP Internet 连接共享方法。如果你有一台 Windows 机器在做 NAT
  4. [如果您使用的是 XP,您也可以使用 IIS 65(1 个虚拟主机支持)通过转到控制面板 > 添加和删除程序 > 添加 Windows 组件 > Internet 信息服务。

这是假设您知道如何托管 Web 服务器并且需要有关 NAT 的想法。

答案2

你可以建立 I2P 隧道

如果你只需要 TCP,你可以设置 Tor 隐藏服务

如果你只需要托管静态网页,你可以建立 ZeroNet 站点

它们都不需要端口转发。

答案3

在检查了所有这些答案和链接的操作方法后,我发现它们都涉及大型程序(部分用于其他目的)和配置文件等的复杂设置,所以我决定编写自己的解决方案。

https://github.com/rofl0r/nat-tunnel

它是一个 250 行的 python 脚本,您可以直接从 git checkout 运行它。

示例:您有一个 HTTP 服务器在本地机器的端口 80 上监听。您希望使其在云服务器/VPS/等的公共 IP 端口 7000 上可用。我们使用云服务器上的端口 8000 作为控制通道。

使用类似

服务器:

natsrv.py --mode server --secret s3cretP4ss --public 0.0.0.0:7000 --admin 0.0.0.0:8000

客户:

natsrv.py --mode client --secret s3cretP4ss --local localhost:80 --admin example.com:8000

答案4

  1. 查看港口转运网。他们对这类事情有详细的说明,基本思路是您需要设置路由器以将端口 80 上的 TCP 请求转发到您的计算机的 IP 地址。这又引出了另一件事:您需要将计算机设置为静态 IP。如果您的路由器上运行着 DHCP 服务器(97% 的情况都是如此),请确保分配一个远高于或低于它的 IP 地址。在 Google 上搜索“静态 LAN IP 地址”可能会显示有关如何在各种操作系统上进行设置的说明。
  2. 只要您的 ISP 没有阻止端口 80 上的传入连接,它就能正常工作;有些人这样做是出于安全原因。
  3. 也许吧。这就是我现在用 ftp、http、ssh、vnc、xmpp 和其他一些东西做的事情……

您还需要在计算机上运行 Web 服务器。只需获取 Apache,它几乎可以在任何计算机上运行,​​并且是大多数网站使用的。

相关内容