考虑目前DNS污染等情况。 安装了DNSMASQ等软件解决一下。

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:shnatsel/dnscrypt
sudo apt-get update
sudo apt-get install dnscrypt-proxy dnsmasq

添加iptables规则 

# Generated by iptables-save v1.4.12 on Fri Jan  9 15:12:34 2015
*mangle
:PREROUTING ACCEPT [16:2761]
:INPUT ACCEPT [16:2761]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [13:2482]
:POSTROUTING ACCEPT [13:2482]
-A PREROUTING -p udp -m udp --sport 53 -m u32 --u32 "0&0x0F000000=0x05000000 && 0>>22&0x3C@8&0x810F=0x8000 && 0>>22&0x3C@12&0xFFFF=0x0000" -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|042442B2|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|0807C62D|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|1759053C|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|253D369E|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|2E52AE44|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|31027B38|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|364C8701|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|3B1803AD|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|402158A1|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4021632F|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4042A3FB|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4168CAFC|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|41A0DB71|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|422DFCED|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|480ECD63|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|480ECD68|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4A7D2766|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4A7D2771|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4A7D7F66|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4A7D9B66|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4D04075C|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|4E10310F|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|5D2E0859|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|76053106|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|80797E8B|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|9F6A794B|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|A9840D67|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|BC050460|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|BDA31105|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|C043C606|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|C504040C|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|CA6A0102|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|CAB50755|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|CB620741|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|CBA1E6AB|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|CF0C5862|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D0381F2B|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D1244921|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D155E58A|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D1913632|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D1DC1EAE|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D35E4293|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D5A9FB23|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D8DDBCB6|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|D8EAB30D|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|F3B9BB27|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|F9812E30|" --from 60 --to 180  -j DROP
-A PREROUTING -p udp -m udp --sport 53 -m string --algo bm --hex-string "|FD9D0EA5|" --from 60 --to 180  -j DROP

COMMIT
# Completed on Fri Jan  9 15:12:34 2015
# Generated by iptables-save v1.4.12 on Fri Jan  9 15:12:34 2015
*filter
:INPUT ACCEPT [784:110498]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [488:63285]
COMMIT
# Completed on Fri Jan  9 15:12:34 2015

直接保存到 /etc/iptables.set


更改网卡设置 /etc/network/interface 添加如下项目

auto eth0
iface eth0 inet dhcp
        dns-nameservers 127.0.0.1
        pre-up iptables-restore</etc/network/iptables.up.rules

        up route add -net 192.168.100.0 netmask 255.255.255.192 gw 192.168.10.2 eth1
        up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.10.2 eth1

auto eth0:1
iface eth0:1 inet static
       address 1.2.3.4
       netmask 255.255.224.0

启动iptables

sudo iptables-restore</etc/network/iptables.up.rules

更改 dnscrypt-proxy设置 /etc/default/dnscrypt-proxy

sudo sed -i "s/127.0.0.2:53/127.0.0.1:54/g" /etc/deault/dnscrypt-proxy

更改dnsmasq设置 /etc/dnsmasq.conf

cache-size=5120
all-servers
#114 DNS
server=114.114.114.114
server=114.114.115.115

server=127.0.0.1#54

重启 dnscrypt-proxy, dnsmasq


添加启动 /etc/rc.local

/etc/init.d/dnscrypt-proxy start
/etc/init.d/dnsmasq start


dnscrypt-proxy 如果启用 tcp-only 可能有如下错误:

;; Truncated, retrying in TCP mode.


另: 如果dnscrypt-proxy 不能用的话,可以到github 去更新 dnscrypt-resolvers.csv

地址:dnscrypt-proxy