前言
今天遇到了一个麻烦的问题,针对这一个问题,我在一天之内又遇到了两个应用场景。以下是问题叙述:
场景一:当我想要通过brew给我的mac安装git的时候,发现通过Homebrew的官网介绍,我连brew都不能安装成功,一直提示我无妨访问;
场景二:当我想要通过github下载一位大佬的pdf的时候,又出现了与场景一相同的报错信息;
问题详解
01 - DNS域名污染
首先,我们来说第一个问题,当我们按照Homebrew官网介绍进行安装的时候,遇到了如下的错误:
我们将上述地址复制到浏览器看下效果:
可以看到,错误信息提示我们该网站无法访问,这里给小伙伴们看下我排错时候的思路:
- 首先,查看网络连接,百兆带宽,稳稳滴;
- 其次,关闭防火墙、关停我使用的所有谷歌插件;
- 接着,查看使用的代理服务器是否有问题;
- 然后,我通过ping命令查看了一下该网址,发现能ping通,但是时延较大;
- 最后我们借助IPAddress.com网站查一下对应的IP地址,结果如下:
我们发现,通过ping命令我们得到的IP地址为151.101.228.133,我们通过IPAddress.com网站所查的真实IP地址为199.232.68.133,因此,我们可以得出结论,raw.githubusercontent.com地址遭到了域名污染,找出问题所在之后,我们来看解决方法。
“
DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。
DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。
一般来说,网站在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有相关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。
”
一般来讲,常用的两种解决方法包括使用加密代理和修改hosts文件(重点讲解)。
关于加密代理,相信使用过VPN的小伙伴都知道Shadowsocks吧,就是那台小飞机,我们可以在加密代理里进行远程的DNS解析,或者使用VPN访问网络;
关于修改hosts文件,步骤如下:
我们在mac下打开terminal,通过如下命令编辑Hosts文件:
sudo vi /etc/hosts
即在文末添加一行配置命令,如下所示:
199.232.68.133 raw.githubusercontent.com
简单解释一下,上图中,标红部分的内容是我们自己加上去的,有的小伙伴已经发现了,所配置命令对应的IP地址就是我们刚才通过第三方平台查到的真实IP地址。
OK,修改完上述配置之后,我们关闭终端,并重新下载安装,虽然地址可以访问了,但是这下载速度的确是令人发指,实在是龟速呀,果断停止下载,我们去找下镜像资源。
02 - 使用镜像
我们以中科大的镜像资源为例,我们在terminal中输入如下命令:
/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
我们发现当执行下载命令的时候,界面卡住了,信息如下:
==> Tapping homebrew/core Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...```
当我们遇到界面卡住的情况时,我们应当果断按下 CTRL+C 中断脚本执行,并依次执行以下三条命令:
cd "$(brew --repo)/Library/Taps/"
mkdir homebrew && cd homebrew
git clone git://mirrors.ustc.edu.cn/homebrew-core.git
成功之后,我们继续执行上述文章中的安装命令,直到看到==>Installation successful! 的信息即可。
/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
安装成功之后,我们通过如下命令安装git:
brew install git
安装完成之后,我们查看下brew和git的版本信息,非常好,都安装成功了。
本文最后
以上就是我在通过brew安装git的时候遇到的一些坑,希望对小伙伴们能带来一些帮助。