如何使用Mac OS X远程login到IPv6主机?

我正在公司networking上testingIPv6,并且遇到了与OS X有关的问题。对于大多数IPv6命令(如telnet -6traceroute6 ,我得到以下错误:

 connect: No route to host 

例如,我有一个Web服务器。 这失败了:

 $ telnet -6 fe80::… 80 # this fails 

我知道服务器是可达的,因为ping6工作(注意,我必须使用-I参数):

 $ ping6 -I en1 fe80::… # this works 

而且我知道Web服务器正在运行,因为我可以从Windows远程login到它:

 C:\> telnet fe80::… 80 # this works 

我怀疑有一些configuration标志或命令行参数,我缺less。

fe80 :: / 16前缀是链接本地地址,它们是特殊的。 尝试运行

 netstat -nr 

在OS X和

 netsh int ipv6 show routes 

在Windows上。 在OS X上,你很可能会看到每个接口单独的fe80 :: route,例如lo0和en1。 Windows(至less是XP)似乎没有这样做。 由于OS X具有多个路由到相同的前缀,所以您必须使用区域索引将stream量指向正确的方向:

 $ telnet -6 fe80::…%en1 80 

一个接口通常可以有多个IPv6地址。 链路本地地址是从fe80 :: / 16范围自动创build的,不会路由(点对点连接)。 Gerald Combs提到 ,如果你不能指定使用哪个接口,你需要指定一个区域索引。

对于常规使用和超出本地连接的连接,您需要添加可路由地址到接口。 这可以通过从您的ISP(或来自隧道提供商,如SixXS或he.net)获取您自己的IPv6范围,并通过路由器广告,DHCPv6或手动分发到您的设备来完成。

如果你只是testing,你也可以使用fc00 :: / 7的特殊的“Unique Unicast”IP范围,根据RFC4193:

本文档定义了一种全球唯一的IPv6单播地址格式,用于本地通信,通常位于站点内部。 这些地址在全球互联网上预计不可路由

看看这个网站 ,它可以让你开始为你生成一个范围。

我相信你已经find了链接本地fe80 ::地址的错误。 它适用于我使用我的公共地址,即使他们是本地链接。

 $ telnet -6 2001::xxx:: 80 Trying 2001::xxx::... Connected to 2001::xxx:: Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Thu, 30 Dec 2010 01:18:00 GMT Server: Apache Last-Modified: Sun, 30 May 2010 20:11:06 GMT Accept-Ranges: bytes Content-Length: 44 Connection: close Content-Type: text/html Connection closed by foreign host. 

尝试获得真正的v6地址。