导航

搭建 dnscrypt-wrapper

作用加密 DNS,防止 DNS 感染和国外域名解析 IP 错误,,阻止 ISP 广告劫持。

服务器

安装 libsodium

wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar -zxvf LATEST.tar.gz
cd libsodium-*/
./configure && make && make install
ldconfig

安装 libevent2

cd
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar xf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr
make && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig

编译 dnscrypt-wrapper

apt-get update && apt-get upgrade -y
apt-get install git
cd
git clone --recursive git://github.com/Cofyc/dnscrypt-wrapper.git
cd dnscrypt-wrapper
make configure
./configure && make && make install
###  完成编译 ###
install -d -m 755 '/usr/local/sbin'
install -p dnscrypt-wrapper '/usr/local/sbin'

配置

cd
mkdir dns
cd dns
dnscrypt-wrapper --gen-provider-keypair
### 生成 provider key 后面会用到 ###
Generate provider key pair... ok.
Provider public key: 865C:A9B4:D1A3:8C2B:A6AD:F2F7:DD8E:CExx:B4CA:507F:ED3C:B268:AFCB:4788:19D3:EBxx

生成时效密钥 1.key(用于加密&验证)和证书 1.cert

dnscrypt-wrapper --gen-crypt-keypair --crypt-secretkey-file=1.key
dnscrypt-wrapper --gen-cert-file --crypt-secretkey-file=1.key --provider-cert-file=1.cert \
                         --provider-publickey-file=public.key --provider-secretkey-file=secret.key \
                         --cert-file-expire-days=365

运行 dnscrypt-wrapper 程序要在 dns 目录:
-VV 前台调试
-d 后台运行
执行

dnscrypt-wrapper --resolver-address=8.8.8.8:53 --listen-address=0.0.0.0:5353 \
                   --provider-name=2.dnscrypt-cert.bpplpp.com \
                   --crypt-secretkey-file=1.key --provider-cert-file=1.cert -VV -d

[26070] 03 Jan 09:20:25.790 [info] [main.c:470] Crypt public key fingerprint for 1.key: 83FD:56B2:DC00:7EF2:D49E:44xx:87B:DFCE:03CC:CA9A:49D8:DAD8:B26F:B84B:6FB4:B0xx

注:
--resolver-address=8.8.8.8:53 上游 DNS
--provider-name= 必须 2.dnscrypt-cert. 开头,客户端配置会用到

查询进程 ps -ef
杀进程 kill -9 PID

端口

因为我开了 iptables,打开防火墙端口:
路径:/etc/iptables.up.rules
添加:-A INPUT -p tcp -m tcp --dport 5353 -j ACCEPT
生效:iptables-restore < /etc/iptables.up.rules
查询开放:http://tool.chinaz.com/port

客户端

程序 dnscrypt-proxy
面板 dnscrypt-winclient
复制 dnscrypt-winclient.exe 到 dnscrypt-proxy 目录,新建 dnscrypt-resolvers.csv。

配置
打开 dnscrypt-resolvers.csv

Name                          MyDNS
Full name                    MyDNS
Description                MyDNS
Location
Coordinates
URL
Version                     1
DNSSEC validation             no
No logs                     no
Namecoin                       no
Resolver address               ip:port
Provider name                 2.dnscrypt-cert.bpplpp.com
Provider public key         前面已提到
Provider public key TXT record

管理员运行 dnscrypt-winclient.exe 自动设定 DNS 为 127.0.0.1,并手动检查,删除其它 DNS 以排除影响。

测试连接:先刷新本地 DNS:ipconfig /flushdns
未改 DNS

C:\Users\Administrator>nslookup google.com
服务器:  public2.alidns.com
Address:  223.6.6.6

非权威应答:
名称:    google.com
Addresses:  2404:6800:4008:803::200e
          216.58.200.46

启用后,未成功

C:\Users\Administrator>nslookup google.com
DNS request timed out.
    timeout was 2 seconds.
服务器:  UnKnown
Address:  127.0.0.1

DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.

查看解析 IP 是否正确(不能 Ping 通),是否能阻挡 ISP 广告,效果需要时间测试。

dnscrypt-wrapper:
https://github.com/cofyc/dnscrypt-wrapper/issues

服务器安装:
https://www.logcg.com/archives/981.html
http://03k.org/centos-make-dnscrypt-wrapper.html

更多参数:
http://03k.org/dnscrypt-wrapper-usage.html

其它:
这是安装 DnsCrypt 脚本,和上面的不同,未测试。

wget https://raw.github.com/simonclausen/dnscrypt-autoinstall/master/dnscrypt-autoinstall.sh chmod +x dnscrypt-autoinstall.sh ./dnscrypt-autoinstall.sh

2017-01-03
选择表情