[erlang-questions] {error,timeout} with gethostbyname

Raimo Niskanen raimo+erlang-questions@REDACTED
Fri Sep 25 14:46:13 CEST 2009


On Fri, Sep 25, 2009 at 12:03:38PM +0200, info wrote:
> Hi Raimo,
> Note that I appreciate your help because it seems that the problem is not in erlang.
> 
> On Thu, Sep 24, 2009 at 04:55:57PM +0200, info wrote:
> > I also tried to add the address of my dns server.
> > inet_db:add_ns({ip}).
> > But no effect.
> > 
> > inet_getrc(). gives now:
> > 
> > [{host,{127,0,0,1},["my_host"]},
> >  {nameserver,{192,168,1,33}}]
> > 
> You have {res_lookup,[native,file]} meaning first is the OS
> gethostbyname equivalent function used. During the startup
> of Erlang it discovered that "my_host" could not be
> resolved so it entered "my_host" as {127,0,0,1} into the
> internal hosts table to ensure that inet:gethostbyname("my_host")
> would succeed.
> 
> But the native lookup method times out, probably due
> to misconfigured name resolving in the OS, so the
> internal hosts table is never used.
> 
> How long does the call inet:gethostbyname("my_host")
> take to return {error,timeout}?
> >>>>>>>>>>>> 6-7 seconds

Ok...

> 
> Can the native lookup method look up any name at all?
> Try: inet_gethost_native:gethostbyname("localhost").
> >>>>>>>>>>>> {error,timeout}
> inet_gethost_native:gethostbyname("my_host").
> >>>>>>>>>>>> {error,timeout}
> inet_gethost_native:gethostbyname("www.google.com").
> >>>>>>>>>>>> {error,timeout}

Nothing worked.

> >From a Windows command shell, try:
> nslookup my_host
> >>>>>>>>>>>>server: my_host.my_domain.local
> >>>>>>>>>>>>address: 192.168.1.33
> >>>>>>>>>>>>name: my_host.my_domain.local
> >>>>>>>>>>>>address: 192.168.1.33
> nslookup localhost
> >>>>>>>>>>>>server: my_host.my_domain.local
> >>>>>>>>>>>>address: 192.168.1.33
> >>>>>>>>>>>>my_host.my_domain.local doesn't find localhost: no existing domain (*** I translated from french ! )

Well well, of course that worked...
This means your host is its own DNS server (?).

> 
> Pay special attention to which nameserver that answers.
> 
> If you can not fix the network configuration, which will
> solve your problem, you can configure erlang to not
> use the native lookup method. The erlang DNS resolver
> client was much improved to R13B02, but it worked
> well in R13B01 too.
> >>>>>>>>>>>>My problem is I don't see what is wrong in my network configuration or in my dns server configuration !
> Set the lookup method to [file,dns] and add your
> nameserver as you tried:
> inet_db:add_ns({192,168,1,33}).
> >>>>>>>>>>>>ok
> inet_db:set_lookup([file,dns]).
> >>>>>>>>>>>>ok
> Then try inet:gethostbyname("my_host"),
> >>>>>>>>>>>>{ok,{hostent,"my-host",[],inet,4,[{127,0,0,1}]}}             BETTER !!

That is the patched 'file' lookup method that found the name.
This is often enough to run a local non-distributed node.

> or even inet_res:gethostbyname("my_host).
> >>>>>>>>>>>>{error,timeout}                         WHY ?

Maybe your firewall does not allow DNS requests from erlang.
Try:
	rr(inet_res).
	inet_res:nslookup("my_host.my_domain.local", in, a, [{{192,168,1,33},53}]).
And, maybe using the external IP address is what is not allowed.
	inet_res:nslookup("my_host.my_domain.local", in, a, [{{127,0,0,1},53}]).

> But I hope you can fix your network configuration instead...
> 
> > 
> > 
> > n Wed, Sep 23, 2009 at 04:31:35PM +0200, info wrote:
> >  > Hi all,
> >  > On a windows 2003 server sbs this command returns {ok,"my_host"} :
> >  > 
> >  > {ok,N}=inet:gethostname().
> >  > 
> >  > But the following command returns {error,timeout} :
> >  > 
> >  > inet:gethostbyname(N).
> >  > 
> >  > On a Vista machine, the previous command returns a correct answer.
> >  > 
> >  > I know that it is not an erlang problem but if you could give me support, I will appreciate ;-)
> > 
> > Erlang may have problems configuring name lookups.
> > Give me the output from ets:tab2list(inet_db).
> > 
> > Which erlang release are you running, it sounds like pre-R13B02?
> > 
> > Try starting with erl -name foo
> > and do the same, ets:tab2list/1 too.
> > 
> > -- 
> > 
> > / Raimo Niskanen, Erlang/OTP, Ericsson AB
> 
> -- 
> 
> / Raimo Niskanen, Erlang/OTP, Ericsson AB

-- 

/ Raimo Niskanen, Erlang/OTP, Ericsson AB


More information about the erlang-questions mailing list