7

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

限制:

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

我试过UPnP了,但它只适用于1 层 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。

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

感谢您的耐心等待

4

2 回答 2

0

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

一种方法是在 Internet 网关路由器和服务器之间设置 SSH 隧道。

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

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

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

于 2012-07-26T09:08:02.500 回答
-1

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

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

于 2012-07-26T09:02:07.970 回答