我的 PC 位于具有公共 IP 地址的 NAT 路由器后面。如果我想托管一个网站,那么我认为我需要一个域名,我可以从某个网站购买该域名,该网站承诺解析该域名的所有 DNS 请求并发送我的 NAT 路由器的 IP 地址(假设我不想将我的域名托管在他们的服务器上)。现在我想在我的计算机上托管一个 Web 服务器。
- 应该对 NAT 路由器的配置做哪些更改才能将 example.com 的所有 HTTP 请求转发到内部网络中的我的 PC。
- 上述策略正确吗?
- 它常用吗?
答案1
按照您描述的方式在 NAT 后面托管服务器是可行的。
看看这个Ubuntu 帮助页面在NAT 后面的服务器基础知识。
更多参考资料,
- 在 NAT 后面托管 Apache 服务器
- 在 NAT 后面设置服务器
这使用 NAT Buffalo AirStation 系列路由器和 Linksys 路由器示例 - Windows XP Internet 连接共享方法。如果你有一台 Windows 机器在做 NAT
- [如果您使用的是 XP,您也可以使用 IIS 65(1 个虚拟主机支持)通过转到控制面板 > 添加和删除程序 > 添加 Windows 组件 > Internet 信息服务。
这是假设您知道如何托管 Web 服务器并且需要有关 NAT 的想法。
答案2
答案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
- 查看港口转运网。他们对这类事情有详细的说明,基本思路是您需要设置路由器以将端口 80 上的 TCP 请求转发到您的计算机的 IP 地址。这又引出了另一件事:您需要将计算机设置为静态 IP。如果您的路由器上运行着 DHCP 服务器(97% 的情况都是如此),请确保分配一个远高于或低于它的 IP 地址。在 Google 上搜索“静态 LAN IP 地址”可能会显示有关如何在各种操作系统上进行设置的说明。
- 只要您的 ISP 没有阻止端口 80 上的传入连接,它就能正常工作;有些人这样做是出于安全原因。
- 也许吧。这就是我现在用 ftp、http、ssh、vnc、xmpp 和其他一些东西做的事情……
您还需要在计算机上运行 Web 服务器。只需获取 Apache,它几乎可以在任何计算机上运行,并且是大多数网站使用的。