How can I telnet to an IPv6 host using Mac OS X?

Solution 1:

The fe80::/16 prefix is for link-local addresses, and they're special. Try running

netstat -nr

on OS X and

netsh int ipv6 show routes

on Windows. On OS X you will most likely see a separate fe80:: route for each interface, e.g. for lo0 and en1. Windows (XP, at least) doesn't appear to do that. Since OS X has multiple routes to the same prefix you have to use a zone index to point the traffic in the right direction:

$ telnet -6 fe80::…%en1 80

Solution 2:

An interface can and usually will have multiple IPv6 addresses. A link-local address is automatically created from the fe80::/16 range and is not routed (point to point connection). As Gerald Combs mentions, you'll need to specify a zone index if you can't specify which interface to use.

For regular use, and connections beyond the local link, you'll need to add routable addresses to the interface. This can be done by getting your own IPv6 range from your ISP (or from a tunnel provider such as SixXS or he.net), and distributing them to your devices via Router Advertisement, DHCPv6 or manually.

If you're just testing you could also use the special "Unique Unicast" IP range of fc00::/7 which should be used for this as per RFC4193:

This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet

Check out this site, which gets you started by generating a range for you.