科学上网要求使用未被污染的 DNS ,但使用 ISP 提供之外的 DNS 通常会导致使用者无法享受各种 CDN 带来的加速福利。
为此,小光编写了一个方便实用的小脚本供大家参考,使用此脚本时请配合 iptables 中的 geoip 模块共同使用,将目标为墙内的 IP 分离出来进行直接连接,以便使其真正发挥效果。
在例子 "|08|bilibili|03|com" 中,第一个08是指 “bilibili” 这一域名包含8个字节,03则指“com”包含3个字节,您可以依此规则根据自己的需要增加修改这个列表。
<code class="lang-bash"># Create new chain
iptables -t nat -N DNSCRYPTPROXY
# MiniLight's whitelist
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|05|baidu|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|06|taobao|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|08|bilibili|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|05|hdslb|03|net" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|05|hdslb|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|05|iqiyi|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|02|qq|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|04|sina|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|06|wechat|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|05|weibo|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|03|163|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|07|tencent|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|06|alipay|03|com" --algo bm -j RETURN
iptables -t nat -A DNSCRYPTPROXY -m string --hex-string "|06|alicdn|03|com" --algo bm -j RETURN
# redirected DNS packet to dnscrypt-proxy
iptables -t nat -A DNSCRYPTPROXY -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:5353
iptables -t nat -A DNSCRYPTPROXY -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:5353
# redirected DNS packet to DNSCRYPTPROXY chain
iptables -t nat -A OUTPUT -p tcp --dport 53 -j DNSCRYPTPROXY
iptables -t nat -A OUTPUT -p udp --dport 53 -j DNSCRYPTPROXY</code>