123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 |
- .TH NDB 8
- .SH NAME
- query, mkhash, mkdb, cs, csquery, dns, dnsquery, ipquery, dnsdebug, mkhosts \- network database
- .SH SYNOPSIS
- .B ndb/query
- [
- .B -f
- .I dbfile
- ]
- .I "attr value"
- [
- .I rattr
- ]
- .br
- .B ndb/ipquery
- .I "attr value"
- .I rattr...
- .br
- .B ndb/mkhash
- .I "file attr"
- .br
- .B ndb/cs
- [
- .B -n
- ] [
- .B -f
- .I dbfile
- ] [
- .B -x
- .I netmtpt
- ]
- .br
- .B ndb/csquery
- [
- .B -s
- ]
- [
- .B server
- [
- .I addr...
- ]
- ]
- .br
- .B ndb/dns
- [
- .B -rsn
- ] [
- .B -f
- .I dbfile
- ] [
- .B -x
- .I netmtpt
- ] [
- .B -z
- .I program
- ]
- .br
- .B ndb/dnsquery
- .br
- .B ndb/dnsdebug
- [
- .B -rx
- ]
- [ [
- .BI @ server
- ]
- .I domain-name
- [
- .I type
- ] ]
- .br
- .B ndb/mkdb
- .SH DESCRIPTION
- The network database holds administrative information used by
- network programs such as
- .IR dhcpd (8),
- .IR ipconfig (8),
- .IR con (1),
- etc.
- .PP
- .I Ndb/query
- searches the database for an attribute of type
- .I attr
- and value
- .IR value .
- If
- .I rattr
- is not specified, all entries matched by the search are returned.
- If
- .I rattr
- is specified, the value of the first pair with attribute
- .I rattr
- of all the matched entries is returned.
- .PP
- .I Ndb/ipquery
- uses
- .I ndbipinfo
- (see
- .IR ndb (2))
- to search for the values of the attributes
- .I rattr
- corresponding to the system
- with entries of attribute type
- .I attr
- and
- value
- .IR value .
- .PP
- .I Ndb/mkhash
- creates a hash file for all entries with attribute
- .I attr
- in database file
- .IR file .
- The hash files are used by
- .I ndb/query
- and by the ndb library routines.
- .PP
- .I Ndb/cs
- is a server used by
- .IR dial (2)
- to translate network names.
- It is started at boot time.
- It finds out what networks are configured
- by looking for
- .B /net/*/clone
- when it starts.
- It can also be told about networks by writing
- to
- .B /net/cs
- a message of the form:
- .IP
- .B "add net1 net2 ..."
- .PP
- .I Ndb/cs
- also sets the system name in
- .B /dev/sysname
- if it can figure it out.
- The options are:
- .TP
- .B -f
- supplies the name of the data base file to use,
- default
- .BR /lib/ndb/local .
- .TP
- .B -x
- specifies the mount point of the
- network.
- .TP
- .B -n
- causes cs to do nothing but set the system name.
- .PP
- .I Ndb/csquery
- can be used to query
- .I ndb/cs
- to see how it resolves addresses.
- .I Ndb/csquery
- prompts for addresses and prints out what
- .I ndb/cs
- returns.
- .I Server
- defaults to
- .BR /net/cs .
- If any
- .I addrs
- are specified,
- .I ndb/csquery
- prints their translations and immediately exits.
- The exit status will be nil only if all addresses
- were successfully translated
- The
- .B -s
- flag sets exit status without printing any results.
- .PP
- .I Ndb/dns
- is a server used by
- .I ndb/cs
- and by remote systems to translate Internet domain names.
- .I Ndb/dns
- is started at boot time.
- By default
- .I dns
- serves only requests written to
- .BR /net/dns .
- The options are:
- .TP
- .B -f
- supplies the name of the data base file to use,
- default
- .BR /lib/ndb/local .
- .TP
- .B -x
- specifies the mount point of the
- network.
- .TP
- .B -s
- also answer domain requests sent to UDP port 53.
- .TP
- .B -n
- whenever a zone that we serve changes, send UDP NOTIFY
- messages to any dns slaves for that zone.
- .TP
- .B -z
- whenever we receive a UDP NOTIFY message, run
- .I program
- with the domain name of the area as its argument.
- .TP
- .B -r
- defer to other servers to resolve queries.
- .PP
- When the
- .B -r
- option is specified, the servers used come from the
- .I dns
- attribute in the database. For example, to specify a set of dns servers that
- will resolve requests for systems on the network
- .IR mh-net :
- .EX
- ipnet=mh-net ip=135.104.0.0 ipmask=255.255.0.0
- dns=ns1.cs.bell-labs.com
- dns=ns2.cs.bell-labs.com
- dom=ns1.cs.bell-labs.com ip=135.104.1.11
- dom=ns2.cs.bell-labs.com ip=135.104.1.12
- .EE
- .PP
- The server for a domain is indicated by a database entry containing
- both a
- .I dom
- and a
- .I ns
- attribute.
- For example, the entry for the Internet root is:
- .EX
- dom=
- ns=A.ROOT-SERVERS.NET
- ns=B.ROOT-SERVERS.NET
- ns=C.ROOT-SERVERS.NET
- dom=A.ROOT-SERVERS.NET ip=198.41.0.4
- dom=B.ROOT-SERVERS.NET ip=128.9.0.107
- dom=C.ROOT-SERVERS.NET ip=192.33.4.12
- .EE
- The last three lines provide a mapping for the
- server names to their ip addresses. This is only
- a hint and will be superseded from whatever is learned
- from servers owning the domain.
- .PP
- You can also serve a subtree of the domain name space from the local
- database. You indicate subtrees that you'ld like to serve by
- adding an
- .B soa=
- attribute to the root entry.
- For example, the Bell Labs CS research domain is:
- .EX
- dom=cs.bell-labs.com soa=
- refresh=3600 ttl=3600
- ns=plan9.bell-labs.com
- ns=ns1.cs.bell-labs.com
- ns=ns2.cs.bell-labs.com
- mb=presotto@plan9.bell-labs.com
- mx=mail.research.bell-labs.com pref=20
- mx=plan9.bell-labs.com pref=10
- dnsslave=nslocum.cs.bell-labs.com
- dnsslave=vex.cs.bell-labs.com
- .EE
- Here, the
- .B mb
- entry is the mail address of the person responsible for the
- domain (default
- .BR postmaster ).
- The
- .B mx
- entries list mail exchangers for the domain name and
- .B refresh
- and
- .B ttl
- define the area refresh interval and the minimum TTL for
- records in this domain.
- The
- .B dnsslave
- entries specify slave DNS servers that should be notified
- when the domain changes. The notification also requires
- the
- .B -n
- flag.
- .PP
- You can also serve reverse lookups (returning the name that
- goes with an IP address) by adding an
- .B soa=
- attribute to the entry defining the root of the reverse space.
- For example, to provide reverse lookup for all addresses in
- starting with 135.104 you must have a record like:
- .EX
- dom=104.135.in-addr.arpa soa=
- refresh=3600 ttl=3600
- ns=plan9.bell-labs.com
- ns=ns1.cs.bell-labs.com
- ns=ns2.cs.bell-labs.com
- .EE
- Notice the form of the reverse address, i.e., it's the bytes of the
- address range you are serving reversed and with
- .B .in-addr.arpa
- appended. This is a standard form for a domain name in an IPv4 PTR record.
- .PP
- If such an entry exists in the database, reverse addresses will
- automatically be generated from any IP addresses in the database
- that are under this root. For example
- .EX
- dom=ns1.cs.bell-labs.com ip=135.104.1.11
- .EE
- will automatically create both forward and reverse entries for
- .B ns1.cs.bell-labs.com .
- Unlike other DNS servers, there's no way to generate
- inconsistent forward and reverse entries.
- .PP
- Delegation of a further subtree to another set of name servers
- is indicated by an
- .B soa=delegated
- attribute.
- .EX
- dom=bignose.cs.research.bell-labs.com
- soa=delegated
- ns=anna.cs.research.bell-labs.com
- ns=dj.cs.research.bell-labs.com
- .EE
- Nameservers within the delegated domain (as in this example)
- must have their IP addresses listed elsewhere in
- .I ndb
- files.
- .PP
- Wild-carded domain names can also be used.
- For example, to specify a mail forwarder for all Bell Labs research systems:
- .EX
- dom=*.research.bell-labs.com
- mx=research.bell-labs.com
- .EE
- `Cname' aliases may be established by adding a
- .B cname
- attribute giving the real domain name;
- the name attached to the
- .B dom
- attribute is the alias.
- `Cname' aliases are severely restricted;
- the aliases may have no other attributes than
- .B dom
- and are daily further restricted in their use by new RFCs.
- .EX
- cname=anna.cs.research.bell-labs.com dom=www.cs.research.bell-labs.com
- .EE
- .I Ndb/dnsquery
- can be used to query
- .I ndb/dns
- to see how it resolves requests.
- .I Ndb/dnsquery
- prompts for commands of the form
- .IP
- .I "domain-name request-type"
- .LP
- where
- .I request-type
- can be
- .BR ip ,
- .BR mx ,
- .BR ns ,
- .BR cname ,
- .BR ptr ....
- In the case of the inverse query type,
- .BR ptr ,
- .I dnsquery
- will reverse the ip address and tack on the
- .B .in-addr.arpa
- for you.
- .PP
- .I Ndb/dnsdebug
- is like
- .I ndb/dnsquery
- but bypasses the local server.
- It communicates via UDP with the domain name servers
- in the same way that the local resolver would and displays
- all packets received.
- The query can be specified on the command line or
- can be prompted for.
- The queries look like those of
- .I ndb/dnsquery
- with one addition.
- .I Ndb/dnsdebug
- can be directed to query a particular name server by
- the command
- .BI @ name-server\f1.
- From that point on, all queries go to that name server
- rather than being resolved by
- .IR dnsdebug .
- The
- .B @
- command returns query resolution to
- .IR dnsdebug .
- Finally, any command preceded by a
- .BI @ name-server
- sets the name server only for that command.
- .PP
- Normally
- .I dnsdebug
- uses the
- .B /net
- interface and the database file
- .BR /lib/ndb/local.
- The
- .B -x
- option directs
- .I dnsdebug
- to use the
- .B /net.alt
- interface and
- .B /lib/ndb/external
- file.
- The
- .B -r
- option is the same as for
- .IR ndb/dns .
- .PP
- .I Ndb/mkdb
- is used in concert with
- .IR awk (1)
- scripts to convert
- uucp systems files and IP host files
- into database files.
- It is very specific to the situation at Murray Hill.
- .PP
- When the database files change underfoot,
- .I ndb/cs
- and
- .I ndb/dns
- track them properly. Nonetheless, to keep the database searches efficient
- it is necessary to run
- .I ndb/mkhash
- whenever the files are modified.
- It may be profitable to control this by a frequent
- .IR cron (8)
- job.
- .PP
- .I Ndb/mkhosts
- generates a BSD style
- .BR hosts ,
- .BR hosts.txt ,
- and
- .B hosts.equiv
- files from an ndb data base file specified on the
- command line (default
- .BR /lib/ndb/local ).
- For local reasons the files are called
- .BR hosts.1127 ,
- .BR astro.txt ,
- and
- .BR hosts.equiv .
- .SH EXAMPLES
- .EX
- % ndb/query sys helix
- sys=helix dom=helix.research.bell-labs.com bootf=/mips/9powerboot
- ip=135.104.117.31 ether=080069020427
- proto=il
- % ndb/dnsquery
- > plan9.bell-labs.com ip
- plan9.bell-labs.com ip 204.178.31.2
- > 204.178.31.2 ptr
- 2.31.178.204.in-addr.arpa ptr plan9.bell-labs.com
- 2.31.178.204.in-addr.arpa ptr ampl.com
- >
- .EE
- .SH FILES
- .TF /lib/ndb/local.*xxx
- .TP
- .B /lib/ndb/local
- first database file searched
- .TP
- .B /lib/ndb/local.*
- hash files for
- .B /lib/ndb/local
- .TP
- .B /srv/cs
- service file for
- .I ndb/cs
- .TP
- .B /net/cs
- where
- .B /srv/cs
- gets mounted
- .TP
- .B /srv/dns
- service file for
- .I ndb/dns
- .TP
- .B /net/dns
- where
- .B /srv/dns
- gets mounted
- .SH SOURCE
- .B /sys/src/cmd/ndb
- .SH SEE ALSO
- .IR ndb (2)
- .IR ndb (6)
- .SH BUGS
- .I Ndb
- databases are case-sensitive;
- ethernet addresses must be in lower-case hexadecimal.
|