Saturday, March 26, 2011

Testing IPv6

I've been testing IPv6 Internet access at home using following tunneling modes.
1. 6to4 Automatic Tunnel via Public 6to4 Relay (using Cisco IOS)
2. 6in4 Tunnel using Tunnel Broker (using Cisco IOS)
3. Teredo Tunnel (using Windows 7)

I found using Tunnel Broker (option 2) the most reliable solution.

Following equipments were used in the test.
1. Cisco 1841 Router Running 12.4 code
2. Windows 7 Computers x 2
3. Ubuntu 4.1.2

F0/0 is connected to the Internet.
F0/1 is connected to the Internal Network.

IOS config using Tunnel Broker (Hurricane Electric).


interface FastEthernet0/0
description Outside
ip address dhcp

interface FastEthernet0/1
description Inside
ip address 192.168.2.1 255.255.255.128
ipv6 address 2001:470:1FFF::1/64 <-- HE gave out free /64 blocks
ipv6 enable

interface Tunnel0
description Hurricane Electric IPv6 Tunnel Broker
no ip address
ipv6 address 2001:470:1FFE::1/64
ipv6 enable
tunnel source [my public IP]
tunnel destination [Hurricane Electric assigned IP]
tunnel mode ipv6ip

ipv6 route ::/0 Tunnel0



Once config was completed (and half a day of troubleshooting), I was able to run following tests.
1. ping test to ipv6.google.com, www.ipv6forum.com (ping -6 in Windows and ping6 in Linux)
2. Browse to http://www.kame.net and I saw a dancing Turtle :)
3. Go to http://whatismyv6.com/ and check out my IPv6 addr.

Notes on Windows 7
I ended up having multiple IPv6 addresses on one interface.
1. Link local starting with FE80, but I have to keep this address.
2. Static IPv6 that I assigned manually. I want this address to be the only global IPv6 address.
3. One random IPv6 address assigned by OS.
4. Another temporary IPv6 address.

(I was able to get rid of v6 address in 3 and 4 by disabling RouterDiscover using the following command.


netsh interface ipv6 set interface "Local Area Connection" routerdiscovery=disabled



ref: http://technet.microsoft.com/en-us/library/bb726952.aspx

Notes on Linux (CentOS/RedHat)

Following config was used
1. to assign static IPv6 address to eth0 and
2. to disable stateless autoconfig.


[mid@rdis100 network-scripts]# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:0C:29:DA:50:FE
ONBOOT=yes
IPADDR=192.168.2.121
GATEWAY=192.168.2.1
NETMASK=255.255.255.128
IPV6INIT=yes
IPV6ADDR=2001:470:1F07:BAE:0000:0000:0000:121
IPV6_DEFAULTGW=2001:470:1F07:BAE:0000:0000:0000:1

[mid@rdis100 network-scripts]# more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
IPV6_AUTOCONF=no
HOSTNAME=rafa.connectionless.net

[mid@rdis100 network-scripts]# ip -6 address show dev eth0
2: eth0: mtu 1500 qlen 1000
inet6 2001:470:1f07:bae::121/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feda:50fe/64 scope link
valid_lft forever preferred_lft forever




Notes on Linux (Ubuntu)

Following config was used
1. to assign static IPv6 address to eth0 and
2. to disable stateless autoconfig.


[mid@rds001 network-scripts]# more /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.2.105
netmask 255.255.255.128
gateway 192.168.2.1


### Start IPV6 static configuration
iface eth0 inet6 static
pre-up modprobe ipv6
address 2001:470:1f07:bae::122
netmask 64
gateway 2001:470:1f07:bae::1
### END IPV6 configuration

[mid@rds001 network-scripts]# sysctl -w net.ipv6.conf.eth0.autoconf=0

[mid@rds001 network-scripts]# /etc/init.d/networking restart