centos下编译dnscrypt-wrapper(dnscrypt服务端)

dnscrypt可谓是防DNS污染的神器,是opendns官方的客户端工具,用于加密dns传输,有点类似http和https的区别。服务端和客户端都使用密钥进行传输,是所有抗DNS污染里面最强的手段了。然而国内的网络状况并不理想,很多时候连不上opendns(你懂的),或者我们搭建代理的时候想使用远程vps当地的dns解析结果来加速被wall网站的访问,这个时候想到能不能自己搭建一个dnscrypt的服务端呢?找了一圈,发现opendns官方并没有提供服务端源码╮(╯▽╰)╭……

不过在中国这个神奇的国度,总不缺乏大神,在v2ex上找到了@Cofyc 大神的自己写的dnscry-wrapper服务端,以下是原文:

[dnscrypt]写了一个 dnscrypt 的服务器端代理 dnscrypt-wrapper
———————————————————————-
https://github.com/Cofyc/dnscrypt-wrapper
dnscrypt 是 opendns.com 设计的给 dns 协议加密的协议,类似 ssl 与 http 的关系。
opendns 有实现一个客户端代理 dnscrypt-proxy,但目前以我所知只有 opendns 的 dns 服务器上有实现 dnscrypt 协议。
dnscrypt-wrapper 是从 dnscrypt-proxy 修改而来,给任意 dns server 在服务端增加 dnscrypt 加密支持。
适合想使用 dnscrypt 但想自架 dns 服务器的情形。
我在自己服务器上有架设一个测试 dns,可以使用以下命令测试:
$ sudo ./dnscrypt-proxy -a 127.0.0.1:55 –provider-name=2.dnscrypt-cert.yechengfu.com -r 106.187.34.45:53 –provider-key=4298:5F65:C295:DFAE:2BFB:20AD:5C47:F565:78EB:2404:EF83:198C:85DB:68F1:3E33:E952
$ dig -p 55 google.com @127.0.0.1
参考:
– http://dnscrypt.org/
– dnscrypt-proxy https://github.com/opendns/dnscrypt-proxy
– http://www.opendns.com/technology/dnscrypt/
嗯,于是我兴冲冲地跑去下载编译了,过程中遇到不少问题,折腾了两小时,原作者也比较热心解决我的问题,现在我把编译过程(CentOS x86)分享下,希望对你有帮助:

yum update

更新软件源。

yum -y install autoconf gettext libltdl* libevent git libsodium libevent* libtool-ltdl-devel
yum -y groupinstall 'Development Tools'

libsodium这个库centos可能没有……于是自己下载编译:

下载地址http://download.libsodium.org/libsodium/releases/

我选择的是当前最新的libsodium(下载可能会卡,毕竟服务器在国外):

cd ~
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.10.tar.gz
tar xf libsodium-1.0.10.tar.gz
cd libsodium-1.0.10
CFLAGS="-O3 -fPIC" ./configure
make
make install
ldconfig

Centos 升级 autoconf 到最新版本

至此libsodium安装完毕。

centos软件源上的libevent也不是最新的,而服务端要求2.0以上的版本,软件源提供的是1.4版本,因此导致编译出错。二话不说跑去官网下载源码编译:

下载地址:http://libevent.org/

我选择的是当前最新的稳定版本:

release-2.1.6-beta
2016.08.27

下载解压:

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

至此libevent安装完毕。

现在可以下载dnscrypt-wrapper源码来编译了:

cd ~
git clone --recursive git://github.com/Cofyc/dnscrypt-wrapper.git
cd dnscrypt-wrapper
make configure
./configure
make
make install
点赞