IPADDRSEL(8) Maintenance Commands and Procedures IPADDRSEL(8)
NAME
ipaddrsel - configure IPv6 default address selection
SYNOPSIS
/usr/sbin/ipaddrsel /usr/sbin/ipaddrsel -f file /usr/sbin/ipaddrsel -dDESCRIPTION
Use the
ipaddrsel utility to configure the IPv6 default address
selection policy table. The policy table is a longest-matching-prefix
lookup table that is used for IPv6 source address selection and for
destination address ordering when resolving names to
AF_INET6 addresses. For a description of how the policy table is used for
source address selection, see
inet6(4P). For a description of how the
policy table is used for destination address ordering, see
getaddrinfo(3SOCKET).
The unmodified policy table is valid for all typical IPv6
deployments. Modify the table only if a circumstance exists for which
the default behavior of the IPv6 source address selection or
destination address ordering mechanism is unsatisfactory. See the
section for examples of such circumstances. You should carefully
consider your addressing strategy before you change the table from
the provided default.
When the
ipaddrsel command is issued without any arguments, the
address selection policy currently in use is printed. The format of
the output is compatible with the format of the configuration file
that the
-f option accepts.
Note -
If the
usesrc subcommand to
ifconfig(8) is applied to a particular
physical interface, the selection policy specified by
usesrc overrides the source address selection policies specified by
ipaddrsel. This is true for packets that are locally generated and
for applications that do not choose a non-zero source address using
bind(3SOCKET).
The Configuration File
The configuration file that the
-f option accepts can contain either
comment lines or policy entries. Comment lines have a '
#' character
as the first non-blank character. and they are ignored by the
ipaddrsel utility. Policy entry lines have the following format:
prefix/
prefix_length precedence label [#
comment]
The
prefix must be an IPv6 prefix in a format consistent with
inet(3C). The
prefix_length is an integer ranging from 0 to 128. The
IPv6 source address selection and destination address ordering
algorithms determine the precedence or label of an address by doing a
longest-prefix-match lookup using the prefixes in this table, much
like next-hop determination for a destination is done by doing a
longest-prefix-match lookup using an IP routing table.
The precedence is a non-negative integer that represents how the
destination address ordering mechanism will sort addresses returned
from name lookups. In general, addresses with a higher precedence
will be in front of addresses with a lower precedence. Other factors,
such as destinations with undesirable source addresses can, however,
override these precedence values.
The label is a string of at most fifteen characters, not including
the
NULL terminator. The label allows particular source address
prefixes to be used with destination prefixes of the same label.
Specifically, for a particular destination address, the IPv6 source
address selection algorithm prefers source addresses whose label is
equal that of the destination.
The label may be followed by an optional comment.
The file must contain a default policy entry, which is an entry with
::0/0 as its
prefix and
prefix_length. This is to ensure that all
possible addresses match a policy.
OPTIONS
The
ippadrsel utility supports the following options:
-f file Replace the address selection policy table with the policy
specified in the
file.
-d Revert the kernel's address selection policy table back to
the default table. Invoking
ipaddrsel in this way only
changes the currently running kernel's policy table, and
does not alter the configuration file
/etc/inet/ipaddrsel.conf. To revert the configuration file
back to its default settings, use
ipaddrsel -d, then dump
the contents of the table to the configuration file by
redirecting the output of
ipaddrsel to
/etc/inet/ipaddrsel.conf.
example#
ipaddrsel -d example#
ipaddrsel > /etc/inet/ipaddrsel.confEXAMPLES
Example 1: The Default Policy in /etc/inet/ipaddrsel.conf
The following example is the default policy that is located in
/etc/inet/ipaddrsel.conf:
# Prefix Precedence Label
::1/128 50 Loopback
::/0 40 Default
::ffff:0.0.0.0/96 35 IPv4
2002::/16 30 6to4
2001::/32 5 Teredo
fc00::/7 3 ULA
::/96 1 IPv4_Compatible
fec0::/10 1 Site_Local
3ffe::/16 1 6bone
Example 2: Assigning a Lower Precedence to Link-local and Site-local
Addresses
By default, the destination address ordering rules sort addresses of
smaller scope before those of larger scope. For example, if a name
resolves to a global and a site-local address, the site local address
would be ordered before the global address. An administrator can
override this ordering rule by assigning a lower precedence to
addresses of smaller scope, as the following table demonstrates.
# Prefix Precedence Label
::1/128 50 Loopback
::/0 40 Default
2002::/16 30 6to4
fec0::/10 27 Site-Local
fe80::/10 23 Link-Local
::/96 20 IPv4_Compatible
::ffff:0.0.0.0/96 10 IPv4
Example 3: Assigning Higher Precedence to IPv4 Destinations
By default, IPv6 addresses are ordered in front of IPv4 addresses in
name lookups.
::ffff:0.0.0.0/96 has the precedence of 35 in the
default table. In the following example, IPv4 addresses are assigned
higher precedence and are ordered in front of IPv6 destinations:
# Prefix Precedence Label
::1/128 50 Loopback
::/0 40 Default
::ffff:0.0.0.0/96 60 IPv4
2002::/16 30 6to4
2001::/32 5 Teredo
fc00::/7 3 ULA
::/96 1 IPv4_Compatible
fec0::/10 1 Site_Local
3ffe::/16 1 6bone
Example 4: Ensuring that a Particular Source Address is Used
This example ensures that a particular source address is used only
when communicating with destinations in a particular network.
The following policy table assigns the label "ClientNet" to a
particular source address on the local system,
2001:1111:1111::1. The
table assigns the same label to a network,
2001:2222:2222::/48. The
result of this policy is that the
2001:1111:1111::1 source address
will only be used when communicating with destinations contained in
the
2001:2222:2222::/48 network. For this example, this network is
the
ClientNet, which could represent a particular client's network.
# Prefix Precedence Label
::1/128 50 Loopback
2001:1111:1111::1/128 40 ClientNet
2001:2222:2222::/48 40 ClientNet
::/0 40 Default
2002::/16 30 6to4
::/96 20 IPv4_Compatible
::ffff:0.0.0.0/96 10 IPv4
This example assumes that the local system has one physical
interface, and that all global prefixes are assigned to that physical
interface.
EXIT STATUS
ipaddrsel returns the following exit values:
0 ipaddrsel successfully completed.
>0 An error occurred. If a failure is encountered, the kernel's
current policy table is unchanged.
FILES
/etc/inet/ipaddrsel.conf The file that contains the IPv6 default
address selection policy to be installed
at boot time. This file is loaded before
any Internet services are started.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Evolving |
+--------------------+-----------------+
SEE ALSO
inet(3C),
getaddrinfo(3SOCKET),
inet6(4P),
ipaddrsel.conf(5),
attributes(7),
nscd(8)NOTES
The ipnodes cache kept by
nscd(8) contains addresses that are ordered
using the destination address ordering algorithm, which is one of the
reasons why
ipaddrsel is called before
nscd in the boot sequence. If
ipaddrsel is used to change the address selection policy after
nscd has started, you should invalidate the
nscd ipnodes cache by invoking
the following command:
example#
/usr/sbin/nscd -i ipnodes March 30, 2022 IPADDRSEL(8)