[erlang-questions] Simple NAT traversal

Michael Santos <>
Wed Feb 1 14:47:37 CET 2012


On Wed, Feb 01, 2012 at 12:25:02AM -0800, 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?

You could ask a 3rd party service:

1> inets:start().
ok.
2> URL = "http://automation.whatismyip.com/n09230945.asp".
3> {ok, {{"HTTP/1.1",200,"OK"}, _Headers, Body}} = httpc:request(URL).
{ok,{{"HTTP/1.1",200,"OK"},
     [{"cache-control","private"},
      {"date","Wed, 01 Feb 2012 13:15:10 GMT"},
      {"server","Microsoft-IIS/6.0"},
      {"content-length","13"},
      {"content-type","text/html"},
      {"x-powered-by","ASP.NET"},
      {"set-cookie",
       "ASPSESSIONIDQARTQQTD=DEJMEEEANLDPDNGGOJIKKFAG;
       path=/"}],
    "1.11.111.12"}}
4> inet_parse:address(Body).
{ok,{1,11,111,12}}

Google will show you your public IP too:

http://google.com/?q=what+is+my+ip+address




More information about the erlang-questions mailing list