NAT后面的HTTP服务器

时间:2012-07-26 08:59:42

标签: nat stun

我正在尝试在多层NAT后面创建一个(apache)服务器,以便从Internet访问。

限制:

  1. 避免接力。有一个公共服务器(我们称之为OldMan)用于登录/ stun,但其带宽太差,无法传输中继数据。
  2. 我无权手动配置NAT。 3.用户无需更改浏览器或设备。(即适用于Android,ios和任何PC)
  3. 我尝试了UPnP,但它仅适用于 1层NAT

    我试图搜索NAT遍历解决方案已有好几个月,但徒劳无功。

    我研究STUN/TURN/ICE,并尝试了pjsip(icedemo.exe + numb),然而,它的晕眩不能穿过2层NAT。

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

    我也尝试过make 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 Server
    5. Http Server上的守护程序(例如:stun_apache_agent.exe)接收所有消息并将其转发给Apache守护程序。
    6. Apache回复所有的http信息 - > stun_apache_agent.exe - > stun_browser_agent.exe - > chrome
    7. 然后我们不必修改浏览器和Apache。

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

      感谢您的耐心

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:-1)

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

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

相关问题