发布日期:2026-10-27
适用场景
浏览器能够打开网站,却有部分设备连接缓慢,或者监控只在某一种网络环境失败。此时,“网站能访问”不足以说明 IPv4 和 IPv6 都正常。本教程在同一台 Linux 工作机上,用同一个公开 HTTPS 页面分别检查两种地址族,形成可以交给网络管理员继续排查的对照记录。
目标应是自己管理或允许进行普通访问的公开页面,最好体积较小,并且已经确认发布了两种地址记录。不要选择登录页面,也不要在命令里附带令牌、会话信息或其他凭据。
原理
双栈客户端可以同时具备两种连接路径。curl 的连接竞争机制会在一种路径尚未成功时尝试另一种路径,首先成功建立的连接被采用,因此默认请求成功可能掩盖另一条路径的问题。相关机制见 curl 官方连接说明。
本教程通过地址族选项分别限制解析结果,再观察实际连接地址。HTTPS 请求仍使用原始域名,保留证书链和域名校验。不要把网址直接换成某个地址,否则会同时改变证书名称和网站选择条件,影响比较。
准备工作
选择允许直连目标网站、未配置应用代理的 Linux 环境。如果所在网络必须使用代理,应由管理员提供合适的测试环境,因为经代理得到的远端地址可能属于代理服务器,无法直接代表本机到目标网站的地址族路径。
在空练习目录打开终端,检查工具信息:
curl --version
查看功能列表是否包含 IPv6。工具具备支持只代表程序有能力使用该协议,不代表工作机已经获得可用地址或路由。下面命令使用 Bash 语法,Windows PowerShell 不能原样照搬退出状态的读取方式。
分步骤操作
第一步:设置同一个目标
read -r -p '请输入允许检查的公开 HTTPS 完整网址:' target_url
printf '%s\n' "$target_url"
目标变量保存实际网址,应以 HTTPS 协议开头,且不包含登录信息。两轮检查都使用这个变量,避免一轮检查首页、另一轮检查其他路径。先确认目标是小型页面,以免无意下载大型文件。
第二步:只检查 IPv4
curl --ipv4 --http1.1 --connect-timeout 8 --max-time 20 --silent --show-error --output /dev/null --write-out 'remote=%{remote_ip} http=%{http_code} total=%{time_total}\n' "$target_url"
printf 'curl_exit=%s\n' "$?"
连接时限约束建立连接阶段,总时限限制整个请求。响应正文送入空设备,终端只显示远端地址、HTTP 响应码和总耗时。退出状态必须紧接着读取,因为后续命令会更新它。
第三步:只检查 IPv6
curl --ipv6 --http1.1 --connect-timeout 8 --max-time 20 --silent --show-error --output /dev/null --write-out 'remote=%{remote_ip} http=%{http_code} total=%{time_total}\n' "$target_url"
printf 'curl_exit=%s\n' "$?"
两条命令只改变地址族,其他条件保持一致。这里固定使用基于 TCP 的 HTTP/1.1,避免把不同传输协议混入比较。常规直连环境下,IPv4 地址通常以点分十进制显示,IPv6 地址包含冒号;仍需结合代理情况解释。
地址族、超时、输出变量和退出码的定义可查阅 curl 官方手册。
第四步:为失败的一轮保留连接细节
如果 IPv6 请求失败,可执行:
curl --ipv6 --http1.1 --connect-timeout 8 --max-time 20 --verbose --output /dev/null "$target_url" 2> ipv6-detail.txt
printf 'curl_exit=%s\n' "$?"
详细信息写入练习目录中的日志文件。检查是否取得目标地址、是否开始连接、是否进入 TLS 握手以及证书校验是否报错。若日志显示正在使用代理,停止把结果当成目标直连路径的证据。IPv4 失败时,可相应更换地址族选项和日志文件名。
验证方法
先判断是否到达预期服务,再比较时间。收到正常页面或站点预期的重定向,说明该轮至少取得了 HTTP 响应。本教程不自动跟随跳转,因此重定向只证明入口可达,不能证明最终页面也可达。
未使用请求失败选项时,HTTP 的四百或五百类响应也可能对应零退出状态;这表明传输完成,但应用结果仍需分析。响应码显示三个零时,通常意味着尚未取得有效 HTTP 响应,应结合错误文字判断。
建议手动记录检查时间、地址族、远端地址、响应码和退出状态,隔一会儿再各检查一次。偶然一次更快,不能直接推出某种协议长期性能更好。
常见错误
IPv6 解析失败可能只是目标没有发布对应记录,不能据此判断工作机断网。解析成功但连接失败,仍可能涉及本机路由、链路、防火墙或远端监听,需要进一步证据,不能仅凭一个退出码定位责任设备。
两轮落到不同服务器时,页面内容或后端状态也可能不同,这是分布式部署带来的比较限制。若出现证书错误,应检查域名、系统时间和证书配置,不要关闭证书校验来把失败变成成功。
安全与回退
这些操作不修改网络地址、路由和防火墙,无需通过禁用 IPv6 来完成实验。请求长时间等待时可以中断,之后保留日志继续分析。不要将临时诊断结论直接变成系统范围的协议关闭策略。
分享详细日志前检查完整网址、响应头及代理信息,只保留必要证据。练习结束后删除不再需要的本地日志即可;目标变量会随终端会话结束而消失。
参考资料与转载说明
本文依据上述公开资料进行中文原创整理,不是逐句翻译,也不替代厂商手册。操作前请核对自己的版本、型号和备份。
评论一下?