System Administration Guide, Volume 3

IPv6 Daemons

This section describes the following IPv6 daemons:

in.ndpd Daemon

This daemon implements router discovery and auto-address configuration for IPv6. The following table shows the supported options.

Table 16-2 in.ndpd Daemon Options

Option 

Description 

-d

Turns on debugging for all events 

-D

Turns on specific debugging 

-f

File to read configuration from (instead of default file) 

-I

Prints per interface related information 

-n

Does not loop back router advertisements 

-r

Ignores received packets 

-v

Verbose mode (reports various types of diagnostic messages) 

-t

Turns on packet tracing 

Parameters set in the /etc/inet/ndpd.conf configuration file and the /var/inet/ndpd_state.interface startup file (if they exist) control the actions of in.ndpd.

When /etc/inet/ndpd.conf exists, it is parsed and used to configure a node as a router. The following table lists the valid keywords that might appear in this file. When a host is booted, routers might not be immediately available, or advertised packets by the router might be dropped and not reach the host. The /var/inet/ndpd_state.interface file is a state file that is maintained and updated periodically by each node so that when it fails and is restarted it can configure its interfaces in the absence of routers. This file contains information such as: the interface address, the time it was updated, and how long it is valid, along with other parameters learned from previous router advertisements.


Note -

You do not need to alter the contents of the state files. The in.ndpd daemon automatically maintains them.


Table 16-3 /etc/inet/ndpd.conf Keywords

Keywords 

Description 

ifdefault

Specifies router behavior for all interfaces. Use the following syntax to set router parameters and corresponding values: 

ifdefault [variable value]

prefixdefault

Specifies prefix advertisement default behavior. Use the following syntax to set router parameters and corresponding values: 

prefixdefault [variable value]

if

Sets per interface parameters. Use the following syntax: 

if interface [variable value]

prefix

Advertises per interface prefix information. Use the following syntax: 

prefix prefix/length interface [variable value]


Note -

The ifdefault/prefixdefault entries must precede the if and prefix entries in the configuration file.


See the in.ndpd(1M) man page and also see the ndpd.conf(4) man page for a list of configuration variables and allowable values.

Example--/etc/inet/ndpd.conf File

The following example provides a template (commented lines) and also shows an example of how the keywords and configuration variables are used.


# ifdefault      [variable value]*
# prefixdefault [variable value]*
# if ifname   [variable value]*
# prefix prefix/length ifname
#
#  Per interface configuration variables
#
#DupAddrDetectTransmits
#AdvSendAdvertisements
#MaxRtrAdvInterval
#MinRtrAdvInterval
#AdvManagedFlag
#AdvOtherConfigFlag
#AdvLinkMTU
#AdvReachableTime
#AdvRetransTimer
#AdvCurHopLimit
#AdvDefaultLifetime
#
# Per Prefix:  AdvPrefixList configuration varialbes
#
#
#AdvValidLifetime
#AdvOnLinkFlag
#AdvPreferredLifetime
#AdvAutonomousFlag
#AdvValidExpiration
#AdvPreferredExpiration

ifdefault AdvReachableTime 30000 AdvRetransTimer 2000
prefixdefault AdvValidLifetime 240m AdvPreferredLifetime 120m

if qe0 AdvSendAdvertisements 1
prefix 2:0:0:56::/64 qe0
prefix fec0:0:0:56::/64 qe0

if qe1 AdvSendAdvertisements 1
prefix 2:0:0:55::/64 qe1
prefix fec0:0:0:56::/64 qe1

if qe2 AdvSendAdvertisements 1
prefix 2:0:0:54::/64 qe2
prefix fec0:0:0:54::/64 qe2

in.ripngd Daemon

The in.ripngd daemon implements the RIPng routing protocol for IPv6 routers. RIPng defines the IPv6 equivalent of RIP, a widely used IPv4 routing protocol based on the Bellman-Ford distance vector algorithm. The following table shows the supported options.

Table 16-4 in.ripngd Daemon Options

Option 

Description 

-p n

n specifies the alternate port number used to send/receive RIPNG packets

-q

Suppresses routing information 

-s

Forces routing information whether or not it is acting as a router 

-P

Suppresses use of poison reverse 

-S

If in.ripngd does not act as a router, it will enter only a default route for each router.

inetd Internet Services Daemon

An IPv6-enabled server is one that can handle IPv4 or IPv6 addresses depending on what the corresponding client is using. The /etc/inet/inetd.conf file contains the list of servers that inetd(1M) invokes when it receives an Internet request over a socket. Each socket-based Internet server entry is composed of a single line that uses the following syntax:


service_name socket_type proto flags user server_pathname args

See the inetd.conf(4) man page for a description of the possible values for each field. For the Solaris operating environment, to specify a service as IPv6-enabled in the /etc/inet/inetd.conf file, you must specify the proto field as tcp6 or udp6. If the service is IPv4-only, the proto field must be specified as tcp or udp. By specifying a proto value of tcp6 or udp6 for a service, inetd will pass the given daemon an AF_INET6 socket.

The following entry in the inetd.conf file depicts a udp server (myserver) that can communicate with both IPv4 and IPv6 client applications.


Example 16-3 Server Communicating With Both IPv4 and IPv6 Client Applications


myserver   dgram   udp6	wait	root	/usr/sbin/myserver	myserver

If an IPv6-enabled server is written in such a way that it can inherit an AF_INET (IPv4 only) or an AF_INET6 (IPv6 and IPv4) socket from inetd, the proto value for the service is specified as either tcp6 (udp6) or tcp (udp). For these type of servers you can also specify two inetd.conf entries: one with proto as tcp, and one with proto as tcp6.


Note -

Because AF_INET6 sockets work with either the IPv4 or IPv6 protocols, specifying a proto value of tcp6 (udp6) is sufficient.


See Network Interface Guide for details on writing various types of IPv6-enabled servers.

All Solaris bundled servers require only one inetd entry that specifies proto as tcp6 or udp6. However, the remote shell server (shell) and the remote execution server (exec) must have an entry for both the tcp and tcp6 proto values. The following example shows the inetd entries for rlogin, telnet, shell, and exec.


Example 16-4 inetd.conf Entries for Some Solaris Bundled Servers


login	stream	tcp6	nowait	root	/usr/sbin/in.rlogind	in.rlogind
telnet	stream	tcp6	nowait	root	/usr/sbin/in.telnetd	in.telnetd
shell	stream	tcp	nowait	root	/usr/sbin/in.rshd	in.rshd
shell	stream	tcp6	nowait	root	/usr/sbin/in.rshd	in.rshd
exec	stream	tcp	nowait	root	/usr/sbin/in.rexecd	in.rexecd
exec	stream	tcp6	nowait	root	/usr/sbin/in.rexecd	in.rexecd

If you specify TCP Wrappers (a public domain utility used for monitoring and filtering incoming requests for various network services, such as telnet) as the server_pathname for any of these utilities, you must ensure that TCP Wrappers is IPv6 capable. Otherwise, you must specify proto as tcp or udp for those services that are being used with TCP Wrappers.

In addition, if you replace a bundled Solaris utility with another implementation, you must verify if the implementation of that service supports IPv6. If it does not, then you must specify the proto value as either tcp or udp.


Note -

If you specify proto as tcp or udp only, the service uses only IPv4. You need to specify proto as tcp6 or udp6 to enable either IPv4 or IPv6 connections. If the service does not support IPv6, then do not specify tcp6 or udp6.


See IPv6 extensions to the Socket API in Network Interface Guide for more details on writing IPv6 enabled servers using sockets.