从ipv6地址打开网站时出错

时间:2012-11-22 11:14:35

标签: linux ubuntu apache2 ipv6 apache2.2

我已在 ubunntu 12.10 系统中使用 inet addr 172.16.17.235 inet6 addr fe80 :: a05b安装 apache2 : LAN中的25ff:fef0:68a4 / 64

现在,当我想打开位于/ var / www /的默认网站(index.html)时,我只需写下 http:// localhost http:在我的网络浏览器(firefox 17.0)中//127.0.0.1 或者 http://172.16.17.235 ,它会打开 index.html 页面 但是当我想借助 ipv6寻址访问此 index.html 时,如下所示:
http:// [:: 1]
http:// [fe80 :: a05b:25ff:fef0:68a4]

浏览器显示以下错误:
无法连接Firefox
无法在[:: 1]或
建立与服务器的连接 Firefox无法在[fe80 :: a05b:25ff:fef0:68a4]与服务器建立连接。

任何人都能告诉我我的系统中缺少什么配置或我做错了什么。

BTW 当我ping我的localhost时:
ping6 :: 1或ping6 -I eth0 fe80 :: a05b:25ff:fef0:68a4
ping回复正常如下:
64字节来自:: 1:icmp_seq = 1 ttl = 64 time = 0.032 ms

64字节来自fe80 :: a05b:25ff:fef0:68a4:icmp_seq = 1 ttl = 64 time = 0.048 ms

1 个答案:

答案 0 :(得分:1)

如果要使用fe80::范围内的IPv6地址,则必须指定应该使用哪个网络适配器。 (从技术上讲,您必须提供与所使用的网络适配器相关的区域ID。

在ping上,您可以使用-l eth0执行此操作。在Firefox中,您可以使用http://[fe80::a05b:25ff:fef0:68a4%x]执行此操作,其中x是您必须找到的正数。


编辑:如果你绝对不知道发生了什么,你可以试试这个:

python -c 'import sys,socket; print socket.getaddrinfo(sys.argv[1], (sys.argv[2:]+[0])[0], 0, socket.SOCK_STREAM)' fe80::a05b:25ff:fef0:68a4%eth0

并查看结果。在我的系统上,它看起来像

[(10, 1, 6, '', ('fe80::a05b:25ff:fef0:68a4%eth0', 0, 0, 3))]

最后一个数字3是真实的区域ID。

如果这给你一个结果,你的名字解析工作正常,如果没有,它就会被破坏。

下一步可能是尝试创建HTTP连接:

python -c 'import sys,socket; c=socket.create_connection((sys.argv[1], 80)); c.send("GET / HTTP/1.0\n\n"); print c.recv(100000).split("\r\n\r\n",1)[0]' fe80::a05b:25ff:fef0:68a4%eth0

如果可行,问题是您的浏览器,如果没有,则由于任何原因您无法访问服务器。 (您的Web服务器守护程序是否绑定到IPv6?)