With IPv6 I have enough address space to select a 'nicer looking' address on outgoing connections from home server greenblatt. The assigned endpoint, 2001:888:10:11::2 resolves to tunnel17.ipv6.xs4all.nl which is an ok name, but something of my own is better. So, I have set up /etc/network/interfaces to add another address of my own and use this as source in outgoing traffic:iface xs4allipv6 inet6 v4tunnel endpoint 220.127.116.11 address 2001:888:10:11::2 netmask 64 up ip tunnel change xs4allipv6 ttl 64 up ip -6 addr add 2001:888:1011::13/128 dev xs4allipv6 up ip -6 route add unreachable 2001:888:1011::/48 up ip -6 route add default via 2001:888:10:11::1 src 2001:888:1011::13 down ip -6 route del unreachable 2001:888:1011::/48I add the address I prefer, 2001:888:1011::13 with such a netmask that it doesn't clash with the fact that address is part of the range on the wired network at home and I add a default route using that as source. 2001:888:1011::13 resolves to outgate.idefix.net
This works... except when I visit addresses in the xs4all IPv6 IP space (my best guess: in the same /32). This must be an artifact of the IPv6 source address selection policy, but I can't find the way to manipulate this policy. It seems to be related to Linux 2.6.recent.
Update : I learned from Jeroen Schot that the address selection is an implementation of RFC 3484, explaned in RFC 3484 on Linux by Ulrich Drepper. The destination address choice is configured in /etc/gai.conf, for as far as I can see gai.conf is mostly destination selection, the source is a kernel matter.
Update 2009-11-18 : Solution found: working IPv6 source address selection the way I want it.