关于 SOCKS 代理的远端 DNS 解析

经常使用 SOCKS 代理服务器的同志们会发现一种现象,即使 SOCKS 代理服务器设置正确,某些网站仍然无法访问,比如某著名微博网站。其一般原因都是 DNS 污染 (DNS cache poisoning)。

值得庆幸的是 SOCKS 5 可以通过将域名直接提交给 SOCKS 服务器来进行远端 DNS 解析,即 Address Type 0x03。DNS 服务是 Internet 的基础服务,要求 DNS 解析应当尽量地快,所以浏览器默认不会使用远端 DNS 解析。不过当使用自动代理设置脚本(.pac )时,以 SOCKS5 而不是 SOCKS 返回代理地址,可以支持远端 DNS 解析。

网友 forkei 的重要评论

chrome 的 Proxy Switchy 1.4.2 版本插件可以很好的解决这个问题。Firefox 的 FoxyProxy 插件也可以很好的解决 DNS 污染。支持插件扩展功能的浏览器功能就是强大。IE 内核浏览器和 opera 只有通过 polipo 或者 privoxy 将 socks 代理转为 http 代理才行,麻烦。

《关于 SOCKS 代理的远端 DNS 解析》上有25条评论

  1. chrome 的Proxy Switchy 1.4.2 版本插件可以很好的解决这个问题。

    Firefox 的FoxyProxy 插件也可以很好的解决DNS 污染。

    支持插件扩展功能的浏览器功能就是强大。

    IE 内核浏览器和opera 只有通过polipo 或者 privoxy 将socks 代理转为http 代理才行,麻烦。

    1. 请问具体怎么做呢?chrome的proxyswitch该怎么设置才能远程解析?我抓包看过依然用本地的解析。

  2. ff的这个pac文件不支持remote dns真是要命!只能改hosts文件才行。

  3. forkei :
    chrome 的Proxy Switchy 1.4.2 版本插件可以很好的解决这个问题。
    Firefox 的FoxyProxy 插件也可以很好的解决DNS 污染。
    支持插件扩展功能的浏览器功能就是强大。
    IE 内核浏览器和opera 只有通过polipo 或者 privoxy 将socks 代理转为http 代理才行,麻烦。

    在Chrome浏览器下使用了proxy switchy扩展设置还是唯独访问不了Twitter,其他的YouTube、facebook等等其他墙外都正常啊,想请教下关于switchy有没有哪里特殊的设置呢? 以下是自己的配置信息
    Proxy Profiles ProfilesName:Yousri
    Manual Configuration
    SOCKS Host 127.0.0.1 Port 7070 SOCKS v5
    Switch Rules
    Enable Switch Rules
    RuleName URL Pattern PatternType ProxyProfile
    Twitter *://twitter.com/* Wildcard Yousri
    Other (twitter|facebook|bullogger) RegExp Yousri

    可是终究还是无法实现,不知道有么有联系方式可以请教下呢?

  4. @Yousri
    也许不能使用 Rules,至少从我这来看是这样...我发现 Chrome 其实也是用的 .pac 脚本,但是 Chrome 的 .pac 脚本使用的是 SOCKS5 命令而不是平常的 SOCKS 命令。

  5. 更换使用了最新的dev版本终于正常了,看来原先使用的最新的beta版不靠谱啊 可能chrome dns问题在beta版还是未修正

  6. 值得庆幸的是 SOCKS 5 协议增加了对 UDP 数据包的支持,DNS 查询是通过 UDP 传输的,所以我们可以使 DNS 查询数据包也走 SOCKS 5 代理来进行远端 DNS 解析(Remote DNS Lookup)。

    firefox的network.proxy.socks_remote_dns是把域名传递给socks5服务器,让socks5服务器去解析。上面所说的,让DNS查询数据包(UDP数据)通过socks5协议去传输,我还没见过相关应用,有这么用的吗

  7. 值得庆幸的是 SOCKS 5 协议增加了对 UDP 数据包的支持,DNS 查询是通过 UDP 传输的,所以我们可以使 DNS 查询数据包也走 SOCKS 5 代理来进行远端 DNS 解析(Remote DNS Lookup)。

    firefox的network.proxy.socks_remote_dns是将域名传递给socks5服务器区解析。而上面所提到的通过socks5对udp数据包的支持,把dns查询数据也通过socks5协议传输,有这样的应用吗

  8. Chrome下还是无法解决远程DNS解析的问题,即使使用了Proxy Switchy也是,Firefox可以翻的地方Chrome却无法翻……是不是必须1.4.2版本?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注