Troubleshooting IPv6 Connectivity
The standard command-line tools we find in Windows 7 have full IPv6 functionality. Tools like Ping, Ipconfig, Pathping, Tracert, Netstat, and Route all support IPv6. Then we find tools specific to IPv6 which are provided in the Netsh command structure. But before we go for some troubleshooting tips, let’s check some mechanisms such as, IPv6 address resolution and configuration.
Before proceeding further, I recommend you to try Kernel Recovery for Undelete, a data recovery tool solution providing you with instant and complete recovery of all lost, deleted, inaccessible folders and files.
As you may have read in Understanding IPv6, in unicast global IPv6 (equivalent to IPv4 Public) addresses the 64-bit host portion of the address is derived from the MAC address of the network adapter. The Neighbor Discovery (ND) protocol resolves IPv6 addresses to MAC addresses. The resolution of host names to IPv6 addresses is done by DNS with the exception of link-local (equivalent to IPv4 APIPA) addresses which resolve automatically. DNS handles A records for IPv6 host names similar to IPv4 and likewise, uses pointer (PTR) records to perform reverse lookups. Where DNS is not implemented such as, in peer-to-peer environments, the Peer Name Resolution Protocol (PNRP) provides dynamic name registration and name resolution.
Verifying IPv6 Configuration
The most basic and probably one of the most used tools is Ipconfig. The command ipconfig /all displays both IPv4 and IPv6 configuration. Since, we need to display the configuration of only the IPv6 interfaces then the netsh tool is more appropriate. netsh interface ipv6 show address accomplishes the task by displaying each interface IPv6 address including the interface ID after the % character. In addition, the configuration can be accessed through the GUI, see Configuring IPv6.
Verifying IPv6 Connectivity
The most basic troubleshooting test is to ping the local address. However, note that pinging link-local addresses from one host to another, you would need to include the interface ID of the destination adapter (for example: ping fe80::38e7:3df1:f5ff:fdf0%13). When pinging site-local (equivalent to IPv4 Private) addresses you can add the interface ID as to ensure that the address is configured on the desired interface. In all cases, you need to add an allow rule for ICMPv6 traffic to pass through each computer’s firewall.
When troubleshooting connectivity between hosts on a network, most often these would store recently resolved addresses and hence, I suggest that you flush the neighbor cache by typing netsh interface ipv6 delete neighbors. This command flushes the cache while netsh interface ipv6 show neighbors displays the contents of the cache. When checking connectivity to a host on a remote network, you would need to flush the destination cache by typing netsh interface ipv6 delete destinationcache. Destination cache stores next-hop addresses and you can display the current contents by typing netsh interface ipv6 show destinationcache. Remember to run the commands from an elevated command prompt.
When checking connectivity to the default router of your local subnet, you can find its address by typing netsh interface ipv6 show route or route print. If you can ping the default gateway successfully you may try a remote host behind the gateway but remember that you cannot use link-local IPv6 addresses as they are not routable. If you can reach the default gateway but fail to ping a remote host behind the gateway, then trace the route to your destination by typing tracert -d <destination IPv6 address>. The -d option prevents tracert from performing a DNS reverse query and hence, speeds up the process. Pathping is a similar tool to Tracert as it gives more information, type pathping -d <destination IPv6 address> to trace the route.
Finally, if your setup is part of a bigger infrastructure there might be end firewalls that are blocking your ping traffic or the Internet Protocol Security (IPSec) configuration if present might not be properly configured.