首页 文章

从ipv6地址打开网站时出错

提问于
浏览
1

我在 ubunntu 12.10 系统中安装了 apache2 ,其中 inet addr 172.16.17.235inet6 addr fe80::a05b:25ff:fef0:68a4/64 在局域网中 .

现在,当我想打开位于/ var / www /的默认网站(index.html)时,我只需编写
http://localhost
http://127.0.0.1
http://172.16.17.235 在我的网络浏览器(firefox 17.0)中打开 index.html 页面
但是当我想在 ipv6 addressing 的帮助下访问这个 index.html ,如下所示:
http://[::1]
http://[fe80::a05b:25ff:fef0:68a4]
浏览器显示以下错误:
Unable to connect Firefox
无法在[:: 1]处 Build 与服务器的连接
Firefox无法在[fe80 :: a05b:25ff:fef0:68a4]与服务器 Build 连接 .

谁能告诉我我的系统中缺少什么配置或我做错了什么 .

BTW 当我ping我的localhost时:
ping6 :: 1或ping6 -I eth0 fe80 :: a05b:25ff:fef0:68a4
ping回复很顺利:
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.032 ms
要么
64 bytes from fe80::a05b:25ff:fef0:68a4: icmp_seq=1 ttl=64 time=0.048 ms

1 回答

  • 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?)

相关问题