我正试图为前向代理构建一个SOCKS解决方案。我正在使用但丁袜子代理,因为我听说像谷歌这样的大公司使用它作为正向代理解决方案。
在SOCKS服务器上,我允许基于FQDN的类似google.com:443
现在的问题是,当客户端构建数据包时,它尝试解析google.com并获取X.X并向SOCKS服务器发送连接请求。现在,当服务器接收到数据包时,它尝试重构数据包发送到internet,服务器再次执行DNS解析,如果服务器获得响应为Y.Y,则它不允许客户端请求,因为客户端请求中的目标IP与服务器解析的IP地址不同。
在dante客户机中有一个解决方案,它告诉客户端放置一个虚拟目标地址0.0.0.1,然后将请求发送到服务器和服务器,然后正确地处理它。然而,这会给内部域造成问题,因为在使用dns解析方法之后,每个请求都会通过dante服务器:(
请让我知道
发布于 2018-10-27 07:25:53
我提出了这个解决方案,以防有人对这个解决方案感兴趣。
我使用了带有管道后端的PowerDNS Auth。请求将到达PowerDNS服务器以进行解析,它将所有数据传递给带有ABI的管道后端脚本,脚本分析请求,查看它是否存在于缓存变量/内存映射下,如果它被缓存命中,它将使用缓存的DNS记录响应,否则它将使用DNS解析器来解析该查询,就像解析器解析一样。
低于4.1的PowerDNS版本支持管道后端+解析器。这样,请求将首先登录到管道后端脚本,如果脚本没有缓存任何条目,它将不会响应或将响应为空白,然后PowerDNS将使用配置中的上述解析器服务器解析它。但是,使用Version4.1和更高版本,解析器部分将从PowerDNS Auth服务器中删除,因此您需要通过管道后端脚本来处理这种行为。
发布于 2019-07-04 10:24:46
这取决于你的客户。例如,Firefox向SOCKS代理发送主机名,而不解析它。你可以通过Wireshark确认。
PS。假设您使用的是SOCKS5 5/4a代理。SOCKS4不支持主机名。参考文献:https://en.wikipedia.org/wiki/SOCKS#SOCKS4a
https://stackoverflow.com/questions/49171466
复制相似问题