SOCKS5代理的DNS由谁解析?分清本地解析与代理端解析

5 分钟阅读
快速回答:使用 SOCKS5 不代表目标域名一定由代理端解析。客户端可以先在本地解析,再把目标 IP 交给代理;也可以把目标域名交给代理处理。以 curl 为例,socks5:// 使用本地解析,socks5h:// 将目标域名交给代理解析。[1] 其他软件应核对自己的设置和文档。

同一台电脑、同一代理地址,一个工具可以访问域名,另一个却报解析失败,差异可能出在 DNS 处理方式。要定位问题,需要先分清正在解析的是代理入口域名,还是最终访问的网站域名。

一、两种解析方式分别做了什么?

DNS 的作用是帮助客户端根据域名查找地址等记录。SOCKS5 协议的目标地址类型包含 IPv4、IPv6 和域名。[2] 因此,客户端向代理提交“已解析地址”或“域名”是两种不同情况,不能只看软件界面上的 SOCKS5 标签判断。

比较项本地解析目标域名由代理端解析目标域名
客户端交给代理的目标解析后的目标 IP目标域名
优先检查的解析环境实际运行程序所在环境代理端的解析能力与访问条件
curl 常见前缀socks5://socks5h://
适用判断本地能正确解析且符合业务要求客户端支持传递域名且服务端允许

代理端解析不是通用的“更快模式”,也不保证页面地区、语言或内容符合预期。解析方式、出口位置和网站自身的地区判断是不同环节,应分别核验。

二、先分清两个域名,避免找错问题

代理入口域名

例如 proxy.example.com。在普通接入方式下,客户端首先需要找到代理入口才能建立连接。即使采用代理端解析目标域名,入口域名仍可能需要客户端解析。错误明确指向入口时,应先检查本地解析、网络连接和入口拼写。

目标网站域名

例如 service.example.com。它是通过代理访问的对象,解析位置由客户端如何提交目标决定。如果入口连接正常,但目标域名处理失败,再核对本地或代理端的目标解析路径。

内部域名还可能只在特定网络内可见。把内部域名交给公共代理,不能让其自动获得内部 DNS 或业务访问权限;此类测试应遵循组织的网络设计。

三、用两次受控请求比较,而不是同时改多个配置

先确认所购产品和客户端支持 SOCKS5,保留相同入口、端口、认证、目标和执行环境,只改变目标解析方式。以下域名与端口为占位示例,不是可直接使用的火云代理连接信息。

# 目标域名由本地解析
curl --proxy "socks5://proxy.example.com:1080" --noproxy "" "https://service.example.com/health"

# 目标域名交给代理解析
curl --proxy "socks5h://proxy.example.com:1080" --noproxy "" "https://service.example.com/health"

认证按产品说明补充,测试目标使用自有或获授权的只读接口。记录原始错误、时间和最终响应,不要只保存“失败”两个字;也不要把包含认证信息的完整日志公开。

对照结果下一步核对
本地解析失败,代理端解析成功检查本地目标解析与缓存;该结果只是线索,还需排除测试时网络变化
本地解析成功,代理端解析失败检查客户端是否真正传递域名、代理服务是否支持,以及目标是否为内部域名
两种方式都无法连接入口先核对入口域名、端口、认证与网络可达性
两种方式都成功,但内容不同对齐访问时间、Cookie、请求头与目标响应,避免直接归因于 DNS

四、上线前应记录哪些配置?

建议为每个运行节点记录客户端及版本、代理入口、目标域名、目标解析方式、认证类型和最近验证时间。把“使用 SOCKS5”进一步写成“使用哪个客户端、将域名交给哪一端”,交接时才不会遗漏关键差异。

使用火云代理时,先核对对应产品的协议与接入说明;本文中的 curl 语法不代表所有火云产品都采用相同入口、端口或认证参数。若还没有确认请求路径,可先阅读本机、来源公网与代理出口的区别,把来源认证和目标解析分开检查。

常见问题

socks5h 是另一种代理产品吗?

在 curl 中,它是控制目标域名处理方式的代理地址前缀,并不是需要另购的一种资源类型。是否支持,仍由客户端和服务端能力共同决定。

直接把网站域名改成 IP 可以彻底解决问题吗?

不能作为通用做法。HTTPS 证书校验、虚拟主机以及目标地址变化都可能受影响。诊断时应保留正确域名,不应通过关闭证书校验掩盖错误。

改成代理端解析,就能让所有流量都经过代理吗?

不能。它只涉及该客户端如何处理目标域名。其他程序、绕过规则和独立网络请求仍需分别确认。

参考资料

  1. everything curl:SOCKS proxy,两种前缀与解析位置。
  2. IETF RFC 1928,第 4 节,SOCKS5 请求的目标地址类型。