1) 现象:部分海外用户提示无法访问,而本地访问正常。
2) 常见原因:DNS 返回了 AAAA(IPv6)记录但服务器/防火墙未启用 IPv6;或近期更换了服务器公网IP但 DNS 尚未完全生效;CDN/负载均衡配置错误。
3) 目标:判断是 IPv6 兼容问题还是 IP 变更未同步,按步骤修复并验证。
1) 从本地或海外 VPS 测试 DNS:dig @8.8.8.8 AAAA yourdomain.com 和 dig @8.8.8.8 A yourdomain.com,确认是否同时返回 A/AAAA。
2) 尝试访问:curl -4 -I https://yourdomain.com 和 curl -6 -I https://yourdomain.com,观察是否不同。
3) ICMP 测试:ping6 yourdomain.com 与 traceroute6 yourdomain.com(或在 Windows 用 ping -6),看 IPv6 路径是否通畅。
1) 检查服务器是否有 IPv6 地址:ip -6 addr show;若无,联系云厂商分配或在控制面板启用。
2) Web 服务绑定:nginx/Apache 需要监听 IPv6。nginx 示例:在 server 块使用 listen [::]:80; listen [::]:443 ssl; 然后 systemctl restart nginx。
3) 防火墙检查:查看 ip6tables -L 或 nft list ruleset,允许 80/443;若使用 ufw,执行 ufw allow proto tcp from any to any port 80,443 并确保 IPv6 支持开启(/etc/ufw/ufw.conf ENABLE_IPV6=yes)。
1) 在 DNS 管理面板删除或注释 AAAA 记录,使解析只返回 A 记录。注意先将 DNS TTL 降到 300 秒以加速生效。
2) 清理缓存:本地测试前执行浏览器/操作系统 DNS 缓存刷新(Windows: ipconfig /flushdns;macOS: sudo dscacheutil -flushcache;Linux: systemd-resolve --flush-caches 或重启 nscd)。
3) 验证:使用 dig dig +short AAAA yourdomain.com 应为空,curl -4 测试能否访问。
1) 变更前准备:将 DNS TTL 调低到 300s(建议 24 小时之前完成)。
2) 更新 DNS:在控制台同时更新 A/AAAA(若支持 IPv6)记录,并填写新 IP。同步更新 PTR(反向解析)如有需要。
3) 同步防火墙与安全组:在云厂商控制台和服务器本地防火墙添加新 IP 的出入规则,放行必要端口。
4) 切换并验证:切换后使用 dig 验证新 IP 已生效,使用 curl -4/ -6 验证服务连通。记录回滚计划以防故障。
1) 抓包与连接跟踪:使用 tcpdump -n -i any icmp6 或 tcpdump -n -i any port 443 捕获流量,确认是否到达服务器。
2) Web 服务日志:nginx error/access log(/var/log/nginx/*),查看是否有来自 IPv6 的连接错误。
3) 云厂商健康检查与 CDN:检查负载均衡与 CDN 的监控面板,确认后端健康探测使用的协议(IPv4/IPv6)与探测地址一致。
问:海外用户提示无法访问,是不是一定是 IPv6 问题?
答:不一定,先用 dig/curl 验证是否存在 AAAA 记录并用 curl -6 测试;如果没有 AAAA 或 IPv6 测试成功,则可能是 DNS 缓存、CDN 配置或防火墙导致。
问:我不懂 IPv6,临时如何快速恢复海外访问?
答:最快方法是删除 DNS 的 AAAA 记录并降低 TTL,刷新 DNS 缓存后所有客户端会回退到 IPv4(A记录),同时确保服务器和防火墙已正确允许 IPv4 访问。
问:更换服务器公网 IP,如何保证零停机?
答:提前将 TTL 降低并并行添加新 IP(若可用),在低流量时间切换,更新 DNS 后验证并保留旧 IP 一段时间作为回滚。使用负载均衡或 CDN 可进一步减少影响。