【问题标题】:HTTP Server behind NATsNAT 后面的 HTTP 服务器
【发布时间】:2012-07-24 19:59:12
【问题描述】:

我正在尝试使多层 NAT 后面的 (apache) 服务器可以从 Internet 访问。

限制:

  1. 避免中继。有一个公共服务器(我们称他为 OldMan)用于登录/眩晕,但它的带宽太差,无法承载中继数据。
  2. 我无权手动配置 NAT。 3.用户无需更换浏览器或设备。(即适用于android、ios和任何PC)

我试过UPnP,但它只适用于1-layered NAT

我尝试搜索NAT遍历解决方案几个月,但没有成功。

我研究了STUN/TURN/ICE,试过pjsip(icedemo.exe + numb),但是它的stun不能穿透2层NAT。

我尝试了 Mist,Pwnat,但没有运气。 据我所知,libjingle 听起来像是一个用于制作 Gtalk 扩展的 API...(?)

我也尝试制作 VPN/N2N 来解决这个问题,但这对公共服务器来说将是一个沉重的负担。任何 VPN 客户端都需要服务器(OldMan 服务器)将所有数据包中继到另一个,不是吗?

有什么办法可以解决这个问题吗?多层 NAT 后面的 HTTP 服务器。

顺便说一句,如果 STUN/TURN/ICE 有效,我的想法如下,可能吗?

  1. 用户安装了一个应用程序(例如:stun_browser_agent.exe)
  2. 用户在 Chrome 上输入以下地址:127.0.0.1:9999
  3. Chrome 连接到 stun_browser_agent.exe 守护进程
  4. 守护进程使用 Stun 协议连接到 HTTP 服务器
  5. Http Server 上的守护进程(例如:stun_apache_agent.exe)接收所有消息并将其中继到 Apache 守护进程。
  6. Apache回复所有http信息-->stun_apache_agent.exe-->stun_browser_agent.exe-->chrome

这样我们就不用修改浏览器和Apache了。

我可以参考任何可用的资源来实现这个吗?

感谢您的耐心等待

【问题讨论】:

  • 我猜所有的 NAT 都有公共 IP 地址,STUN 使用与对等体最近的 NAT 的 IP。所以,STUN 应该在多层场景下工作。
  • 我很好奇你是否有解决这个问题的办法。我有同样的问题(打孔一个两层的 NAT)。虽然我可以选择转发,但我很乐意做 p2p。
  • 因为我当时想通过普通的http从浏览器访问网页

标签: nat stun


【解决方案1】:

您是否可以控制此服务器与“外部世界”之间的所有 NAT 设备?

一种方法是在您的互联网网关路由器和您的服务器之间设置一个 SSH 隧道。

SSH 隧道将从您的服务器启动并连接到在您的互联网网关路由器上运行的 sshd。使用 SSH 的端口转发功能将 Internet 网关上的端口 80 转发回 Apache 在您的服务器上运行的任何端口。

另一种方法是在公共互联网上可访问的任何其他服务器上设置 sshd(或任何其他隧道产品)。从您的服务器初始化您与它的连接,并使用该连接将流量从该公共服务器上的端口 80 转发到您的服务器。

方法基本相同:您需要从您的服务器启动隧道设置,并使用该连接将流量从公共服务器转发回您的服务器。

【讨论】:

  • 请见谅。这是否意味着我应该有权在这些“互联网网关”或“任何其他服务器”上设置 sshd?我以前想使用VPN,但是这种隧道技术需要中继服务器,不是吗?我的实验室里有一台电脑,有公共 IP,但互联网带宽很差,用来注册或记录一些东西....但速度太慢,无法成为中继或代理服务器
  • 嗯,你基本上有 3 种可能的方法来让它工作: 1. 互联网上的服务器,可以作为网关/中继/代理(这是我描述的方法)。 2. 使用一些工具,看看是否可以建立NAT穿越,见en.wikipedia.org/wiki/NAT_traversal,但听起来你已经尝试过了,但没有成功。 3. 在您和公共互联网之间的 NATting 设备中手动设置端口转发。但是您告诉我们您无权执行此操作。因此,如果是这种情况,剩下的唯一选择是 1:在公共互联网上拥有网关/代理/中继服务器。
  • "1. Internet 上的服务器,可以用作网关/中继/代理(这是我描述的方法)。"打扰一下。这是否意味着有一些“免费资源”可以使用?或者我必须建立另一个网关/中继/代理服务器?正如我的“限制 1”所描述的,我拥有的所有公共服务器都是一台带宽很差的旧机器,它作为中继服务器太慢了.....这就是我尝试使用 STUN(TURN/ICE 进行未来扩展)的原因
【解决方案2】:

配置每个 NAT 设备,从具有 Internet 连接的设备开始,将端口转发到具有最内部 NAT 转发到服务器的下一个 NAT 设备。

更新:“2.我无权手动配置 NAT。”我不明白您如何有权在这些之后运行服务器NAT 设备,但无权在其中配置端口转发。当然,运行服务器的权利包括执行运行服务器所必需的操作的权利。

【讨论】:

  • 感谢回复....但是我们无法修改NAT设备,所以我想尽一切办法用软件解决这个问题。
  • 如果您无法修改 NAT 设备,唯一的解决方案是 Internet 端的某些设备代表您接受连接并将其代理给您。你不能从内部做到这一点。 (而且,最有可能的是,如果我知道您的全部要求,我会完全推荐其他东西,例如在其他地方托管该网站。)我很难想象您会如何遇到应该这样做的情况但没有被赋予这样做的能力。
  • 是的,有一个服务器 - OldMan,但他(和他的带宽)太老了,无法承载这些数据。我尝试在宿舍的桌面上建立自己的 NAS(这就是我无法配置 NAT 设备的原因),然后我可以随时用我的 IPAD 或 Android 手机访问我的桌面。
  • @user1553917:做某事的权利必然包括做任何必要的事情的权利。如果您有权使用我的车,您有权将钥匙插入点火装置,因为这是使用汽车的必要条件。如果您有运行服务器的权限,并且运行服务器需要修改 NAT,那么您有权修改 NAT。如果你说你有权在网络上运行服务器,而我说你不能在不修改 NAT 的情况下这样做,我们都是对的,那么你有权修改 NAT 设备。这是一个简单的逻辑。
  • 宿舍为每个租户提供 2-NAT 后的本地 IP (192.168.x.x)。他们不希望任何租户成为管理员来修改默认 NAT 设置。当然这些服务器(包括FTP、HTTP……)都是为个人使用而建的,楼主不会告诉你设备的密码的。对不起,我糟糕的英语让您感到困惑。
猜你喜欢
  • 2017-09-24
  • 2013-08-31
  • 2017-02-18
  • 2023-03-14
  • 2015-11-21
  • 2012-02-20
  • 1970-01-01
  • 2016-09-09
  • 2015-01-28
相关资源
最近更新 更多