改DNS比改路由更直接有效,因为Composer依赖系统DNS解析域名,而改路由不影响其DNS查询;应优先修改/etc/resolv.conf指向可靠DNS(如8.8.8.8),并刷新缓存验证。

为什么改DNS比改路由更直接有效
Composer 卡在 Could not resolve host 或 Connection timed out,90% 是 DNS 解析失败或慢,不是路由路径问题。Linux/macOS 默认用系统 DNS(比如 ISP 提供的),一旦它返回错误或超时,composer install 就会卡住——哪怕你 ping 得通 IP,域名也解析不了。改路由(如 ip route add)对 Composer 没用,它不走自定义路由表,只依赖 libc 的 getaddrinfo() 调用 DNS 服务。
改 /etc/resolv.conf 是最稳的本地 DNS 方案
直接替换系统 DNS 服务器,让所有命令(包括 Composer)都走更快更可靠的解析链路:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 编辑
/etc/resolv.conf,写入两行(顺序重要,优先用第一个):nameserver 8.8.8.8<br>nameserver 1.1.1.1
- 如果系统用 systemd-resolved 或 NetworkManager,可能被覆盖——加
sudo chattr +i /etc/resolv.conf锁定(调试时可用,生产环境慎用) - 验证是否生效:
nslookup packagist.org或dig packagist.org +short,看返回 IP 是否非空且合理(如137.74.169.73) - 别用
114.114.114.114:它在国内某些地区会返回错误 TTL 或缓存污染,反而导致repo.packagist.org解析成 127.0.0.1
hosts 文件仅作兜底,不能替代 DNS
当 DNS 完全不可用(比如公司内网屏蔽外部 DNS),才手动绑 hosts。但必须注意:
-
packagist.org和github.com的 IP 不固定,阿里云镜像站mirrors.aliyun.com也有多节点轮询,硬编码容易失效 - 只绑已确认有效的 IP(查法:
curl -v https://mirrors.aliyun.com/composer/ 2>&1 | grep 'Connected to') - Linux 下需
sudo编辑/etc/hosts,加一行:140.82.114.4 github.com
- 改完后清系统 DNS 缓存:
sudo systemd-resolve --flush-caches(systemd 系统)或sudo dscacheutil -flushcache(macOS)
别碰 /etc/hosts 里的 packagist.org 域名映射
很多人误以为绑 packagist.org 就能加速,实际适得其反:
- Composer 2.x+ 默认跳过
packagist.org直连,走你配置的镜像 URL(如mirrors.aliyun.com/composer/) - 如果你绑了
packagist.org到某个旧 IP,而镜像源又恰好用 CDN 域名回源,会导致 TLS SNI 不匹配或 403 - 真正该绑的是镜像站本身(如
mirrors.aliyun.com),但前提是它 DNS 不稳定——这种情况极少,优先换 DNS


















