nonamed(8)



NAME

     nonamed - not a name daemon, but acts like one


SYNOPSIS

     nonamed [-d[level]] [-p port] [-n address[/port]]


DESCRIPTION

     Nonamed is not an Internet name  daemon.   When  started  it  immediately
     tries  to  find a real name daemon on the local network.  If it finds one
     then it will relay any DNS queries to that name daemon.  If it can't find
     one  then  it  will  do  its  best  to  answer  simple  queries using the
     /etc/hosts table for name to address translation.

     On startup nonamed broadcasts up to five simple UDP queries on the  local
     network.  This is a somewhat nasty thing to do, because it makes all name
     servers on the net spring into action to answer the request.   The  first
     name  server  to  answer  is used by nonamed to answer the queries of its
     clients.  The broadcast search is repeated after an hour to give  another
     name server a chance to be abused.  (It is quite normal for a host to use
     a remote name server.  The broadcasts are a bit unfriendly, but they only
     happen once an hour.)

     If a real name server is found then nonamed enters "relay mode",  passing
     all  queries on.  In relay mode the daemon cannot be distinguished from a
     real DNS name daemon.

     Nonamed accepts both UDP and TCP queries under Minix-vmd.  Under standard
     Minix  only  UDP  queries  are  accepted.  256 relayed UDP queries can be
     outstanding before it forgets where the first one came from.

     In answer mode nonamed can answer simple DNS queries to translate a  host
     name  to  an  IP  address,  or  an  IP  address  to a host name.  Suppose
     /etc/hosts looks like this:

          127.0.0.1      localhost
          192.9.200.1    darask.home.cs.vu.nl
          192.9.200.2    burask.home.cs.vu.nl

     Then queries for the host names  listed  can  be  answered  with  the  IP
     addresses  to  the  left  of them.  If the name can't be found then it is
     retried with the domain name stripped of, this is because "localhost"  is
     looked  up  as  "localhost.home.cs.vu.nl"  in the above example.  Reverse
     lookups are answered with the first hostname on  the  line  with  the  IP
     address.

     UDP queries are immediately answered on startup  if  the  answer  can  be
     found in the hosts file.  Failure answers, and answers to TCP queries are
     delayed until it decides that there are no real name servers out there.


     Nonamed employs several timeouts for efficient operation:

     If five broadcasts, two seconds apart fail to produce a  name  server  on
     startup then it decides that there are no real name servers around.

     After 1 hour it will again look for a name server.  (We don't want to hog
     the same one indefinitely.)

     If no UDP reply is seen in four seconds than a simple probe is  sent  the
     name  server.   If  that doesn't provoke an answer in two seconds then it
     will look for a new name server.  A  failing  TCP  connection  will  also
     invoke  a search, the TCP connection is then made to the new name server.
     A client using UDP will retry eventually, a client using TCP will  notice
     nothing but a short delay.  The daemon drops back into answer mode if the
     search fails and it has a hosts file with a "localhost" entry.

     It waits five  minutes  for  any  action  on  a  TCP  stream  before  the
     connection is aborted.

     In answer mode it will generate data with a TTL (time to live) of 1 hour.


OPTIONS

     The options are only useful when debugging nonamed, although  it  can  be
     very instructive to watch DNS queries being done.

     -d[level]
          Set debugging level to level (a single digit, by default 1.)   Debug
          mode  1 makes nonamed decode and display the DNS queries and replies
          that it receives, sends and relays.  The decoding only  handles  the
          common  cases.   In debug mode 2 it prints tracing information about
          the internal jobs it executes.  In debug mode 3 it core  dumps  when
          an  error  causes  it  to  exit.   The  debugging  level may also be
          increased by 1 at runtime by sending signal SIGUSR1  or  turned  off
          (set to 0) with SIGUSR2.

     [-p port]
          Port to use instead of the normal domain port.

     [-n address[/port]]
          Use this IP address and port to find a real name server.  It can  be
          used  to make nonamed relay to another nonamed.  (They do not listen
          to broadcasts, of course.)  You can run two daemons on  one  machine
          if  you  choose  a  new  port number for one of them.  You can force
          nonamed out of relay mode by sending it a hangup signal.


FILES





     /etc/hosts     Hosts to address translation table when in answer mode.


SEE ALSO

     gethostbyname(3),  resolver(3),  hosts(5),  set_net_default(8),  boot(8),
     inetd(8), irdpd(8), rarpd(8).


NOTES

     You can specify a remote name server in  /etc/resolv.conf  to  circumvent
     nonamed.  But then you lose its talent for automatically finding new name
     servers when the remote name server becomes unreachable.

     Don't add a "localhost" entry to the hosts file if there are remote  name
     servers.  It makes nonamed drop back in answer mode on a flaky network.


BUGS

     If you can get a remote nonamed to listen to your name  server  then  you
     can  make  it believe anything you want to.  You need access to a machine
     on the same subnet of course.


AUTHOR

     Kees J. Bot (kjb@cs.vu.nl)