dns劫持导致mirrors.aliyun.com等域名无法解析,需用nslookup对比干净dns与本地dns确认,再以curl --resolve直连验证服务,最后通过hosts绑定最新ip并刷新缓存解决。

根本不是镜像挂了,是 mirrors.aliyun.com 这类域名在你本地查不到真实 IP——DNS 劫持让系统返回空或错误地址,后续所有 HTTPS 请求都发不出去。
确认是不是 DNS 劫持最准的两行命令
别猜,直接验证:
-
nslookup mirrors.aliyun.com 1.1.1.1→ 如果返回类似223.5.5.5的 IPv4 地址,说明干净 DNS 能解析 -
nslookup mirrors.aliyun.com(不带额外 DNS)→ 如果超时或报*** Can't find mirrors.aliyun.com: Non-existent domain,就是劫持实锤
只要第一条通、第二条不通,就不用动 Composer 配置、不用清缓存、不用重装,直接进下一步。
用 curl --resolve 绕过劫持快速验证服务可用性
跳过本地 DNS,强制走已知有效 IP 发请求,5 秒内就能断定是不是纯 DNS 问题:
- 先查当前可用 IP:
dig mirrors.aliyun.com @223.5.5.5 +short | head -n1 - 再直连测试:
curl -I --resolve mirrors.aliyun.com:443:223.5.5.5 https://mirrors.aliyun.com/composer/packages.json
返回 HTTP/2 200 和 Content-Type: application/json?说明镜像本身完全正常。如果报 SSL 错误,再看系统证书或代理;如果超时,才考虑防火墙或网络策略拦截。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
hosts 绑定是最稳的落地方式,但三处必须同时做对
CI/CD、多机部署、长期运行环境,靠改 DNS 或临时 --resolve 不现实,/etc/hosts(Linux/macOS)或 C:\Windows\System32\drivers\etc\hosts(Windows)才是正解,但以下三点缺一不可:
- IP 必须最新:别抄网上旧地址,每次执行
dig mirrors.aliyun.com @8.8.8.8 +short | head -n1拿当前真实 IP - 格式必须严格:写成
223.5.5.5 mirrors.aliyun.com,IP 和域名之间只能是空格,不能是 Tab、全角空格或中文符号 - 缓存必须刷新:macOS 执行
sudo dscacheutil -flushcache,Windows 执行ipconfig /flushdns,Linux systemd 系统执行sudo systemd-resolve --flush-caches
杀毒软件(如火绒、360)常锁死 hosts 文件,保存失败时务必右键编辑器选“以管理员身份运行”。
注意网段冲突这个隐藏坑
有些镜像站(尤其是华为云、部分私有部署)会根据出口 IP 返回 CDN 回源地址,比如 100.64.12.34 或 172.22.1.100——这些地址表面是公网,实则只在镜像站内网可达。而你的路由器或防火墙会把它们当私有网段直接丢包。
现象是:nslookup 成功返回 IP,但 curl -v https://mirrors.aliyun.com/composer/ 卡在 Trying 100.64.12.34... 阶段。这时候即使 hosts 绑定也无效,得换一个真正可路由的公网 IP(如 223.5.5.5)来绑。










