admin 发表于 2012-11-19 17:30:10

利用DNSMASQ获得正确DNS解析

至于DNS在中国被污染的这回事,不用多解释了,正确的DNS解析对于使用squid透明代理进行翻墙极为重要,因为在squid在收

到http请求前,域名已经在客户端先解析了。

以下说明如何获得正确的dns解析。首先,你必须要有一台境外服务器,笔者用的是一台境外VPS。在这台VPS上,安装isc bind。

(当然dnsmasq也应该可以。)

配置 /etc/named.conf options部分
options {
      listen-on port 3722 { any; };// 要点,必须绑定非标准端口(non 53 UDP)
      directory       "/var/named";
      dump-file       "/var/named/data/cache_dump.db";
      statistics-file "/var/named/data/named_stats.txt";
      memstatistics-file "/var/named/data/named_mem_stats.txt";
      allow-query   { any; };
      recursion yes;      forward only;
      forwarders { 208.67.222.222; 208.67.220.220; }; // 这里选取VPS访问最快的DNS服务器,笔者选得是OpenDNS,毫秒级。
      max-cache-size 32M;
      cleaning-interval 480;
      lame-ttl 1800;
      max-ncache-ttl 166000;
      max-cache-ttl 86400;
      edns-udp-size 512;
      max-udp-size 512;
};

在网关上,安装dnsmasq,配置/etc/dnsmasq.conf

no-resolv
server=VPS的IP#3722// 配置这里访问非标准端口!
bogus-priv
domain-needed
filterwin2k
no-hosts
cache-size=8192
stop-dns-rebind
neg-ttl=3600

~好了,现在你的dnsmasq应该能解析出正确的dns了。看来GFW对DNS只做了UDP 53端口的干扰。

最后,以彼之道,施彼之身。利用iptables劫持局域网用户的DNS访问,以保证解析到正确的IP。iptables -t nat -A PREROUTING -p

udp -m udp --dport 53 -j REDIRECT --to-ports 53用dig 实验:

第一次,用google dns解析,得出被污染的解析记录

第二次,用DNSMASQ解析,得出正确的解析记录
页: [1]
查看完整版本: 利用DNSMASQ获得正确DNS解析