We are fortunate to have several of our servers hosted by [Hetzner] in their data centres in southern Germany. Since 2009, all Hetzner systems could have IPv6 connectivity, all you had to do was ask for a subnet and you would receive a /64 subnet allocation and a gateway address; these might look like this:
IPs: 2a01:4f8:145:4243::/64
Gateway: 2a01:4f8:145:4240::1 /59
We have also deployed IPv6 locally using tunnels and subnets provided through Sixxs or Hurricane Electric. For some time we have tunnelled internal services over IPv6. Using Sixxs connectivity requires tunnels to be connected via Points of Presence (POPs); generally these tunnels are managed by the aiccu
tool and local IPv6 addresses through radvd
. Most of the time this has worked well requiring almost no configuration. However, when we looked at providing IPv6 networking from our Hetzner systems we had to figure how to actually get IPv6 configured correctly on our openSuSE boxes.
Usually openSuSE provides good configuration support for networking through its Yast tool. Not so for IPv6, it is necessary to work at a lower level. There are plenty of excellent resources on the Internet that explain how everything should work and how to configure your network, at least to test it: the definitive documentation is the Linux IPV6 Howto. There is some specific SuSE information at Cyberciti which provides a couple of commands to setup IPv6 quickly for testing. Using our addresses above for the eth0 interface, we can do this:
ip -6 address add 2a01:4f8:145:4243::2/64 dev eth0
ip -6 route add default via 2a01:4f8:145:4240::1 dev eth0
ip -6 address show dev eth0, ip -6 route show
or route -A inet6 and ping6 ipv6.google.com
This is enough to get IPv6 working but this will not survive a reboot, we need something that will persist
The IPv6 address can be assigned to your network card easily enough; either add it as an Additional Address to your Network Device within Yast or add it directly to appropriate file below /etc/sysconfig/network, ifcfg-eth0 in the example above. Add 2 lines like:
IPADDR_1='2a01:4f8:145:4243::2/128'
LABEL_1="etho06'
The label should be a unique name for the interface
A permanent route can be added to the routes file in the same folder with these 2 lines
2a01:4f8:145:4240::1 - 59 eth0
default 2a01:4f8:145:4240::1 - eth0
Restarting your network with service network restart should then do the trick