Force outbound IPv6 traffic from /64 pool address on CentOS 7
I have configured the primary and secondary IPv6 addresses in
ifcfg-eth0 based on the examples in this guide, and I want to make it so all outgoing IPv6 traffic comes from the secondary.
I'm not sure if using something like a
route6-eth0 network script or just changing the primary in
ifcfg-eth0 to the pool address is the right way of doing things? With the current config I am able to ping the pool address, but all outgoing traffic is from the SLAAC address.
I have attempted a variety of commands using
ip -6 route, but they are either invalid or simply not working. To test I am accessing a site on another Linode via its IPv6 address and tailing the logs, which is showing the SLAAC address.
To ensure stable networking, I don't recommend changing the primary in
ifcfg-eth0, but according to this post it sounds like you can do this with a
route6-eth0 script, or by designating the secondary as the home address. In my experience however, leveraging the firewall seems to work best for controlling the outbound source address, especially when I have configured multiple pool addresses.
You can use this one advanced firewalld-iptables direct interface rule to force all outbound IPv6 traffic to come from a single /64 pool address:
sudo firewall-cmd --permanent --direct --add-rule ipv6 nat POSTROUTING 0 -s $SLAAC -o eth0 -j SNAT --to-source $POOLIP sudo firewall-cmd --reload
If only using
iptables, the script in my answer here provides the syntax you need (similar to the above).