It is really easy to establish an ipv6 network tunnel from your machine directly. Make your network/system/services IPv6 ready 🙂
Create a ipv6 regular tunnel from any connection brokers: List of IPV6 tunnel brokers
I have used Hurricane Electric which is free tunnel broker.
With the tunnel broker, you can create a tunnel by specifying your public ipv4 address in their website.
Once the tunnel is created with tunnel broker, Configure your machine with required interfaces , tunnel and routing.
1) Configure tunnel
$ sudo ifconfig gif0 tunnel host_ip tunnel_broker_ipv4_ip
If you are behind a natd network specify your machine private address as host_ip, otherwise mention the current public ip assigned to your machine. If you are behind a nat’d network make sure that protocol 41 is allowed in the nat’d device.
$ sudo ifconfig gif0 tunnel 192.168.1.2 216.66.xxx.xxx
2) Setup the tunnel end points
$ sudo ifconfig gif0 inet6 host_ipv6_address tunnel_broker_ipv6_address prefixlen 128
Both these ipv6 addresses are assigned by the tunnel broker.
$ sudo ifconfig gif0 inet6 2001:470:xxxx:xxxx::2 2001:470:xxxx:xxxx::1 prefixlen 128
3) Add the default route for ipv6 traffic
$ sudo route -n add -inet6 default tunnel_broker_ipv6_address
$ sudo route -n add -inet6 default 2001:470:xxxx:xxxx::1
Now you should be able to access the ipv6 networks 🙂
Incase of any issues, just make sure that ipv6 is enabled on the interface using:
$ sudo ip6 -x gif0
Test your ip6 connectivity:
$ ping6 ipv6.google.com
$ telnet ipv6.google.com 80
The procedure is exactly same on linux as well:
Make sure that the ipv6 module is present in the kernel:
$ sudo modprobe ipv6
Create the tunnel
$ sudo ip tunnel add he-ipv6 mode sit remote 216.66.xx.xx local 192.168.1.2 ttl 255
* use the public ip if it is directly assigned to your machine
Activate the tunnel
$ sudo ip link set he-ipv6 up
Assign ip address to interface:
$ sudo ip addr add 2001:470:xxxx:xxxx::2/64 dev he-ipv6
Add default route for ipv6:
$ sudo ip route add ::/0 dev he-ipv6
Add protocol family identifer:
$ sudo ip -f inet6 addr