一文解析服务器域名无法解析 && 连接超时 && 访问受限问题
你可能遇到过,某国外站点(例如 Github)经常无法访问;某些包库管理器无法成功 Install / Update/ Upgrade(例如 pip/conda/wsl)产生服务器域名无法解析或连接超时的异常信息,究其根本均属于网络问题。
↓↓↓↓↓↓ 网络问题说明 ↓↓↓↓↓↓
上述的访问站点,或包管理器官方 Channel 均位于国外。在访问时,除了受到国家防火墙的限制原因外,国内运营商或多或少也会有一定的限制(你可能碰到过学校或公司可以正常访问,而回到老家省份后无法使用的情况)。
👇👇👇 本文主要目标 👇👇👇
给出 >>>> 当遇到 服务器地址无法解析 && 连接超时 && 访问受限等网络问题时的解决思路
解决上述网络问题之前,你需要对 Domain & DNS & Hosts 等相关概念有基础的了解,才能更好的根据实际情况分析出出现网络问题的原因并予以解决。
Domain & DNS & Hosts
我们知道,不管是访问站点,亦或 Install / Update/ Upgrade 等操作,都是向提供相关服务的 WEB 服务器请求相应资源(页面/类库包等)。
更详细的描述 >>>> 执行上述操作时,首先会向 WEB 服务器地址发送网络请求,只有成功建立了连接后才可以完成访问/Install / Update/ Upgrade等操作。这时依据你的实际网络情况,可能产生服务器地址无法解析 && 连接超时 && 访问受限等问题。
也就是说,当发生上述网络问题后,你 首先需要明确操作所访问的 WEB 服务器地址 >>> 域名
[1] >>>> Domain
域名(Domain),就是用来定义 WEB 服务器地址的,也是 WEB 服务器 IP 地址的别名(一般的 IP 地址都是长串的数字,为了用户方便记忆所以使用域名进行替代)。
例如 Github 站点域名:github.com
,百度搜索域名:baidu.com
。
拿到目标 WEB 服务器的域名(Domain)或 IP 地址是网络访问的第一步!!!更多关于 Domain 的说明,请参见【网站基础之 URL 结构解析】中关于域名(Domain)的描述。
| ================================================== Split Line =============================================== |
[2] >>>> DNS
实际上使用域名(Domain)访问网站时,浏览器会先通过 DNS 域名解析服务器(DNS 服务器) 拿到域名对应的 IP 地址(域名解析),然后再通过 IP 地址请求服务器上的文件。
| ================================================== Split Line =============================================== |
[3] >>>> Hosts
而根据 Windows/Linux 系统规定,在进行 DNS 请求以前,Windows 系统会先检查自己的 hosts 文件中是否有当前网络域名的映射关系(域名和 IP 的映射,例如:140.82.113.3 github.com
)。
如果有,则调用这个 IP 地址映射;如果没有,再向网络运营商或已设置的 DNS 服务器提出域名解析获取 IP 地址。
也就是说,hosts 的请求级别比 DNS 高!!!
网络问题解析
这一小节,我们来解析发生各种网络问题的解决思路:
域名无法解析
当发生 “无法解析服务器的名称或地址” 或 “找不到主机” 异常时,意外着当前网络运营商提供的 DNS 服务器,或当前设置的【首选/备用 DNS 服务器】,无法解析服务器域名,导致无法访问站点。
解决思路:
- 更换为其它可供解析的 DNS 服务器
- 添加 hosts 域名映射
配置 DNS 服务器
具体步骤如下:
👇👇👇 For Windows 👇👇👇
打开【Windows 搜索框】>>> 搜索【控制面板】,并打开 >>>【网络和 Internet】>>>【网络和共享中心】>>> 选择【更改适配器设置】>>> 双击链接的网络,例如【以太网】>>> 点击【属性】>>> 双击【Internet 协议版本 4 (TCP/IP)】>>> 将【自动获取 DNS 服务器地址】修改为【使用下面的 DNS 服务器地址】>>> 然后在【首选/备用服务器】地址中分别输入如下(任选其二):
1 | # Microsoft |
👇👇👇 Ubuntu 👇👇👇
关于 Ubuntu Linux 中 DNS 服务器的设置可参见【Ubuntu Server: Quick Configuration Guide】中关于【配置系统网络以及网络代理】的说明。
添加 Hosts 域名映射
hosts 文件采用 ascii 编码方式,没有后缀名的!!!你可以使用任意一款文本编辑器打开修改它。
Windows 中 hosts 文件的位置: C:\windows\system32\drivers\etc\hosts
,Linux 中 hosts 文件的位置: /etc/hosts
。
| ================================================== Split Line =============================================== |
↓↓↓↓↓↓ hosts 文件的域名映射记录如何写 ↓↓↓↓↓↓
- IP 地址与域名间至少要有一空格;
- 最后一行书写域名映射时,一定要加上回车再保存以避免最后一行不生效;
- 注释:如果某条映射记录暂时不用,只需要在它前面加一个
#
号即可。
以 Github 域名映射为例,其域名映射记录为:
1 | 140.82.113.3 github.com |
表示访问 https://github.com
这个网址时,将解析到 64.233.162.83
这个 IP 上。
| ================================================== Split Line =============================================== |
关于域名所对应的 IP,你可以通过访问站点 |>>>> Ipaddress <<<<| 进行获取:
找到【Domain 搜索框】 >>> 输入待查询域名【github.com】>>> 确认【Enter】>>> 页面中 DNS Resource Records 中记录的就是域名对应的 IP(可能有多个)
完整 hosts 文件内容如下:
1 | # Copyright (c) 1993-2009 Microsoft Corp. |
这里再提供一份包含 Github 相关域名映射的完整 hosts 文件内容,如下:
1 | # Copyright (c) 1993-2009 Microsoft Corp. |
hosts 文件修改保存后,如果不生效,可执行如下操作:
1 | # For Windows |
连接超时
当发生 “连接超时”、“操作超时” 或 “ConnectTimeout” 等超时异常时,主要讨论以下两种情况:
- 本地网络引发超时
- 目标服务器网络引发超时
| ================================================== Split Line =============================================== |
[1] >>> 本地网络引发的超时情况分析
[1.1] >>> 检查请求默认超时时间是否合理?!!
- 过短:请求还未处理完成,你就急不可待了!
- 过长:请求早已超出正常响应时间而挂了
更多是由于默认超时时间过短引发,你可以通过适当设置延长超时等待时间来进行多次尝试~~~
[1.2] >>> 本地网络不稳定
通过是由于,本地网络不通或不稳定,引发超时。超时后一直请求重试仍产生超时。
此时,你需要检查本地的网络环境是否正常,确保本地网络正常后再重试(多尝试几次)~~~
| ================================================== Split Line =============================================== |
[2] >>> 服务器网络引发的超时情况分析
服务器网络引发的超时,你是无法控制和解决的,需要等待服务器官方人员进行维护:
[2.1] >>> 对于高并发访问服务器,访问服务器达到并发连接数上限,产生超时
一般情况下,服务器并发连接数是可以满足日常客户端访问的。但当出现热点事件(例如:淘宝双十一),会使得服务器达到并发连接数上限,从而产生超时。
此时,你需要等待服务器访问流量下降后再进行尝试。
[2.2] >>> 访问服务器网络不稳定
极少出现(服务器网络挂了),由于受限于待访问服务器网络环境,你需要等待相应服务器网络恢复正常后再进行尝试。
如果你已经排除了 “域名无法解析”,并且本地网络环境正常,目标访问服务器正常,但仍然无法访问目标服务器,或显示 “访问受限”,参照下文
访问受限
导致 “访问受限” 的原因很多,例如:本地防火墙限制、国内运营商网络限制、国家防火墙的限制,以及目标服务器对访问客户端通过认证后才允许登入的限制(例如 SSH 访问 Github,你需要配置密钥)…
[1] >>> 本地防火墙限制
对于本地防火墙所引发的访问受限,你可以通过关闭防火墙得以解决。
[2] >>> 国内运营商网络限制、国家防火墙限制
你可能碰到过,同一台电脑某个网站在学校或公司可以正常访问,而回到老家省份后无法访问的情况,这很大可能就是由于网络运营商限制引发。
而对于国家防火墙限制的情况,例如在国内无法访问某些国外网站,例如 google.com
& youtube.com
等。
解决方法 >>> 最简单、快捷,究极的方法,你可以通过开启科学上网工具来解决上述问题。
科学上网
如果你:
- 本地网络环境正常
- 访问国外网站(例如 github/google.com)
- 工具官方源站点位于国外(例如 apt-get/conda/pip/wsl)
当遇到网络问题时,科学上网 >>>> 是最简单、最快捷、最究极的解决方法!!!
install_url
to use ShareThis. Please set it in _config.yml
.