如何安全高效地镜像YUM源
TOPIC SOURCE
Python下载163yum源文件
在企业内部搭建离线 YUM 源时,往往会因为同步策略不当而导致磁盘占满、网络拥塞,甚至出现恶意软件混入的安全隐患。下面从准备、同步、校验、自动化四个维度,拆解一套兼顾安全与效率的镜像方案。

一、选定可信的上游镜像
官方提供的 https://mirrors.aliyun.com/centos/、https://mirrors.tuna.tsinghua.edu.cn/centos/ 等站点均采用 TLS 加密,并签名了所有 RPM 包。务必在 /etc/yum.repos.d/ 中保留对应的 gpgkey,防止中间人注入。
二、使用 rsync+createrepo 做增量同步
rsync 的 --partial --delay-updates --bwlimit=5000 参数可以在高峰时段限制带宽,且只下载变更文件。同步完成后,立刻跑一次 createrepo --update,确保本地元数据与上游保持一致。
# 同步 CentOS 7 Base
rsync -avz --delete --partial --delay-updates
--bwlimit=5000
rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
/srv/yum/centos/7/os/x86_64/
# 生成元数据
createrepo --update /srv/yum/centos/7/os/x86_64/
三、完整性校验与安全加固
- 下载完成后,用
rpm --checksig *.rpm验证 GPG 签名; - 对每个目录生成
sha256sum,保存至CHECKSUMS文件,后续可用sha256sum -c快速比对; - 在防火墙中仅开放本地网络的 80/443 端口,阻止外部直接访问同步服务器;
四、定时任务与监控
将上述 rsync+createrepo 脚本写入 /etc/cron.d/yum-mirror,每日凌晨 2 点执行;同时利用 systemd 的 OnFailure= 机制,若同步失败自动发送邮件。配合 Prometheus 的 node_exporter,实时监控磁盘使用率,一旦超过 80% 立即触发扩容或清理策略。
镜像的细节,往往决定了后续运维的舒适度。

参与讨论
这套流程写得挺实用的,尤其是用 –delay-updates 和 createrepo –update,能省不少带宽和时间。
rsync 限速参数能防峰值,但 bwlimit=5000 默认单位是 KB/s 吗?想确认下具体单位。
用 rpm –checksig 校验挺稳妥的,我之前就遇过没签名的包被过滤掉,省了大麻烦。
光开放 80/443 还不够,最好再限制源 IP 或做内网认证,否则同网段的机器人也能扫。
前几天刚搭了镜像,磁盘飙满是个真实痛点,监控阈值设 80% 很有必要。