'\" te .\" Copyright (C) 2006, Sun Microsystems, Inc. All Rights Reserved .\" Copyright (C) 2017, Sebastian Wiedenroth .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .TH IPADDRSEL 8 "March 30, 2022" .SH NAME ipaddrsel \- configure IPv6 default address selection .SH SYNOPSIS .nf \fB/usr/sbin/ipaddrsel\fR .fi .LP .nf \fB/usr/sbin/ipaddrsel\fR \fB-f\fR \fIfile\fR .fi .LP .nf \fB/usr/sbin/ipaddrsel\fR \fB-d\fR .fi .SH DESCRIPTION Use the \fBipaddrsel\fR 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 \fBAF_INET6\fR addresses. For a description of how the policy table is used for source address selection, see \fBinet6\fR(4P). For a description of how the policy table is used for destination address ordering, see \fBgetaddrinfo\fR(3SOCKET). .sp .LP 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. .sp .LP When the \fBipaddrsel\fR 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 \fB-f\fR option accepts. .LP Note - .sp .RS 2 If the \fBusesrc\fR subcommand to \fBifconfig\fR(8) is applied to a particular physical interface, the selection policy specified by \fBusesrc\fR overrides the source address selection policies specified by \fBipaddrsel\fR. This is true for packets that are locally generated and for applications that do not choose a non-zero source address using \fBbind\fR(3SOCKET). .RE .SS "The Configuration File" The configuration file that the \fB-f\fR option accepts can contain either comment lines or policy entries. Comment lines have a '\fB#\fR' character as the first non-blank character. and they are ignored by the \fBipaddrsel\fR utility. Policy entry lines have the following format: .sp .in +2 .nf \fIprefix\fR/\fIprefix_length\fR \fIprecedence\fR \fIlabel\fR [# \fIcomment\fR] .fi .in -2 .sp .LP The \fIprefix\fR must be an IPv6 prefix in a format consistent with \fBinet\fR(3C). The \fIprefix_length\fR 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. .sp .LP 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. .sp .LP The label is a string of at most fifteen characters, not including the \fINULL\fR 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. .sp .LP The label may be followed by an optional comment. .sp .LP The file must contain a default policy entry, which is an entry with \fB::0/0\fR as its \fIprefix\fR and \fIprefix_length\fR. This is to ensure that all possible addresses match a policy. .SH OPTIONS The \fBippadrsel\fR utility supports the following options: .sp .ne 2 .na \fB\fB-f\fR \fIfile\fR\fR .ad .RS 11n Replace the address selection policy table with the policy specified in the \fIfile\fR. .RE .sp .ne 2 .na \fB\fB-d\fR\fR .ad .RS 11n Revert the kernel's address selection policy table back to the default table. Invoking \fBipaddrsel\fR in this way only changes the currently running kernel's policy table, and does not alter the configuration file \fB/etc/inet/ipaddrsel.conf\fR. To revert the configuration file back to its default settings, use \fBipaddrsel\fR \fB-d\fR, then dump the contents of the table to the configuration file by redirecting the output of \fBipaddrsel\fR to \fB/etc/inet/ipaddrsel.conf\fR. .sp .in +2 .nf example# \fBipaddrsel -d\fR example# \fBipaddrsel > /etc/inet/ipaddrsel.conf\fR .fi .in -2 .sp .RE .SH EXAMPLES \fBExample 1 \fRThe Default Policy in \fB/etc/inet/ipaddrsel.conf\fR .sp .LP The following example is the default policy that is located in \fB/etc/inet/ipaddrsel.conf\fR: .sp .in +2 .nf # 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 .fi .in -2 .sp .LP \fBExample 2 \fRAssigning a Lower Precedence to Link-local and Site-local Addresses .sp .LP 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. .sp .in +2 .nf # 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 .fi .in -2 .sp .LP \fBExample 3 \fRAssigning Higher Precedence to IPv4 Destinations .sp .LP By default, IPv6 addresses are ordered in front of IPv4 addresses in name lookups. \fB::ffff:0.0.0.0/96\fR 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: .sp .in +2 .nf # 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 .fi .in -2 .sp .LP \fBExample 4 \fREnsuring that a Particular Source Address is Used .sp .LP This example ensures that a particular source address is used only when communicating with destinations in a particular network. .sp .LP The following policy table assigns the label "ClientNet" to a particular source address on the local system, \fB2001:1111:1111::1\fR. The table assigns the same label to a network, \fB2001:2222:2222::/48\fR. The result of this policy is that the \fB2001:1111:1111::1\fR source address will only be used when communicating with destinations contained in the \fB2001:2222:2222::/48\fR network. For this example, this network is the \fBClientNet\fR, which could represent a particular client's network. .sp .in +2 .nf # 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 .fi .in -2 .sp .sp .LP This example assumes that the local system has one physical interface, and that all global prefixes are assigned to that physical interface. .SH EXIT STATUS \fBipaddrsel\fR returns the following exit values: .sp .ne 2 .na \fB\fB0\fR\fR .ad .RS 6n \fBipaddrsel\fR successfully completed. .RE .sp .ne 2 .na \fB>\fB0\fR\fR .ad .RS 6n An error occurred. If a failure is encountered, the kernel's current policy table is unchanged. .RE .SH FILES .ne 2 .na \fB\fB/etc/inet/ipaddrsel.conf\fR\fR .ad .RS 28n 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. .RE .SH ATTRIBUTES See \fBattributes\fR(7) for descriptions of the following attributes: .sp .sp .TS box; c | c l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE _ Interface Stability Evolving .TE .SH SEE ALSO .BR inet (3C), .BR getaddrinfo (3SOCKET), .BR inet6 (4P), .BR ipaddrsel.conf (5), .BR attributes (7), .BR nscd (8) .SH NOTES The ipnodes cache kept by \fBnscd\fR(8) contains addresses that are ordered using the destination address ordering algorithm, which is one of the reasons why \fBipaddrsel\fR is called before \fBnscd\fR in the boot sequence. If \fBipaddrsel\fR is used to change the address selection policy after \fBnscd\fR has started, you should invalidate the \fBnscd\fR ipnodes cache by invoking the following command: .sp .in +2 .nf example# \fB/usr/sbin/nscd -i ipnodes\fR .fi .in -2 .sp