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:

  • add an IPv6 address with: ip -6 address add 2a01:4f8:145:4243::2/64 dev eth0
  • add IPv6 routing with: ip -6 route add default via 2a01:4f8:145:4240::1 dev eth0
  • and then test using 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