DNS 的 SOCKS5 代理如何在浏览器中工作?

Posted

技术标签:

【中文标题】DNS 的 SOCKS5 代理如何在浏览器中工作?【英文标题】:How does SOCK 5 proxy-ing of DNS work in browsers? 【发布时间】:2015-10-13 09:54:21 【问题描述】:

浏览器可以通过 SOCKS 5 代理 DNS 请求。我不明白这个过程是如何工作的。

如果我错了,请纠正我。在正常的 DNS 操作中,程序通过其操作系统进行 DNS 解析,而操作系统又被配置为访问特定的 DNS 服务器并在那里进行查询。因此,在正常操作中,浏览器不应自行通过网络进行 DNS 查询。

现在,使用 SOCKS 代理,浏览器需要进行自己的查询。浏览器如何知道代理隧道的另一端将存在哪个 DNS 服务器?

【问题讨论】:

【参考方案1】:

浏览器不会自己进行 DNS 查找。我不知道是否存在浏览器将 DNS 与 DNS 服务器对话的实际情况。但是在配置了 SOCKS5 代理后,浏览器只要求 SOCKS5 使用主机的主机名而不是其 IP 地址连接到主机。然后由 SOCKS5 代理进行查找。

我知道这一点是因为我维护了一个 SOCKS5 实现。

【讨论】:

【参考方案2】:

这取决于您的浏览器。例如,Firefox 将主机名发送到 SOCKS 代理而不解析它。您可以通过 Wireshark 确认。

PS。假设您使用的是 SOCKS5/4a 代理。 SOCKS4 不支持主机名。参考:https://en.wikipedia.org/wiki/SOCKS#SOCKS4a

【讨论】:

【参考方案3】:

如果不使用firefox about:config更改dns设置,重新配置windows Adapter Interface并设置

DNS2SOCKS.exe /la:socks.log 127.0.0.1:1080 8.8.8.8:53 127.0.0.1:53

这些是 google dns 的默认设置

见DNS through socks proxy. How do I change windows settings for domain resolution.

【讨论】:

【参考方案4】:

有 3 个可能的选项:

软件仍然使用系统 DNS 进行主机名解析,并命令 Socks 服务器连接到 IP。这可能是默认模式或在 Socks 延迟实现的情况下唯一支持的模式。

软件命令 Socks 服务器连接到主机名。此模式可能需要额外配置; Firefox 和旧版 Opera 具有启用此模式的特殊标志。

软件使用 UDP-over-Socks 手动执行 DNS 查找,并命令 Socks 服务器连接到 IP。最疯狂的模式,它需要软件知道 DNS 地址,但理论上是可能的。

【讨论】:

【参考方案5】:

代理目标地址可以是 ipAddress 或 DOMAINNAME。浏览器使用 DOMAINNAME 。

【讨论】:

以上是关于DNS 的 SOCKS5 代理如何在浏览器中工作?的主要内容,如果未能解决你的问题,请参考以下文章

手机浏览器如何设置socks5代理?

如何在Linux下配置socks5代理

如何使用SOCKS5代理服务器?

如何为chrome浏览器设置socks5代理?

如何为chrome浏览器设置socks5代理

如何使用SOCKS5代理服务器