服务状态与本地故障分开看
GitHub Status 是官方服务状态页,会列出总体和各组件的运行情况。代码操作、议题和拉取请求等组件有各自状态,不应只把某个页面打不开理解为整个平台故障。
-
按状态页与连接排查文档对照来看,若服务端显示正常,问题可能在本地网络、DNS、证书或设备上。这只是缩小阅读范围的判断,不是已经找到了原因。
-
GitHub Docs 把防火墙、代理、组织网络及其他网络配置列作连接问题的相关因素。官方也提供诊断工具入口,但服务状态、用户设备和网络路径仍是不同的信息来源。
用错误分类辨认失败阶段
curl 是发起网络请求的工具,它的错误码文档区分了解析、连接、超时、握手和验证失败。下面按阶段合并阅读,分类顺序属于通用整理,不是浏览器的报错对照表。
| 症状类别 | curl 文档定义的含义 | 出处 |
|---|---|---|
| 名称解析失败 | 6:远端主机名称未能解析 | curl 错误码文档 |
| 连接失败或超时 | 7:连接主机或代理未成功;28:达到了设定的超时条件 | curl 错误码文档 |
| 握手或证书验证失败 | 35:SSL/TLS 握手发生错误;60:远端证书或 SSH 指纹未通过验证 | curl 错误码文档 |
SSL、TLS 指用于保护连接的协议,握手是双方协商连接的过程。SSH 指纹则是识别远端身份的信息,不能把表里的验证失败都改写成同一种浏览器证书问题。
错误定义说明失败发生了什么,不会单独证明是设备、网络还是远端造成的。
hosts 固定的是名称对应关系
它不是对每次网络连接结果的记录,而是名称与地址的对应信息。可以直接控制这份表,与让解析器向域名服务器询问,是两种不同的信息取得方式。
通用说明:手写对应关系不会随着远端地址变化自动更新。
原有地址过期时,可能连不到目标,也可能连向不相符的位置,条目看起来还在并不代表仍然适用。
还要区分固定内容与内容校验:
- 手工写入的对应关系,不会自动获得来源真实性校验。
- 不清楚来源的现成条目,会把名称的对应选择交给内容提供者。
- 改动系统文件通常需要权限,错误内容可能影响其他程序。
- 它只影响本机的名称对应,不能修复 TLS 或网络连接本身。
这些是通用风险说明,不是对任何一份现成文件的评价。它们也不能用来替代对原始报错阶段的判断。
DNS 改的是查询对象与路径
RFC 1034 将 resolver 描述为衔接用户程序与域名服务器的程序,这里称为解析器。应用提出请求,解析器把请求转成名称查询,再把需要的信息交回应用。
| 协议名 | 对应标准与用途 |
|---|---|
| DoH | RFC 8484:通过 HTTPS 传递 DNS 查询与响应 |
| DoT | RFC 7858:利用 TLS 保护 DNS 查询的传输 |
通用说明:选定解析服务,也是在选定谁接收你的域名查询。其处理与记录规则要看自身说明;在机构指定解析器的网络里改动查询对象,还可能使原有网络内的名称无法解析。
- 微软的相应 DoH 文档适用 Windows Server,不能作为其他系统的界面步骤。想继续理解查询经过哪一层,可看 解析器与查询路径的含义。
代理转发与网页设置分别阅读
通用说明:代理会先接收流量,再向另一端转发。它改变的是请求经过的路径,与直接改写本机名称对应关系不是同一件事。
-
Git 文档有
http.proxy配置项,用来覆盖 HTTP 代理设置,并要求代理透明转发。透明在这里指不修改、转换或缓冲收发内容;文档记录不符合这一要求的代理会使 Git 出现故障。 -
curl 也有各自的代理环境变量,例如
http_proxy、HTTPS_PROXY和ALL_PROXY;NO_PROXY表示不经代理的主机清单。这里只说明名称与作用,不把系统设置和程序自己的配置混成同一个来源。
按 Git 与 curl 文档各自的定义对照来看,浏览器能打开网页,不足以推定 Git 使用了同样的代理。系统代理是否被程序读取,也要与程序自己的配置分开,相关分层见 系统代理与程序请求的分层检查。
通用说明:转发方可能看到访问的域名,未加密内容也可能被看到;来路不明的转发还可能修改内容。选择一条转发路径,不等于解决了原先所有失败环节。
- GitHub Docs 另有 SSH 经 HTTPS 端口连接的说明,适用范围和代理干扰也有单独限制。它与网页打不开并非同一个问题,不能把仓库连接方式的说明扩成网页故障的统一处理。
证书有效期与系统时间分开核对
GitHub Docs 的证书错误说明提到,CA 根证书过旧会使仓库推送或拉取失败。CA 是签发数字证书的认证机构;文档还称,更新操作系统通常也会更新根证书。
这段说明对应的是该文档所列错误,不等于每次握手失败都由根证书过旧造成。表中的握手错误与验证错误,仍要按各自定义阅读。
- RFC 5280 用 notBefore 和 notAfter 表示证书有效期的起止时间。按这个定义对照来看,本机时间严重偏离时,可能把证书判到有效期之外。
系统时间与证书失败的联系是由有效期定义作出的通用推论,官方没有直接这样写成排错项。
这一推论没有给出具体设备的失败原因,也不能代替证书错误的原始提示。GitHub 下载慢的情况,另有 讲下载慢的另一篇 单独说明。