Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've succeeded in setting up IPv6 for my Raspberry Pi with However, I would like to share the /64 I got amongst the other devices in my network. The router of the network is a Virgin Media Super Hub (VMDG480), and has no IPv6 support.

Here is my /etc/network/interfaces for the Raspberry Pi:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
    address 2001:470:1f09:4f8::2
    netmask 64
    ttl 255
    gateway 2001:470:1f08:4f8::1

Here's the info I got from tunnelbroker:

 Client IPv6 Address: 2001:470:1f08:4f8::2/64
 Routed /64: 2001:470:1f09:4f8::/64
 Routed /48: 2001:470:6c92::/48

I've tried using radvd, dibbler and isc-dhcp-server - none were able to provide other computers in my network with IPv6 connectivity. Can someone help shed some light on the situation?

share|improve this question
I think the Routed /64 should be 2001:470:1f0a:4f8::/64 – Elgs Qian Chen Sep 22 '15 at 11:44
up vote 3 down vote accepted

It works a little differently: you don't share the /64 from the tunnel, you use new /64s from the routed /48 for your networks. The /48 gives you 2001:470: 6c92::/64 (which is 2001:470:6c92:0000::/64) up to 2001:470:6c92:ffff::/64. That gives you 65536 /64s, which is usually enough to give each network its own /64.

First you will have to enable IPv6 forwarding in your kernel, so that your Raspberry Pi will act as a router. Add this line to /etc/sysctl.conf:


It is probably already in there, but commented out.

Then you'll have to configure IPv6 on your eth0 interface. Add something like:

iface eth0 inet6 static
    address 2001:470:6c92:1::1
    netmask 64

Then you configure radvd (Router Advertisement Daemon) so that your Raspberry Pi advertises to the local network that IPv6 is available and it will function as the default gateway. A basic configuration in /etc/radvd.conf will be something like:

interface eth0
    AdvSendAdvert on;
    prefix 2001:470:6c92:1::/64
        AdvOnLink on;
        AdvAutonomous on;

It advertises that it is the default gateway and that other systems may auto-configure themselves.

Warning: the moment you start radvd all systems on your LAN will get IPv6 addresses and an IPv6 default gateway. Unless you have configured an IPv6 firewall on the Raspberry Pi all systems will be directly connected to the IPv6 internet. Please make sure their configurations are secure to run like that, or configure an IPv6 firewall on the Raspberry Pi before enabling radvd.

If you only want specific systems to use the Raspberry Pi for IPv6 connectivity then don't run radvd. Instead just configure IPv6 manually on those systems. Use an address from 2001:470:6c8b:1::/64 .The all-zeroes address is the subnet-router any cast address by convention, although I almost never see this used in practice. Address 2001:470:6c92:1::1 was used for the Raspberry Pi, so you can use anything from 2001:470:6c92:1::2 (= 2001:0470:6c92:0001:0000:0000:0000:0002) to 2001:470:6c92:1:ffff:ffff:ffff:ffff. Configure 2001:470:6c92:1::1 as the default gateway and you should be online :)

There is also some advice on that might apply to your configuration. Look at the "ufw and Routing" section. It basically tells you to add the following lines in /etc/ufw/sysctl.conf:


To change this line in /etc/default/ufw:


And to add the following lines to /etc/ufw/before6.rules:

-A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw6-before-forward -i eth0 -o he-ipv6 -m conntrack --ctstate NEW -j ACCEPT
share|improve this answer
I can't get this to work. (my /48 changed to 2001:470:6c92::/48, but I just updated your instructions to match). radvd doesn't assign anything to my Ubuntu computer on the same network, and if I use NetworkManager to manually configure ipv6 like you said, I can ping the gateway but not the internet. – whiskers75 Jun 30 '14 at 13:59
I use ufw, so I enabled it there. ❯ sudo sysctl net.ipv6.conf.all.forwarding returns that it is set to 1. – whiskers75 Jun 30 '14 at 14:02
That it started. Hm, I have DEFAULT_FORWARD_POLICY="DROP" set in /etc/default/ufw, that's probably it... – whiskers75 Jun 30 '14 at 14:04
The first paragraph is partially wrong. The HE tunnel gives you two /64's. The first of them actually belongs to the tunnel; "client IPv6 address" is chosen from it, and you're correct that one shouldn't use it with radvd. However, the second /64, the "routed /64", is perfectly fine to use on your LAN because it's routed through the tunnel the exact same way as the /48 is. – grawity Mar 1 '15 at 20:44

I had to add ipv6 to /etc/modules first, to enable ipv6. Perhaps this helps others, too.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .