场景
使用vagrant添加box,
vagrant box add laravel/homestead
报如下错误
Enter your choice: 3
==> box: Adding box 'laravel/homestead' (v7.2.1) for provider: virtualbox
box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/
7.2.1/providers/virtualbox.box
box: Download redirected to host: vagrantcloud-files-production.s3.amazonaws
.com
box: Progress: 0% (Rate: 0*/s, Estimated time remaining: --:--:--)
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.
Failed to connect to vagrantcloud-files-production.s3.amazonaws.com port 443: Ti
med out
分析
-
Download redirected to host:
- 说明下载地址被重定向了新域名,.
s3.amazonaws.com
很显然是国外亚马逊服务器域名,难道被墙了?
- 说明下载地址被重定向了新域名,.
-
ping vagrantcloud-files-production.s3.amazonaw.com
- 尝试ping可以ping通,说明能够被访问,而且每次ping完返回的域名还不一相同,
域名服务商,每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回
换而言之,一个域名指向多个ip -
使用迅雷下载工具下载
- 理由:猜测下载厂商会有海外域名解析,缓存之类的类似cdn的节点服务,使用工具应该可避免
- 效果:使用迅雷下载是是可行(你必须是付费会员)
https://vagrantcloud.com/laravel/boxes/homestead/versions/
7.2.1/providers/virtualbox.box -
开始很快(最高1M以上),有限免流量,但若不充会员,后面几乎停止下载了。
关键
- 问题的核心是本地宿主机,不能视别来自亚马逊的国外域名,导致下载超时
方案
- 要么使用第三方工具,比如迅雷,充会员的那种无需关注域名
- 要么更改本地hosts,将ip地址与ping后的域名一起解析,没会员又用迅雷(文件大),
- 可能需要手动更改几次本地hosts指向的ip,原因在于对于同一域名指向的固定ip若长时间请求,对方会拒绝,出现超时现象的假象或部分数据丢失
# hosts文件
#52.216.139.75 s3-1-w.amazonaws.com
52.216.113.203 s3-1-w.amazonaws.com
D:\>ping vagrantcloud-files-production.s3.amazonaws.com
正在 Ping s3-1-w.amazonaws.com [52.216.20.195] 具有 32 字节的数据:
来自 52.216.20.195 的回复: 字节=32 时间=278ms TTL=33
来自 52.216.20.195 的回复: 字节=32 时间=278ms TTL=33
来自 52.216.20.195 的回复: 字节=32 时间=297ms TTL=33
来自 52.216.20.195 的回复: 字节=32 时间=313ms TTL=33
52.216.20.195 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 278ms,最长 = 313ms,平均 = 291ms