当我使用https://ipv6-test.com/validate.php测试我的网站是否准备好 IPv6(例如域名 www.[private].com),测试失败并返回错误:
IPv6 web server web server is unreachable : Connection refused
其他测试站点如https://ready.chair6.net/由于有关 ipv6 的各种错误,测试也失败了。
我已经检查过在进行测试时服务器上没有错误,并且我已经做了各种事情来启用 ipv6。最后,我决定忽略这个问题,因为我不知道为什么测试失败,但我仍然可以在我的服务器上 ping ipv6 地址。但我脑子里只有这个问题:
测试是否得出网站 www.[private].com 只能通过仅使用 ipv6 地址连接的客户端访问?如果是,那么我应该担心。您觉得呢?
编辑澄清(回答@Piotr P. Karwasz):
1)服务器确实监听IPv6:
2)这是 ip6tables -nVL INPUT 的输出(请注意,我还完全禁用了防火墙来测试网站,但像您提到的那样执行 curl 时仍然出现连接拒绝的情况)
3) 关于监听指令。是的,ipv6 监听指令在那里。例如,服务器得到了这个设置:
server {
listen ipv4:80
listen ipv6:80 ipv6only=on;
}
server {
listen ipv4:443 ssl http2
listen ipv6:443 ssl http2 ipv6only=on;
}
4)Ipv6配置已启用:
执行此命令时也是如此:
[ -f /proc/net/if_inet6 ] && echo 'IPv6 ready system!' || echo 'No IPv6 support found! Compile the kernel!!'
输出为:
IPv6 ready system!
5) 执行此操作时:netstat -napl | grep 80 似乎 nginx 和 httpd 在 ipv6 上运行正常。输出为:
关于此服务器的其他事项:
a)nginx_apache 作为反向代理(nginx 作为前端,apache 作为后端)
b)操作系统是Centos 8
c) 使用 linode 上的 directadmin 主机(linode 已验证他们那边的 IPv6 没有问题)。
编辑:已解决。感谢@Piotr P. Karwasz 指出 IP 中有一个拼写错误。IP 中有一个字符的拼写错误,我把 fe05 写成了 f305
编辑域名以防止被搜索引擎索引。
答案1
您测试了您的主机是否可以通过 IPv6 访问ping
,但您实际上并没有通过端口 80 连接到它:
curl -6 -i http://www.example.com/
连接失败。这意味着:
您的服务器未监听 IPv6 套接字。您可以使用以下命令检查:
netstat -6nl | grep 80
寻找如下一行:
tcp6 0 0 :::80 :::* LISTEN
然后检查Listen
您的配置中的指令。
防火墙阻止了 IPv6 端口。检查方法如下:
ip6tables -nvL INPUT
如果策略是
DROP
,而您没有ACCEPT
端口 80 的规则,则需要添加它。
编辑:经过您的澄清,似乎您在输入 IPv6 地址时输入了错误nginx配置:您忘记了地址的最后 8 位十六进制数字。除非您确实需要指定应该在哪个地址上nginx听着,只需指定所有地址:
listen *:80;
listen [::]:80;