在正常的 IPv4 网络中,我可以进入任何浏览器(例如 Firefox)并浏览未托管在端口 80 上的 IPv4 地址上的服务器:
http://192.168.42.6:8080/
这将访问 上的 8080 端口上的服务器192.168.42.6
。但是,如果我使用 IPv6 IP 尝试此操作,则不会成功。这将尝试访问 上的 8080 端口fe80::520:ff0f:ece0:1
:
http://[fe80::520:ff0f:ece0:1]:8080/
Firefox 会自动将此 URL “修复” 为:
http://[www.fe80::520:ff0f:ece0:1.com]:8080/
这根本无法帮助我访问它。所以要么是我做错了什么,要么是 IPv6 出了问题。在互联网上找不到任何能提供帮助的东西。(是的,有一台服务器在有问题的 IPv6 上运行。)
答案1
首先:我不是IPv6专家。
如果您无法添加 DNS 名称(或想要确保使用 IPv6 1),那么为什么不使用实际地址,而要使用fe80
链接本地地址?在装有 OS X 的 Mac 和 Windows XP Home 版本上,这(使用实际的 IPv6 地址2)对我来说在所有浏览器中都可以正常工作:
http://[2001:db8::216:cbff:xx:xx]:8080/
(请注意,某些浏览器不会自动http://
为 IPv6 地址添加前缀。在hosts 文件为了仅有的IPv6 地址让生活变得更加轻松。
对于fe80
地址,可能不仅仅是端口号给你带来了问题;当使用默认端口 80 时,你可能也无法连接,除非您还可以指定区域索引。(因此:应该建立连接的传出接口,如有线以太网或无线,在您使用的每台计算机上可能有所不同。)
在 Windows XP Home 版本上,有线以太网和无线网络(无线网络未启用)均已启用,在 Firefox 3.5 和 3.6 中,以下操作对我来说运行良好。以下4
是我的网络接口索引3:
http://[fe80::216:cbff:xx:xx%4]/
http://[fe80::216:cbff:xx:xx%4]:8080/
在 Internet Explorer 8 中,百分比字符必须是百分比编码进入%25
:
http://[fe80::216:cbff:xx:xx%254]:8080/
%4
(对我来说,如果没有或 则无法正常工作%254
;如果它在其他安装中可以工作,那么也许 Windows 或 IE 更喜欢外部的连接,并且该安装仅有一个网络接口?)
在 Mac 上,以下操作在 Firefox 中可以正常运行:
http://[fe80::216:cbff:xx:xx%en0]:8080/
使用百分比符号指定区域索引很麻烦,因为与 URL 符号的冲突4.我无法让上述功能在 Windows XP 上的 Chrome 8 和 9 中运行,也无法在 Mac 上的 Safari 或 Chrome 中运行。
在 Mac 上,除了使用%
语法,您还可以(滥用)使用范围索引(第二个字,或第三个和第四个字节)来指定网络接口索引。类似方法fe80:0004
在我所有的浏览器中都可以正常工作:
http://[fe80:4::216:cbff:xx:xx]/
http://[fe80:4::216:cbff:xx:xx]:8080/
但请注意,我怀疑这是否得到官方支持,因为这在我的 Windows XP 上不起作用,并且一些文档声称应该始终使用替代方案。例如:
ping6 -I en0 fe80::216:cbff:xx:xx (en0 = wired ethernet on my Mac)
ping6 fe80::216:cbff:xx:xx%en1 (en1 = wireless)
...而不是:
ping6 fe80:4::216:cbff:xx:xx
ping6 fe80:6::216:cbff:xx:xx
最后说明:有人可能会被欺骗使用::
或::ffff:
跟踪 IPv4 地址,如RFC 4291。但是,这实际上并没有使用 IPv6,尽管它在我的 Mac 上给出了响应:
http://[::ffff:192.168.178.25]:8080/
这也可以使用十六进制表示法,并且某些浏览器会自动重写它:
http://[::ffff:c0a8:b219]:8080/
但无论如何:这在我的 Mac 上使用了 IPv4 连接。在我的 Mac 上,[::192.168.178.25]
不起作用。我无法让任何形式在 Windows XP 上运行。
1某些浏览器更喜欢 IPv4,而不是 IPv6。请参阅test-ipv6.com。这也与平台有关。2
在IPv6 中,Web 服务器可能查看你的计算机的 MAC 地址,216:cbff:xx:xx
在这些例子中。我宁愿不在网上发布这个超级 cookie。另请参阅使用 IPv6 时如何避免暴露我的 MAC 地址?
3scopeid
在 Mac 上:在 的输出中查找 的值ifconfig
。在 Windows 上Idx
:查看的输出中的的值netsh interface ipv6 show interface
。我看到这个数字在重启后发生了变化!
4似乎这曾经导致过一份从未出过草案的 RFC。该草案提议改用加号,但这在我的 Mac 或 Windows XP 上也不起作用。