DMIT VPS IPv6连接失败排查记录:从地址配置到服务访问问题解决

最近使用 DMIT VPS 时,遇到了 IPv6 无法正常连接的问题。
服务器控制台可以看到 IPv6 地址,但是实际连接时出现异常,包括 SSH 无法通过 IPv6 访问、域名添加 AAAA 记录后网站无法打开等情况。
IPv6 和 IPv4 最大的区别之一,就是地址配置只是第一步,还需要确认路由、防火墙以及服务监听是否正常。
这篇文章记录实际排查过程。
首先查看 VPS 当前 IPv6 地址:
ip -6 addr
正常情况下,可以看到类似:
inet6 xxxx::xxxx/64 scope global
其中 scope global 表示公网 IPv6 地址。
如果只看到:
::1
fe80::
说明系统没有正确配置公网 IPv6。
确认地址以后,测试 IPv6 网络:
ping6 google.com
或者:
curl -6 https://ifconfig.co
如果能够返回 IPv6 地址,说明 IPv6 出口正常。
如果出现:
Network is unreachable
通常是 IPv6 路由没有配置。
查看当前 IPv6 路由:
ip -6 route
正常情况下应该存在类似:
default via xxxx::1 dev eth0
如果没有 default 路由,服务器虽然拥有 IPv6 地址,但是无法访问 IPv6 网络。
这种情况需要检查 DMIT 控制台提供的 IPv6 网关,以及系统网络配置。
如果 IPv6 网络正常,但是 SSH 仍然无法连接,可以检查 SSH 是否监听 IPv6。
执行:
ss -tlnp | grep ssh
正常应该看到:
:::22
表示 SSH 监听所有 IPv6 地址。
如果只有:
0.0.0.0:22
说明 SSH 只监听 IPv4。
修改 SSH 配置:
vim /etc/ssh/sshd_config
确认:
AddressFamily any
然后重启:
systemctl restart ssh
另外一个容易忽略的问题是 IPv6 防火墙。
很多 VPS 配置只考虑 IPv4,IPv6 防火墙规则可能会阻止访问。
查看 IPv6 防火墙:
ip6tables -L
检查是否存在 DROP 或 REJECT。
如果测试阶段需要排查,可以临时清空:
ip6tables -F
如果清空后恢复访问,说明需要重新配置 IPv6 防火墙规则。
如果 VPS 本身 IPv6 正常,但是网站无法通过域名访问,需要检查 AAAA 记录。
查询:
dig AAAA your-domain.com
确认返回的 IPv6 地址是否和 VPS 当前地址一致。
常见问题包括:
- AAAA 地址填写错误
- VPS IPv6 地址变化
- Nginx 没有监听 IPv6
- CDN 没有正确支持 IPv6
查看 Web 服务监听:
ss -tlnp | grep nginx
正常应该看到:
:::80
:::443
之前记录过 IPv6-only VPS 的使用过程。
如果你使用的是没有 IPv4 地址的 VPS,可以查看:
IPv6-only VPS使用记录:没有IPv4地址的服务器如何建站和运行服务
里面记录了 IPv6-only 环境下部署服务、建站时遇到的问题。
如果 IPv6 地址正常,但是节点、网站或者其他服务无法访问,可以继续参考:
这篇主要记录 IPv6 VPS 网络访问异常时的检查方法。
平时排查 IPv6 VPS,我一般会先检查下面几个地方:
查看 IPv6 地址:
ip -6 addr
查看 IPv6 路由:
ip -6 route
测试 IPv6 出口:
curl -6 https://ifconfig.co
查看监听端口:
ss -tlnp
检查域名解析:
dig AAAA your-domain.com
这样基本可以定位大部分 IPv6 连接问题。
DMIT VPS 的 IPv6 问题很多时候不是 VPS 本身故障,而是配置细节导致。
有 IPv6 地址不代表网络一定正常,还需要确认路由、防火墙、服务监听和 DNS 是否全部匹配。
以后遇到类似问题,可以按照这个顺序快速排查。