Proxy Dante SOCKS代理的DNS解决方案

Proxy Dante SOCKS代理的DNS解决方案,proxy,dns,socks,dante,Proxy,Dns,Socks,Dante,我正在尝试为转发代理构建SOCKS解决方案。我使用dante SOCKS代理,因为我听说像谷歌这样的大公司使用它作为转发代理解决方案 在SOCKS服务器上,我允许基于FQDN的,比如google.com:443 现在的问题是,当客户端构造数据包时,它会尝试解析google.com并获取X.X.X.X,然后向SOCKS服务器发送连接请求。现在,当服务器接收到数据包时,它尝试重建数据包以发送到internet,服务器再次执行DNS解析,如果服务器得到的响应为Y.Y.Y.Y,则它不允许客户端的请求,因

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

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

现在的问题是,当客户端构造数据包时,它会尝试解析google.com并获取X.X.X.X,然后向SOCKS服务器发送连接请求。现在,当服务器接收到数据包时,它尝试重建数据包以发送到internet,服务器再次执行DNS解析,如果服务器得到的响应为Y.Y.Y.Y,则它不允许客户端的请求,因为客户端请求中的目标IP与服务器解析的IP地址不同

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

请让我知道

  • 如果有任何解决方案可以帮助我在DC范围内维护DNS记录到期,例如google.com解析为X.X.X.X,我应该能够在DNS客户端的100上解析为相同的IP地址,如果记录发生更改,则应立即在客户端更改/到期

  • 任何其他代理/socks解决方案,对于前向代理应用程序应是透明的


  • 我继续使用这个解决方案,以防有人好奇地看到这个解决方案

    我使用带有管道后端的PowerDNS身份验证服务器。请求将到达PowerDNS服务器进行解析,它将使用ABI将所有数据传递到管道后端脚本,脚本分析请求,查看它是否存在于缓存变量/内存映射下,如果缓存命中,它将使用缓存的DNS记录进行响应,否则它将使用DNS解析lver可以像解析程序正常解析一样解析该查询


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

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

    PS.假设您使用的是SOCKS5/4a代理。SOCKS4不支持主机名。参考: