REVLOOKUPD(8)

NAME
revlookupd - reverse lookup via ICMPv6 node information query

SYNOPSIS
revlookupd [-46Dfl] [-h hostname] [-p inport] [-P outport] -i intface server...

DESCRIPTION
revlookupd works as a DNS relay server/resolver, and performs reverse address lookup (address-to-name translation) via ICMPv6 node information query.

revlookupd will receive unicast DNS queries, and generates ICMPv6 node information query if the query is a reverse lookup attempt against IPv6 address (query for PTR record). It forwards DNS queries to unicast DNS servers as well. Whenever a reply comes back against ICMPv6 node information query or DNS query, revlookupd will forward the reply to the original querier as a DNS packet.

revlookupd will try to respond to DNS queries by itself, whenever possible.

-4

-6  Controls the address family to use for DNS transport. By default revlookupd will listen to all the available address families.

-D  Enable trace messages for debugging.

-f  Run in foreground mode. Do not daemonize on invocation.

-h hostname
    hostname specifies local hostname that revlookupd will serve against incoming queries. If ommitted, result from gethostname(3) will be used. hostname must be an FQDN, terminated by dot.

-i intface
    intface specifies outgoing interface for ICMPv6 node information queries, if the queried address is a link-local address. The flag is mandatory.

-l  Advertise scoped addresses against queries from IPv6 link-local address, or loopback address. Care must be taken if you enable it, scoped address and DNS are not really compatible.

-p inport
    revlookupd listens to UDP port inport for incoming DNS multicast/unicast queries, or unicast replies. By default, inport will be 53. -p is for debugging purposes only.

-P outport
    revlookupd transmits UDP multicast queries to UDP port outport. By default, outport will be 53. -P is for debugging purposes only ( for running two daemons on a single node).

server
    Specify unicast DNS servers we may want to try sending queries. Users can list multiple DNS servers.

revlookupd will generate status dump file on signal SIGUSR1.

FILES
/var/run/revlookupd.dump
    Status dump file.

EXAMPLES
First, run revlookupd on UDP port 53 (standard DNS UDP port). You need to be root to issue bind(2) on privileged port. Specify a DNS server on the command line, like 1.2.3.4.

    # revlookupd -i wi0 1.2.3.4

Then, configure resolv.conf(5) to resolve IP addresses from names using revlookupd.

    nameserver ::1

Here is the sequence of events which would happen on a reverse name lookup:

•   An application on node A queries PTR record that corresponds to an IPv6 address of node B. The query is transmitted toward the address configured in /etc/resolv.conf, which is the loopback address.

•   The query reaches revlookupd on node A.

•   revlookupd on node A relays the query out as an ICMPv6 node information query packet.

•   Node B responds to the ICMPv6 node information query, with its FQDN.

•   revlookupd on node A gets the reply from node B.

•   revlookupd on node A relays the response back to the application.

SEE ALSO
Matt Crawford, IPv6 Node Information Queries, internet draft, draft-ietf-ipngwg-icmp-name-lookups-09.txt, work in progress material, May 2002. Jun-ichiro itojun Hagino, Use of ICMPv6 node information query for reverse DNS lookup, internet draft, draft-itojun-ipv6-nodeinfo-revlookup-00.txt, work in progress material, May 2002.

HISTORY
The revlookupd command first appeared in WIDE/KAME IPv6 protocol stack kit.

BUGS
Specification conformance is still very low.

revlookupd is too aggressive when sending queries. revlookupd will transmit DNS queries every time a client asks revlookupd about the record. Instead, revlookupd should add some delay between subsequent transmissions, and implement cache mechanisms (both positive and negative).

revlookupd requires interface intface to be available and in IFF_UP state, on invocation. This may be too much to ask for laptop usage.

revlookupd relays EDNS0 pseudo RR from a original querier, while it should decide EDNS0 independently from the querier. Imagine cases where the original querier supports EDNS0, while multicast/unicast nameservers (which are the destination of the relayed packet) do not.