On my server I have multiple IPv6 addresses, but I want to define that all outgoing connections should always use one specific address.
On Linux there is an option to mark an IPv6 address as "deprecated", you can do that by setting the address parameter
0. After that the address is still reachable, and you can still respond over it, but Linux will newer use it for new outgoing connections.
My network config now looks like this:
auto 6in4 iface 6in4 inet6 v4tunnel address 2001:4dd0:ff00:189b::2 netmask 64 endpoint 126.96.36.199 gateway 2001:4dd0:ff00:189b::1 up ip -6 addr add 2001:4dd0:ff00:989b::1/64 dev 6in4 preferred_lft 1 up ip -6 addr change 2001:4dd0:ff00:189b::2 dev 6in4 preferred_lft 0 down ip -6 addr del 2001:4dd0:ff00:989b::1/64 dev 6in4
This creates a 6in4 device, sets the IPv6 address that SixXs assigned my tunnel, and afterwards runs the commands which marks the original address as "deprecated" and adds a new one from the subnet I get routed to the original address.
Now the server can be reached over both addresses, but any outgoing connections will come from