Short answer:
mir:~ itorres$ ndp -an
Neighbor Linklayer Address Netif Expire St Flgs Prbs
::1 (incomplete) lo0 permanent R
2001:470:95e5:1:3583:ead0:514d:d459 e8:6:88:ca:fd:7c en0 permanent R
2001:470:95e5:1:ea06:88ff:feca:fd7c e8:6:88:ca:fd:7c en0 permanent R
...
Longer answer:
You're in UNIX and you have two great commands: man
(system manual) and apropos
(lookup concepts on manual)
Hence:
mir:~ itorres$ apropos ipv6
Net::CIDR::Lite(3pm) - Perl extension for merging IPv4 or IPv6 CIDR addresses
Net::IP(3pm) - Perl extension for manipulating IPv4/IPv6 addresses
NetAddr::IP(3pm) - Manages IPv4 and IPv6 addresses and subnets
NetAddr::IP::Lite(3pm) - Manages IPv4 and IPv6 addresses and subnets
faith(4) - IPv6-to-IPv4 TCP relay capturing interface
icmp6(4) - Internet Control Message Protocol for IPv6
inet6_opt_init(3), inet6_opt_append(3), inet6_opt_finish(3), inet6_opt_set_val(3), inet6_opt_next(3), inet6_opt_find(3), inet6_opt_get_val(3) - IPv6 Hop-by-Hop and Destination Options manipulation
inet6_option_space(3), inet6_option_init(3), inet6_option_append(3), inet6_option_alloc(3 ), inet6_option_next(3), inet6_option_find(3) - IPv6 Hop-by-Hop and Destination Options manipulation
inet6_rth_space(3), inet6_rth_init(3), inet6_rth_add(3), inet6_rth_reverse(3), inet6_rth_segments(3), inet6_rth_getaddr(3) - IPv6 Routing Header Options manipulation
inet6_rthdr_space(3), inet6_rthdr_init(3), inet6_rthdr_add(3), inet6_rthdr_lasthop(3), inet6_rthdr_reverse(3), inet6_rthdr_segments(3), inet6_rthdr_getaddr(3), inet6_rthdr_getflags(3) - IPv6 Routing Header Options manipulation
ip6(4) - Internet Protocol version 6 (IPv6) network layer
ip6(8) - Enable or disable IPv6 on active interfaces
ip6config(8) - Configure IPv6 and 6to4 IPv6 tunnelling
ip6fw(8) - controlling utility for IPv6 firewall (DEPRECATED)
ndp(8) - control/diagnose IPv6 neighbor discovery protocol
tcllib_ip(n) - IPv4 and IPv6 address manipulation
traceroute6(8) - print the route IPv6 packets will take to a network node
To get more detail about ndp:
mir:~ itorres$ man ndp
Just a small correction, but OSX (at least Mountain Lion) has full DHCPv6 client, which works out of the box to communicate with a DHCPv6 server on your network. The case may be, that Apple Airport does not have a DHCPv6 server and therefore your choice of IPv6 assignment is limited to auto-configuration (SLAAC) and link-local schemes (the ones controlled by privacy setting).
The SLAAC address, as you correctly worked out, uses the last three octets of the L2 MAC address. The other address is the link-local address of the interface.
If you wanted to use a DHCPv6 assignment, then you would run a small inexpensive DHCPv6 server on your network and end up with a third IPv6 address from your chosen DHCP scope, configured on your interfaces (depending on privacy setting).
If you combine this DHCPv6 server with your own DNS server, and configure delegation, you could just use DNS names rather than relying on IPs.
Reference:
http://blog.ipspace.net/2012/11/ipv6-router-advertisements-deep-dive.html
http://blog.belodedenko.me/2013/06/a-practical-guide-to-setting-up-ipv6.html
http://en.wikipedia.org/wiki/Link-local_address#IPv6
Best Answer
IPv6 used to be derived of the MAC address of your device. This is the Modified EUI-64 format. Such addresses are recognisable by looking at the middle of the last 64 bits. If they contain
..ff:fe..
then it is probably a EUI-64 based address.Because the algorithm produces the same 64 bits every time some people were afraid that it would become easy to track mobile devices such as laptops and smart phones. Every network would have a different prefix, but the last 64 bits would always be the same.
That is why Privacy Extensions were invented. A device generates new 64 bits every once in a while and uses that in the IPv6 address. Because new addresses are generated regularly the addresses are marked as
temporary
. A device can have multiple privacy extension addresses if the system is still using an old address when a new address is being generated. The system will keep the old address for as long as necessary. For new outgoing connections a system will usually use the most recently generated temporary address to maintain a maximum level of privacy.