2

My setup is:

Debian Wheezy x64 on the host and on the guest.

I am using a tun/tap setup to connect a virtual machine to the host.

The KVM network options I use are:

-net nic,macaddr=DE:AD:BE:EF:1A:DC
-net tap,ifname=tap3,script=no,downscript=no

IPv4 networking works using NAT, so I can ssh into the machine from the outside just fine.

IPv6 is another story.

The host has full IPv6 connectivity, I can reach it from the outside and I can reach outside IPv6 hosts.

Host /etc/network/interfaces (IPv6 part)

iface eth0 inet6 static
  address 2a01:...::2
  netmask 64
  gateway fe80::1

Guest /etc/network/interfaces (IPv6 part)

iface eth0 inet6 static
  address 2a01:...::3
  netmask 64
  gateway route add 2a01:...::1:3

The tap3 interface is setup this way:

ip -6 addr add 2a01:...::1:3/64 dev tap3 # The tap3 address
ip -6 route add 2a01:...::3 dev tap3 # The guest eth0 address
ip -6 route add 2a01:...::2 dev tap3 # The host eth0 address

The host can reach 2a01:...:3.

The guest can reach 2a01:...::1:3 and even 2a01:...::2, but no address outside the host.

ping6 www.google.de
PING www.google.de(fra07s32-in-x1f.1e100.net) 56 data bytes
^C
--- www.google.de ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3024ms

The packets get lost, there is no ICMP response. (From the host it works as expected)

I have enabled forwarding on sysctl:

net.ipv6.conf.eth0.forwarding = 1
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.tap3.forwarding = 1
net.ipv6.conf.tap3.mc_forwarding = 0

How do I get packets through the host?

Edit: "..." is always the same value for all addresses in the above file and command listings. It's the /64 network that I got from RIPE.

13
  • I have a similar setup at home which works without trouble. Is it right that the host is the router for the guest? Then you must install and run radvd on the host. Just to make sure, could you run ip -6 route in the guest? Aug 6, 2014 at 13:24
  • 1
    It is not easy to help, when you are not including the full IPv6 addresses. It is particular difficult because you left out those parts of the address, that most people get wrong. Many people mix up link prefix and routed prefix. The difference between those two prefixes is found towards the end of the network part of the address, which means it is just before the middle of the IPv6 address.
    – kasperd
    Aug 6, 2014 at 13:42
  • @kasperd All addresses use the same address prefix (the global /64 network that I have been assigned). Aug 6, 2014 at 14:46
  • @countermode I have also enabled ndp_proxy in the kernel, do I still need radvd? Aug 6, 2014 at 14:47
  • The host should act as the router for the guest. Aug 6, 2014 at 14:53

0

You must log in to answer this question.

Browse other questions tagged .