I'm trying to make an (apache) server behind multi-layered NAT to be accessible from Internet.
Restrictions:
- Avoid relay. There is a public server (we call him the OldMan) for login / stun, but its bandwidth is too poor to carry relay data.
- I have no right to configure the NATs manually. 3.User don't have to change their browser or device.(that is, works on android, ios, and any PC)
I tried UPnP
, but it only works on 1-layered NAT.
I tried to search NAT
traversal solutions for several months, but in vain.
I study STUN/TURN/ICE
,and tried pjsip (icedemo.exe + numb), however, its stun cannot punch through 2-layered NAT.
I tried Mist,Pwnat, but with no luck. And libjingle sounds like an API for making Gtalk extension as I know...(?)
I also tried to a make VPN/N2N to solve this, but this will be a heavy overloading to the public server. Any VPN client requires the server(the OldMan server) to relay all the packets to another, isn't it?
Is there any solutions to solve this problem? A HTTP server behind multi-layered NATs.
BTW, if the STUN/TURN/ICE works,my idea is as the following ,is it possible?
- User installed an application (ex:stun_browser_agent.exe)
- user type the following address on Chrome: 127.0.0.1:9999
- Chrome connected to stun_browser_agent.exe daemon
- daemon connect to HTTP Server with Stun protocol
- A daemon on Http Server(ex: stun_apache_agent.exe) receive all the message and relay it to Apache daemon.
- Apache reply all the http infomation -->stun_apache_agent.exe-->stun_browser_agent.exe-->chrome
Then we won't have to modify the browser and Apache.
Any available resource I can refer to implement this?
Thank you for your patience