【发布时间】:2012-07-24 19:59:12
【问题描述】:
我正在尝试使多层 NAT 后面的 (apache) 服务器可以从 Internet 访问。
限制:
- 避免中继。有一个公共服务器(我们称他为 OldMan)用于登录/眩晕,但它的带宽太差,无法承载中继数据。
- 我无权手动配置 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 有效,我的想法如下,可能吗?
- 用户安装了一个应用程序(例如:stun_browser_agent.exe)
- 用户在 Chrome 上输入以下地址:127.0.0.1:9999
- Chrome 连接到 stun_browser_agent.exe 守护进程
- 守护进程使用 Stun 协议连接到 HTTP 服务器
- Http Server 上的守护进程(例如:stun_apache_agent.exe)接收所有消息并将其中继到 Apache 守护进程。
- Apache回复所有http信息-->stun_apache_agent.exe-->stun_browser_agent.exe-->chrome
这样我们就不用修改浏览器和Apache了。
我可以参考任何可用的资源来实现这个吗?
感谢您的耐心等待
【问题讨论】:
-
我猜所有的 NAT 都有公共 IP 地址,STUN 使用与对等体最近的 NAT 的 IP。所以,STUN 应该在多层场景下工作。
-
我很好奇你是否有解决这个问题的办法。我有同样的问题(打孔一个两层的 NAT)。虽然我可以选择转发,但我很乐意做 p2p。
-
因为我当时想通过普通的http从浏览器访问网页