A single IP interface can have multiple IP addresses. For example, technologies such as IPMP enable multiple NICs to connect to the same IP link layer. That link can have one or more IP addresses. Additionally, IPv6-enabled interfaces have a link-local IPv6 address, at least one IPv6 routing address, and an IPv4 address for at least one interface.
In such cases, applications must know which address to use especially when communicating with target systems. Address selection and ordering is the process by which the operating system selects and prioritizes the appropriate addresses to use to reach destination hosts.
In this table, IPv6 prefixes (::1/128 and ::/0) take precedence over 6to4 addresses (2002::/16) and IPv4 addresses (::/96 and ::ffff:0:0/96). Therefore, by default, the kernel selects the global IPv6 address of the interface for packets going to another IPv6 destination. The IPv4 address of the interface has a lower priority, particularly for packets going to an IPv6 destination. Given the selected IPv6 source address, the kernel also uses the IPv6 format for the destination address.
Both IPv4-only and dual-stack IPv4/IPv6 systems must perform default address selection. In most circumstances, you do not need to change the default address selection mechanisms in this file. However, you might need to change the priority of address formats in certain cases such as the following:
If the system has an interface that is used for a 6to4 tunnel, you can assign a higher priority to the 6to4 addresses.
If you want a particular source address to be used only in communications with a particular destination address, you can add these addresses to the policy table. Then, you can use the ipadm command to flag these addresses, as preferred. See the ipadm(8) man page.
If you want IPv4 addresses to take precedence over IPv6 addresses, you can change the priority of ::ffff:0:0/96 to a higher number.
If you need to assign a higher priority to deprecated addresses, you can add the deprecated address to the policy table. For example, site-local addresses are now deprecated in IPv6. These addresses have the prefix fec0::/10. You can change the policy table to assign a higher priority to site-local addresses.
Caution - Do not change the IPv6 address selection policy table unless necessary. Otherwise, network problems might occur due to a badly constructed policy table.
Before You Begin
Ensure that your role has the appropriate rights profile to perform this procedure. See Using Rights Profiles to Perform Network Configuration.
$ ipaddrsel # Prefix Precedence Label ::1/128 50 Loopback ::/0 40 Default 2002::/16 30 6to4 ::/96 20 IPv4_Compatible ::ffff:0.0.0.0/96 10 IPv4
Do one of the following steps:
$ cp /etc/inet/ipaddrsel.conf /etc/inet/ipaddrsel.conf.orig
$ cp /etc/inet/ipaddrsel.conf /etc/inet/temp.conf
prefix/prefix-length precedence label [# comment ]
For example, you edit either ipaddrsel.conf or temp.conf.
$ ipaddrsel -f /etc/inet/filename
For example, you load either ipaddrsel.conf or temp.conf. For non-persistent changes, the kernel uses the policies in temp.conf until you reboot the system.
$ ipaddrsel -d
This list illustrates possible ways to change the address priority in the policy table:
Assign the highest priority to 6to4 addresses.
2002::/16 50 6to4 ::1/128 45 Loopback
The 6to4 address format now has the highest priority, 50. Loopback, which previously had a 50 precedence, now has a 45 precedence. The other addressing formats remain the same.
Designate a specific source address to be used in communications with a specific destination address.
::1/128 50 Loopback 2001:1111:1111::1/128 40 ClientNet 2001:2222:2222::/48 40 ClientNet ::/0 40 Default
This particular entry is useful for hosts with only one physical interface. Here, 2001:1111:1111::1/128 is preferred as the source address on all packets that are bound for destinations within network 2001:2222:2222::/48. The 40 priority gives higher precedence to the source address 2001:1111:1111::1/128 than to other address formats configured for the interface.
Favor IPv4 addresses over IPv6 addresses.
::ffff:0.0.0.0/96 60 IPv4 ::1/128 50 Loopback .
The IPv4 format ::ffff:0.0.0.0/96 has its precedence changed from the default 10 to 60, the highest priority in the table.