# 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
              10.0.0.1       flotsam.cs.vu.nl
              10.0.0.2       jetsam.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.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  to
         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),   netdefault(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)