当我使用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 的错字,我把 f305 而不是 fe05
编辑域名以防止被搜索引擎索引。
您测试了您的主机是否可以通过 IPv6 访问
ping
,但您实际上并没有在端口 80 上连接到它:连接失败。这意味着:
您的服务器不侦听 IPv6 套接字。您可以通过以下方式检查:
寻找这样的行:
然后检查
Listen
配置中的指令。防火墙阻止了 IPv6 端口。检查:
如果策略是
DROP
并且您没有ACCEPT
端口 80 的规则,则需要添加它。编辑:在您澄清之后,您似乎在nginx配置中输入了 IPv6 地址时输入了错字:您忘记了地址的最后 8 个十六进制数字。除非你真的需要指定nginx应该监听哪个地址,否则只需指定所有地址: