CentOS 7下访问packages.microsoft.com仓库执行yum update失败求助
你好,我注意到你作为CentOS新手,在配置微软软件仓库时遇到了yum update超时、无法获取SSL证书的问题。结合你提供的tracepath、openssl和curl测试信息,我整理了几个针对性的排查和解决方向,你可以逐一尝试:
1. 解决路径MTU不匹配问题
从你的tracepath结果能看到,第6跳时MTU从1500降到了1476,这可能导致大尺寸的HTTPS数据包无法正常传输,进而触发超时。你可以临时调整网卡MTU来匹配路径MTU:
# 假设你的网卡是eth0,根据实际情况替换 ifconfig eth0 mtu 1476 up # 如果使用NetworkManager管理网络,用以下命令 nmcli connection modify eth0 ipv4.mtu 1476 nmcli connection up eth0
调整完成后,再执行yum update测试是否解决超时问题。如果有效,可以把MTU设置写入网卡配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0),添加MTU=1476实现永久生效。
2. 修复系统CA根证书缺失问题
openssl连接仅显示CONNECTED但无法获取证书,大概率是系统缺少验证微软HTTPS证书所需的CA根证书。你可以先更新系统的CA证书包:
yum install -y ca-certificates update-ca-trust extract
更新完成后,重新测试openssl连接,查看是否能正常获取证书链:
openssl s_client -connect packages.microsoft.com:443 -showcerts
如果输出中能看到完整的证书信息,说明证书问题已解决。
3. 调整yum超时与重试参数
默认的yum超时时间(30秒)可能不足以应对网络波动,你可以编辑yum配置文件延长超时时间并增加重试次数:
vi /etc/yum.conf
在文件中添加或修改以下参数:
timeout=60 # 超时时间改为60秒 retries=5 # 重试次数改为5次
保存退出后,执行yum clean all && yum makecache fast清理缓存并重新生成仓库缓存,再尝试yum update。
4. 排查透明代理或网关拦截
虽然你已经开放了防火墙,但部分环境可能存在透明代理、WAF或网关设备拦截HTTPS流量,导致证书无法正常协商。你可以用curl做更详细的调试:
curl -vvv https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml
仔细查看输出中的证书验证、连接协商过程,如果出现“certificate verify failed”或代理相关提示,需要联系网络团队检查是否有流量拦截规则。
5. 验证微软仓库配置正确性
确保你的微软仓库配置文件正确无误,检查/etc/yum.repos.d/microsoft-prod.repo的内容:
[packages-microsoft-com-prod] name=packages-microsoft-com-prod baseurl=https://packages.microsoft.com/centos/7/prod/ enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc
如果文件不存在或内容错误,重新创建该文件并导入微软的GPG密钥:
rpm --import https://packages.microsoft.com/keys/microsoft.asc
之后清理yum缓存并更新:
yum clean all yum makecache fast yum update
问题补充信息
以下是你提供的测试输出,供参考:
yum update错误输出:
[root@abcde01 network-scripts]# yum update Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.gbnetwork.com * extras: mirrors.gbnetwork.com * updates: mirrors.gbnetwork.com base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: [Errno 12] Timeout on https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: (28, 'Operation timed out after 30001 milliseconds with 0 out of 0 bytes received') Trying other mirror. https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: [Errno 12] Timeout on https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: (28, 'Operation timed out after 30001 milliseconds with 0 out of 0 bytes received') Trying other mirror. https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: [Errno 12] Timeout on https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: (28, 'Operation timed out after 30001 milliseconds with 0 out of 0 bytes received') Trying other mirror. https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: [Errno 12] Timeout on https://packages.microsoft.com/centos/7/prod/repodata/repomd.xml: (28, 'Operation timed out after 30001 milliseconds with 0 out of 0 bytes received') Trying other mirror.
openssl测试输出:
[root@abcde01 network-scripts]# openssl s_client -connect packages.microsoft.com:443 CONNECTED(00000003)
curl测试输出:
[root@ieleaisiq01 network-scripts]# curl -vk https://packages.microsoft.com * About to connect() to packages.microsoft.com port 443 (#0) * Trying 52.230.121.169... * Connected to packages.microsoft.com (52.230.121.169) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb
tracepath测试输出:
[root@abcde01]# tracepath packages.microsoft.com -p 443 1?: [LOCALHOST] pmtu 1500 1: gateway 0.166ms asymm 64 1: gateway 0.080ms asymm 64 2: 100.64.96.0 0.171ms 3: 10.1.22.2 0.518ms 4: 10.1.22.9 0.496ms 5: 10.1.22.17 0.561ms 6: 10.1.22.17 0.554ms pmtu 1476 6: 192.168.1.99 20.473ms 7: 10.1.22.41 20.216ms 8: 203.115.193.250 23.265ms 9: cbj-br1.arc.net.my 17.568ms 10: 203.115.224.98 23.552ms 11: microsoft-1.myix.my 23.661ms 12: ae28-0.icr02.kul01.ntwk.msn.net 38.018ms 13: be-102-0.ibr01.kul01.ntwk.msn.net 28.477ms asymm 17 14: be-7-0.ibr02.sg3.ntwk.msn.net 29.007ms asymm 16 15: ae102-0.icr02.sg3.ntwk.msn.net 28.548ms 16: no reply 17: no reply 18: no reply ^C
备注:内容来源于stack exchange,提问作者Myan




