DNS 解析故障排查与修复

阅读模式

如何解决 DNS 服务器问题导致的连接失败

错误信息

以下是与 DNS 解析相关的常见错误信息及其可能的原因:

  • Temporary failure in name resolution:系统在解析域名时遇到临时故障。
  • Max retries exceededNewConnectionError:代理服务器连接失败。
  • Cannot connect to proxy:无法建立与代理的连接。

这些错误大多与 DNS 解析问题 相关。DNS(域名系统)负责将域名转换为 IP 地址。当 DNS 出现问题时,网络请求无法正常完成。


一、常见 DNS 解析问题的原因

  1. DNS 服务器设置不正确:使用的 DNS 服务器无法正常工作或设置错误。
  2. DNS 缓存失效或损坏:缓存中的域名与 IP 地址映射已过期或错误。
  3. 网络连接中断:客户端与 DNS 服务器之间的网络连接不通畅。
  4. 防火墙或代理阻止:防火墙配置可能阻止 DNS 请求或代理访问。
  5. 代理服务器问题:代理服务器不稳定或配置错误。

二、解决 DNS 服务器问题的方案

可参考:阿里云 DNS 设置文档

1. 检查并更换 DNS 服务器

临时修改 DNS 服务器(Linux/macOS)

使用以下命令临时修改 DNS 服务器:

1
sudo vim /etc/resolv.conf

添加以下内容,使用公共 DNS(如 Google 或 Cloudflare DNS):

1
nameserver 223.5.5.5
2
nameserver 223.6.6.6

Windows 系统更换 DNS

  1. 打开 控制面板网络和共享中心更改适配器设置
  2. 右键点击网络连接 → 属性 → 双击 IPv4
  3. DNS 服务器 一栏填入 223.5.5.5223.6.6.6

2. 清除 DNS 缓存

清除缓存可以解决解析错误。

  • Linux
1
sudo systemd-resolve --flush-caches
  • Windows: 打开命令提示符并执行:
1
ipconfig /flushdns

3. 测试 DNS 解析

使用 nslookupdig 命令测试 DNS 解析是否正常。

  • Linux/macOS
1
nslookup www.16yun.cn
2
dig www.16yun.cn
  • Windows
    在命令提示符执行:
1
nslookup www.16yun.cn

如果出现超时或错误信息,则表明 DNS 解析存在问题,检查网络连接并尝试更换 DNS 服务器。


4. 检查网络连接和代理配置

网络连通性测试

确保与 DNS 服务器和代理服务器的连接正常。

1
ping 223.5.5.5
2
curl -I https://www.baidu.com

检查代理配置

确保代理服务器地址和端口配置正确,并且代理服务器正常运行。


5. 修改代码重试逻辑

如果 DNS 服务器偶尔不稳定,可以增加请求的重试次数或设置重试间隔。

1
import requests
2
from requests.adapters import HTTPAdapter
3
from urllib3.util.retry import Retry
4
5
session = requests.Session()
6
retries = Retry(total=5, backoff_factor=0.2, status_forcelist=[500, 502, 503, 504])
7
session.mount('https://', HTTPAdapter(max_retries=retries))
8
9
try:
10
response = session.get('https://www.baidu.com')
11
print(response.status_code)
12
except requests.exceptions.RequestException as e:
13
print(f"Request failed: {e}")

三、总结

出现 "Temporary failure in name resolution""Cannot connect to proxy" 等错误,通常与 DNS 解析问题或代理连接不稳定有关。通过检查和更换 DNS 服务器、清除缓存、测试网络连通性以及优化重试逻辑,可以有效解决这些问题。
若问题依然存在,请联系网络管理员或代理服务器提供商进行进一步排查。