2012年3月27日星期二

AutoProxy与SOCKS代理DNS

Firefox的network.proxy.socks_remote_dns选项可设置在使用SOCKS5代理的时候,DNS解析是在本地设置的服务器上还是在SOCKS代理服务器上。用AutoProxy时,对Twitter这样DNS被污染的网站,按理说socks_remote_dns必须为真才能打开。可是在about:config里面把这个选项关掉后,Twitter还是能打开。

后来怀疑是Autoproxy的问题。以安全模式启动Firefox后,插件都被禁用,该开关选项生效了。开着,Twitter能打开;关了,Twitter打不开。

用Wireshark抓包,可以看到用AutoProxy(版本0.4b2.2011041023)的时候,不管socks_remote_dns是什么值,都看不到DNS数据包。又在用户档案的extensions/autoproxy@autoproxy.org里面查找这个选项,在chrome/content/proxy.js里面看到:
/**
 * Refresh proxy name & available proxy servers
 *
 * newProxyInfo(type, host, port, socks_remote_dns, failoverTimeout, failoverProxy)
 */
proxy.server = []; proxy.getName = [];
for each (var conf in proxy.validConfigs) {
  proxy.getName.push(conf.name);
  proxy.server.push(pS.newProxyInfo(conf.type, conf.host, conf.port, 1, 0, null));
}
可以看到AutoProxy确实把socks_remote_dns设置成了1,所以在about:config里面设置也无效了。这样做的好处是用户无需知道这个选项,也可以打开被DNS污染的网站,但是最好在文档里说明一下。

没有评论:

发表评论