Clearly I can't have an IPv6 conversation directly between Win7 and Pi as the router doesn't support this.
You can.
I'm going to assume that you have one of those "home gateway" / "WiFi router" devices with multiple Ethernet ports, and that both your Win7 computer and the Rπ are connected to its "LAN" ports.
Such a "router" usually is a combined router + switch, with one Ethernet port assigned to the "WAN" side and all others to the "LAN" side. In this case, there is no IP-level routing when devices on the same LAN communicate; just Ethernet-level switching. There is routing only between LAN and WAN.
Therefore, your IPv4 router doesn't need to support IPv6 for all LAN devices to use it. Chances are, both your computers could reach each other just fine via IPv6 addresses on the same subnet.
For example, link-local fe80::…
addresses would work, though they're annoying to use.
Unique-local addresses would also work – they're the rough equivalent of the widely known RFC 1918 addresses (the ones that start with 10.
or 192.168.
) Just choose a random ULA network prefix and configure addresses from it on both devices.
And if you do need IPv6 routing, it can be done by a different device. Since your IPv6 ISP is Hurricane Electric, you can turn either your Win7 PC or your Raspberry Pi – whichever one you configure as the tunnel endpoint – into a fully capable IPv6 router between your LAN and the HE tunnel, providing IPv6 connectivity to the entire LAN.
(I've done so on Windows XP Pro, in fact.)
You just need a /64
-sized1 IPv6 address range to assign to your LAN. Hurricane Electric assigns one to each tunnel – look for "Routed /64" in the configuration page.
So, assuming your HE tunnel interface is called "he0", and your Ethernet card is called "Ethernet":
Run netsh
in an elevated Command Prompt.
netsh> interface ipv6
Enable the IPv6 routing features in Win7. You must enable packet forwarding on both the "WAN" (tunnel) and LAN interfaces, but router advertisement on the LAN interface only.
set interface "Ethernet" forwarding=enable advertise=enable
set interface "he0" forwarding=enable
Route your /64 network through your local Ethernet interface, and make sure to publish it:
add route your-prefix/64 "Ethernet" publish=yes valid=1d preferred=1h
(For example, add route 2001:470:1f0b:123::/64 …
)
The "publish" option means that Win7 will include this route in "Router Advertisement" packets it broadcasts to the LAN. Since it's a /64 prefix, other devices will automatically configure their own IP addresses for it.
The "valid" and "preferred" timers aren't strictly required, they just tell all other devices to forget that IPv6 route if it hasn't been advertised for a day.
Also publish the existing "default" ::/0
route:
set route ::/0 "he0" publish=yes valid=1d preferred=1h
By now, Win7 itself will have auto-configured an IPv6 address; check show addr
in netsh.
Connect to your Rπ and take a look at ip addr
– you should see an IPv6 address there as well.
Of course you can do the same with the Rπ as well... in fact, you probably should do it on the Rπ instead. But this is growing already long as it is, so feel free to post a new question about how to make Linux act as an IPv6 router. (You'll need radvd
.)
1 For autoconfiguration to work, it must be a /64 prefix. Which means, if you want to use your "routed /48" for the LAN, you can use add route prefix/48
, but you must still choose a /64 subnet from it, and add a (second) route for it as well.
... or to use the IPv4 DNS lookup first or instead on Windows (as you could by editing gai.conf in Debian I believe) – frankieandshadow – 2015-03-01T18:33:58.137