使用DNS加密避免DNS污染
普通DNS协议不支持加密传输,DNS查询时可以被网络中的其它服务伪造数据包响应,查询到的域名IP地址是伪造的,称为“DNS污染”。
为了避免“DNS污染”,有这几种方案:DNSSEC、DNSCrypt、DNS-over-TLS (DoT)、DNS-over-HTTPS (DoH)。除了DNSSEC,其余三种协议都可以避免中间人窃听,是比较安全的传输协议。
DNS加密网络如下:
在Linux中安装DNSCrypt Server
在使用DNS加密网络时,可以使用公共服务器,也可以使用VPS搭建私有服务器。使用公共服务器时,请忽略本节。
参考How to setup your own DNSCrypt server in less than 10 minutes与 DNSCrypt server Docker image,使用Docker安装DNSCrypt Server——这是最便捷的方法。端口号可以自定义,不必占用HTTPS 443端口。
mkdir -p /etc/dnscrypt-server/keys
# Change the 'example.com' and '192.168.1.1:443'
docker run --name=dnscrypt-server -p 443:443/udp -p 443:443/tcp --net=host \
--ulimit nofile=90000:90000 --restart=unless-stopped \
-v /etc/dnscrypt-server/keys:/opt/encrypted-dns/etc/keys \
jedisct1/dnscrypt-server init -N example.com -E '192.168.1.1:443'
# Show you DNS Stamp: sdns://xxx...
cat /etc/dnscrypt-server/keys/provider-info.txt
在Windows中安装DNSCrypt客户端
在Windows中,要使用DNSCrypt必需安装客户端,否则没法提供加密的DNS服务。仅使用公共服务器时,可以使用Simple DNSCrypt快速上手。当需要使用私有服务器时,还是命令行的dnscrypt-proxy才是最合适的。
因为在Simple DNSCrypt界面中修改设置之后,保存时会覆盖dnscrypt-proxy.toml
,造成手动修改该文件的内容丢失,所以,当需要使用私有服务器时就不推荐使用Simple DNSCrypt。Simple DNSCrypt,其本质是在dnscrypt-proxy的基础上提供一个用户界面。
选择一:使用Simple DNSCrypt,仅使用公共服务
下载安装之后,在界面中修改语言到Chinese Simple
,再勾选DNSCrypt服务
、勾选哪些网卡,在可用服务中勾选cloudflare
或quad9-dnscrypt-ip4-nofilter-pri
。到此,可以使用DNS加密服务了。界面中开启日志,查看是否成功。
选择二:使用dnscrypt-proxy,方便添加私有服务器
手工安装dnscrypt-proxy
时,见: https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-Windows
下载最新的版本,如dnscrypt-proxy-win64-2.0.31.zip
,解压。复制其中的example-dnscrypt-proxy.toml
到dnscrypt-proxy.toml
。
在dnscrypt-proxy.toml
中添加Static服务器,如下:
server_names = ["qzqDns", "cloudflare", "quad9-dnscrypt-ip4-nofilter-pri"]
...
[static]
[static.'qzqDns']
stamp = 'sdns://xxx...'
运行服务,查看一切是否正常:
.\dnscrypt-proxy.exe
修改网络适配器中的DNS到127.0.0.1
。浏览网站,验证DNS解析是否正常。一切正常之后,再Ctrl+C
停止服务。
最后安装系统服务:双击service-install.bat
即可。
提升国内域名解析速度
当使用国外的DNS加密服务器时,因网络延时造成解析速度比较慢。要提升国内网站的浏览体验,需把国内域名解析转发到114.114.114.114
。如下添加forwarding-rules.txt
:
# forwarding-rules.txt
cn 114.114.114.114
baidu.com 114.114.114.114
bing.com 114.114.114.114
bdimg.com 114.114.114.114
bdstatic.com 114.114.114.114
bing.net 114.114.114.114
163.com 114.114.114.114
126.com 114.114.114.114
126.net 114.114.114.114
127.net 114.114.114.114
sohu.com 114.114.114.114
huawei.com 114.114.114.114
sina.com 114.114.114.114
sogou.com 114.114.114.114
sogoucdn.com 114.114.114.114
netease.com 114.114.114.114
yeah.net 114.114.114.114
taobao.com 114.114.114.114
tmall.com 114.114.114.114
vmall.com 114.114.114.114
jd.com 114.114.114.114
360buyimg.com 114.114.114.114
alicdn.com 114.114.114.114
tanx.com 114.114.114.114
aliyun.com 114.114.114.114
alibaba.com 114.114.114.114
alibabacloud.com 114.114.114.114
aliapp.org 114.114.114.114
aliapp.org 114.114.114.114
intel.com 114.114.114.114
eset.com 114.114.114.114
microsoft.com 114.114.114.114
windows.com 114.114.114.114
msedge.net 114.114.114.114
visualstudio.com 114.114.114.114
microsoftonline.com 114.114.114.114
microsofttranslator.com 114.114.114.114
msn.com 114.114.114.114
live.com 114.114.114.114
office.com 114.114.114.114
microsoftemail.com 114.114.114.114
aspnetcdn.com 114.114.114.114
windowsupdate.com 114.114.114.114
xunlei.com 114.114.114.114
sandai.net 114.114.114.114
qq.com 114.114.114.114
88cdn.com 114.114.114.114
weibo.com 114.114.114.114
youku.com 114.114.114.114
weixin.com 114.114.114.114
iqiyipic.com 114.114.114.114
ppstream.com 114.114.114.114
qy.net 114.114.114.114
iqiyi.com 114.114.114.114
akamaihd.net 114.114.114.114
msecnd.net 114.114.114.114
ip138.com 114.114.114.114
staticfile.org 114.114.114.114
然后,在dnscrypt-proxy.toml
中启用forwarding_rules = 'forwarding-rules.txt'
。
最后,点击service-restart.bat
重启服务。
在Android中使用加密DNS
在新版本的Android 9中,提供“无线和网络”->“加密DNS”选项,可指定加密DNS服务为1dot1dot1dot1.cloudflare-dns.com
。
有可用的DNS如下:
Google: dns.google
Cloudflare: 1dot1dot1dot1.cloudflare-dns.com
Quad9: dns.quad9.net
CleanBrowsing: security-filter-dns.cleanbrowsing.org
红鱼DNS: dns.rubyfish.cn