[erlang-questions] Simple NAT traversal

Ivan Ostres <>
Wed Feb 1 14:34:13 CET 2012


Easiest way is to sent http GET to something like 
http://www.ip-adress.com/ - it's a free IP address lookup.

Other simple alternative (if possible) is to add such facility to 
clients (if you control them).

BR,
Ivan

On 2/1/12 2:19 PM, eigenfunction wrote:
> Thank you for the response. But before i wade into that territory,
> do you think it will be easier than just writing a tcp server?
> Anyway, i am going to check that out.
>
> On 1 Feb., 10:50, Edward Wang<>  wrote:
>> If your NAT device supports UPnP, you can ask for its external address
>> using UPnP protocol. But there's nothing simple in it. UPnP is a
>> horrible protocol.
>>
>> That said, if you do want to try this, you can check out UPnP
>> implementation in etorrent. I did that about one year ago for opening
>> port mapping. The related source code are
>> (https://github.com/edwardw/etorrent/tree/master/apps/etorrent/src):
>>
>>      etorrent_upnp_sup.erl
>>      etorrent_upnp_proto.erl
>>      etorrent_upnp_net.erl
>>      etorrent_upnp_handler.erl
>>      etorrent_upnp_entity.erl
>>
>> They are quite standalone and complete UPnP implementation. Take a
>> look at how add_port_mapping is implemented:
>>     https://github.com/jlouis/etorrent/blob/master/apps/etorrent/src/etor...
>> It should be easy enough to add your own get_external_address
>> function, which is defined in following specification:
>>     http://upnp.org/specs/gw/UPnP-gw-WANIPConnection-v1-Service.pdf
>>
>> Regards,
>> Edward
>>
>> On Wed, Feb 1, 2012 at 4:25 PM, eigenfunction<>  wrote:
>>> Hi everybody,
>>> i have an erlang application running behind a nat. Now i have come to
>>> a point where i need to know my public ip. I was thinking about
>>> running a tiny tcp server behind the nat whose sole purpose would be
>>> to send me my public ip. My question is this: isn't there a more
>>> simple alternative? Heck, even if i could determine the public ip of
>>> the NAT device without doing a "backflip" it will be enough for my
>>> case.
>>> Any idea?
>>> _______________________________________________
>>> erlang-questions mailing list
>>> 
>>> http://erlang.org/mailman/listinfo/erlang-questions
>> _______________________________________________
>> erlang-questions mailing list
>> ://erlang.org/mailman/listinfo/erlang-questions
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>




More information about the erlang-questions mailing list