文章目录
- 原因分析
- 路由节点不稳定
- 路由路径变化
- DNS 解析延迟
- DNS 污染
- 国际带宽限制
- 区域网络拥堵
- 某些地区或网络环境的网络限制和封锁
- 更换公共DNS(又称安全DNS)
- 访问GitHub为什么使用公共 DNS 更好?(相对于运营商DNS)
- 如何评估DNS状况?
- 公共DNS推荐
- 修改本地HOST文件手动指定
- 获取GitHub服务器地址并测试访问速度
- 修改 Host 文件并立刻生效配置
- 使用GitHub镜像网站
- 使用云服务器搭建私有GitHub镜像网站
原因分析
路由节点不稳定
- 概述:GitHub 服务器均位于海外。数据包从用户所在地到 GitHub 服务器的过程中,需要经过一系列的路由器和网络节点。如果这些节点中的任何一个出现问题(如硬件故障、软件错误、网络拥塞等),都可能影响到数据包的传输质量。
- 影响:路由节点不稳定会导致数据包丢失、延迟增加、甚至是连接断开等问题。
路由路径变化
- 概述:由于网络的动态性,数据包到达目标服务器的最佳路径可能会随着时间和网络条件的变化而变化。
- 影响:如果数据包开始通过一条新的路径传输,这条路径可能存在更多的延迟或丢包率,这将直接影响到用户体验。
DNS 解析延迟
- 概述:域名系统 (DNS) 负责将域名转换成 IP 地址,以便客户端能够访问特定的服务器。
- 影响:如果本地 DNS 服务器响应缓慢或者过载,这会导致用户在访问网站时遇到长时间的等待,尤其是在请求 GitHub 这样的大型站点时。
DNS 污染
- 概述:DNS 污染是指恶意修改 DNS 查询结果的行为,通常是出于审查或广告推广的目的。
- 影响:DNS 污染可能会导致用户无法访问正确的网站地址,或是被重定向到其他网站。
国际带宽限制
- 概述:国际互联网流量通常受到国家出口带宽的限制,特别是在高峰时段,这些带宽资源可能会变得紧张。
- 影响:当大量用户尝试访问海外服务器时,国际出口带宽的压力会显著增加,导致访问速度变慢甚至连接失败。
区域网络拥堵
- 概述:区域网络拥堵是指某个地区的互联网服务因为高负载而运行效率下降。
- 影响:当某个地区的网络流量超过其承载能力时,就会发生网络拥堵,导致访问外部网站的速度减慢。
某些地区或网络环境的网络限制和封锁
- 概述:为了遵守当地的法律政策或出于安全考虑,某些地区的网络服务提供商可能会实施网络限制或封锁措施。
- 影响:这些限制措施可能会阻止用户访问 GitHub 或其他海外网站和服务。
更换公共DNS(又称安全DNS)
访问GitHub为什么使用公共 DNS 更好?(相对于运营商DNS)
更快的响应时间
- 概述:公共 DNS 服务器通常在全球范围内分布,能够更快地响应 DNS 查询请求。
- 技术依据:公共 DNS 服务器拥有更大的带宽资源和更先进的硬件,可以处理大量的查询请求,从而减少响应时间。
更高的可靠性
- 概述:公共 DNS 服务提供商通常具有较高的可用性和冗余性,能够确保即使在高峰期也能提供稳定的服务。
- 技术依据:这些服务通常采用多数据中心架构,并具备自动故障转移和负载均衡功能,以确保服务的连续性和稳定性。
更少的 DNS 污染
- 概述:运营商提供的 DNS 服务器可能会进行 DNS 污染或劫持,将用户的查询结果重定向到广告页面或其他不相关的网站。
- 技术依据:公共 DNS 服务提供商通常承诺不进行 DNS 污染,确保查询结果的准确性和完整性。
更优秀的缓存策略
- 概述:公共 DNS 服务器通常具有更高效的缓存策略,能够更快地返回已缓存的结果,减少对上游 DNS 服务器的依赖。
- 技术依据:这些服务器使用先进的缓存算法和较大的缓存容量,可以更快地响应常见的查询请求。
更广泛的覆盖范围
- 概述:公共 DNS 服务通常在全球范围内提供服务,这意味着无论用户身在何处,都能找到最近的 DNS 服务器。
- 技术依据:这种广泛的覆盖范围减少了 DNS 查询的地理距离,从而降低了延迟。
如何评估DNS状况?
在评估 DNS 服务器响应速度时,通常会关注 ping 的时间(即 DNS 查询时间),一般在100ms之内均为可用:
- 优秀:响应时间小于 10 ms
- 良好:响应时间在 10 ms 至 50 ms 之间
- 可接受:响应时间在 50 ms 至 100 ms 之间
- 较差:响应时间大于 100 ms
除了ping也可使用其他工具获取针对某个网站的更多详尽信息,以GitHub为例,可以使用以下命令:
# DNS 查询时间
ping <DNS IP># 针对GitHub的更多详尽信息
nslookup -querytype=A github.com
dig +time=1 github.com
公共DNS推荐
常见的公共DNS,包括阿里、腾讯、百度、114等,附带北京的查询速度,可参见:北京可用DNS收集整理和速度评测。
修改本地HOST文件手动指定
获取GitHub服务器地址并测试访问速度
访问 https://dnschecker.org/#A/github.com 并在页面顶部的搜索框中输入 github.com
,接着选择 A
记录类型并点击 Lookup
按钮开始查询,DNSChecker 将会显示来自世界各地的 DNS 服务器对 github.com
的 A 记录解析结果。
将上述查询结果的IP复制保存到文件中,使用以下脚本测试速度:65. 测试多个ip的连接速度并按平均速度从快到慢排序
以下是2024.7的一份测试结果,ip顺序按照丢包率、平均速度由小到大排序:
20.205.243.166 github.com
#20.200.245.247 github.com
#20.207.73.82 github.com
#20.248.137.48 github.com
#140.82.112.4 github.com
#140.82.121.3 github.com
#20.26.156.215 github.com
#140.82.113.4 github.com
#140.82.112.3 github.com
#140.82.114.3 github.com
#140.82.113.3 github.com
#140.82.121.4 github.com
#20.201.28.151 github.com185.199.108.133 raw.githubusercontent.com
#185.199.108.133 raw.githubusercontent.com
#185.199.109.133 raw.githubusercontent.com
#185.199.109.133 raw.githubusercontent.com
#185.199.110.133 raw.githubusercontent.com
#185.199.110.133 raw.githubusercontent.com
#185.199.111.133 raw.githubusercontent.com
#185.199.111.133 raw.githubusercontent.com
修改 Host 文件并立刻生效配置
Windows 系统:
- 打开文件资源管理器,导航至
%SystemRoot%\system32\drivers\etc
文件夹,通常位于C:\Windows\System32\drivers\etc
。 - 使用管理员权限打开记事本或其他文本编辑器,然后找到
hosts
文件。 - 在
hosts
文件末尾添加新的 IP 地址和主机名映射,例如:20.205.243.166 github.com
- 保存文件并关闭记事本。
- 打开命令提示符窗口(以管理员身份运行),并清除 DNS 缓存以使更改立即生效:
ipconfig /flushdns
- 需要重启任何正在使用的浏览器或应用程序以应用新的 host 映射。
macOS 系统:
- 打开终端。
- 使用文本编辑器(如 nano 或 vim)打开
/etc/hosts
文件:sudo nano /etc/hosts
- 在文件末尾添加新的 IP 地址和主机名映射。
- 保存并退出编辑器。
- 清除 DNS 缓存以使更改立即生效:
sudo killall -HUP mDNSResponder
Linux 系统 (以 Ubuntu 为例) :
- 打开终端。
- 使用文本编辑器(如 gedit 或 nano)打开
/etc/hosts
文件:sudo gedit /etc/hosts
- 在文件末尾添加新的 IP 地址和主机名映射。
- 保存并退出编辑器。
- 清除 DNS 缓存以使更改立即生效:
sudo systemd-resolve --flush-caches
使用GitHub镜像网站
这些GitHub镜像网站的服务可能都不太稳定,随时可能失效。2024.07可用的GitHub镜像网站有:
- https://gitclone.com/
- https://bgithub.xyz/
- https://gh.api.99988866.xyz/
使用云服务器搭建私有GitHub镜像网站
参见:阿里云服务器 篇六:GitHub镜像网站