0

我正在尝试为正向代理构建 SOCKS 解决方案。我正在使用 dante SOCKS 代理,因为我听说像谷歌这样的大公司使用它作为转发代理解决方案。

在 SOCKS 服务器上,我允许基于 FQDN,例如 google.com:443

现在的问题是,当客户端构造数据包时,它会尝试解析 google.com 并获取 XXXX 并向 SOCKS 服务器发送连接请求。现在,当服务器收到数据包时,它会尝试重建数据包以发送到互联网,服务器再次进行 DNS 解析,如果服务器得到响应为 YYYY,那么它不允许客户端的请求作为客户端中的目标 IP请求与服务器解析的 IP 地址不同。

dante 客户端中有一个解决方案,它告诉客户端放置一个虚拟目标地址 0.0.0.1 并将请求发送到服务器,然后服务器正确处理它。然而,这给内部域带来了问题,因为在使用该 dns 解析方法后,每个请求都通过 dante 服务器:(

请告诉我

  1. 如果有任何解决方案可以帮助我在 DC 范围内维护 DNS 记录到期,例如 google.com 解析为 XXXX,我应该能够在 100 个 DNS 客户端上解析到相同的 IP 地址,以防记录发生变化,那么它应该立即在客户端更改/过期。

  2. 任何其他代理/socks 解决方案应该对转发代理的应用程序是透明的

4

2 回答 2

1

我继续使用此解决方案,以防有人对解决方案感到好奇。

我将 PowerDNS Auth Server 与 Pipe 后端一起使用。请求将登陆 PowerDNS 服务器进行解析,它将所有数据传递给带有 ABI 的 Pipe 后端脚本,脚本分析请求,查看它是否存在于缓存的变量/内存映射下,如果缓存命中,它将使用缓存的 DNS 记录响应,否则它将使用 DNS 解析器来解析该查询,就像解析器正常解析一样。

低于 4.1 的 PowerDNS 版本支持 Pipe 后端 + 解析器。这样,请求将首先到达管道后端脚本,如果脚本没有缓存任何条目,它将不会响应或将响应空白,然后 PowerDNS 将使用配置中提到的解析器服务器解析它。但是对于 4.1 及更高版本,解析器部分已从 PowerDNS Auth 服务器中删除,因此您需要通过 Pipe 后端脚本处理该行为。

于 2018-10-27T07:25:53.593 回答
0

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

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

于 2019-07-04T10:24:46.610 回答