0%

中国镜像加速指南

本文旨在分享中国网络环境下,开发运维的镜像加速最佳实践。

为什么使用镜像加速服务

由于大部分软件仓库/代码源位于境外服务器,从国内直连可能不稳定或访问缓慢。
因此,一些第三方在国内搭建了镜像站,把境外的软件仓库/代码源同步到国内服务器,进行二次分发。
这些镜像站,大多数是出于公益目的,免费开放给公众使用,为国内开发和运维工作者提供便利。

如何确保镜像服务安全可靠

既然镜像站提供的是二次分发,那么就必然面临一个拷问:我怎么确保我使用的镜像服务和官方提供的内容是一致的呢?
这里从几个角度讨论:

同步时效

镜像站的内容并不是实时和官方同步的,它需要定期检查更新。这个检查周期一般是几个小时至几天同步一次,偶尔也有可能遇到同步失败的情况。
通常,你可以在各个镜像站的首页,看到各个仓库/源的同步状态和最后更新时间。
当镜像服务和官方不同步时,你可能无法下载到最新的数据。

数据损坏或恶意篡改

万一镜像站同步到的数据是损坏的、错误的,或者人为恶意篡改了数据,分发恶意代码、软件怎么办呢?
大多数情况下,包管理工具都有哈希或者签名校验机制,错误损坏的数据会被客户端的管理工具发现并拒绝。
而刻意分发的恶意代码则相对较难防范,因此请尽量选择背景可靠的镜像站。

中间人攻击

中间人攻击主要针对 HTTP 协议。目前绝大多数镜像站都支持 HTTP / HTTPS 两种协议访问。
在公网环境下,应当尽量使用 HTTPS 协议保障传输的安全性。而在公有云使用内网镜像服务时,则建议使用 HTTP 访问以减少 SSL 加解密的开销,并提升缓存效率。

国内主流的镜像站

阿里巴巴开源镜像站 / 淘宝NPM镜像

https://developer.aliyun.com/mirror/
https://npm.taobao.org (已合并至阿里巴巴开源镜像站)

由阿里巴巴提供的开源镜像站,包含主流的开源软件,虽然数量不多,但是稳定性一流。除此之外还包含 Node 生态的 npm / electron / PhantomJS / node-sass 等镜像,这是大多数镜像站没有的。

阿里云 Docker Hub 镜像加速服务

除了以上开源镜像,阿里云还提供了 Docker Hub 的镜像加速服务,按照阿里云文档,该服务需要登录阿里云账号,在镜像服务控制台获取每个用户专属的加速地址。点击此处 登录后即可获取,该服务完全免费,请放心使用。

阿里云之所以设定需要每个用户获取专属的加速地址,应该是为了统计每个用户的使用量,防止通过 Docker Hub 镜像加速服务对阿里云进行攻击,毕竟 Docker 镜像的体积都不小,对服务器和带宽造成的负担也不低。
因此,尽量不要使用网上泄漏的个人加速地址,谁知道会不会用的人多了就被阿里云 ban (拉黑) 了呢。

不过这里有一件有意思的事情,曾经中科大 USTCLUG 也提供过 Docker Hub 镜像加速服务,但是后来因为服务器不堪重负,取消了这一服务。而后中科大的 docker.mirrors.ustc.edu.cn 就被重定向到了 ustc-edu-cn.mirror.aliyuncs.com ,看起来应该是和阿里云达成了某种合作。因此,懒得登录账号申请专属地址的朋友,可以考虑使用 https://ustc-edu-cn.mirror.aliyuncs.com/ 这一地址。

网易开源镜像站

https://mirrors.163.com/

网易提供的开源镜像站,包含主流的开源软件,中规中矩。

网易 Docker Hub 镜像加速服务

https://hub-mirror.c.163.com

清华TUNA / 北外

https://mirrors.tuna.tsinghua.edu.cn/
https://mirrors.bfsu.edu.cn/

由清华大学 TUNA 协会维护的开源镜像站,北外提供分流。提供的内容还是很丰富的,同步也非常及时。

中科大 USTCLUG

https://mirrors.ustc.edu.cn/

由中国科技大学 Linux 用户协会维护的开源镜像站,提供主流开源软件的分发,提供的内容比阿里云和网易的更丰富,但是同步频率和稳定性略差一些。

Gitee 极速下载 (GitHub 主流仓库镜像)

https://gitee.com/mirrors

由商业公司 OSChina 提供的 GitHub 镜像站,与其它镜像站不同,这里并不提供 Linux 发行版或者主流软件等镜像。这里只提供 GitHub 上部分项目的镜像。截止 2020 年末,这里已经有 2 万多个主流项目的镜像。

其它

除了上面这些开放的镜像站,还有一些仅提供内网服务的镜像站,如腾讯云、华为云、Azure中国等,都有自己的镜像加速服务,只面向自己的公有云环境提供服务,可以根据自己的实际需要选用。

未完待续

其实本来写这篇文章是想评测一下各大镜像站的优缺点,以及在 CI 等场景下的使用技巧。然而这篇文章从年初拖到年末,挖了一年的坑也没填。因此把之前写的一部分先发了,剩下的内容后面再看情况不定期更新。