追梦人博客Dream.ren

追梦人 Dream.ren

Pure DNS搭建过程(CentOS6)


2017.4.24更新,辅节点unbound服务异常,已更换为主节点的方案,各位不必等辅节点的教程了,这个就是了。
此文以CentOS6 64位系统为例记录Pure DNS主节点的搭建过程,仅供参考。注意:需要使用国内非港澳台vps,海外vps搭建完照样无卵用的!另外,另外,请不要用vpn、ss(r)的思维看DNS,Pure DNS的海外加速依赖是SNI代理,代理一旦失效加速功能就废了!(PS.配置文件中的SNI代理在7月份的时候好像就已经废了!)请酌情搭建,自用的话强烈不推荐使用此教程。
Pure DNS主节点采用Dnsmasq→Bind→Overture三种DNS依次递归的形式进行服务,充分利用每种DNS服务的优势。Dnsmasq监听531端口,负责广告过滤等工作;Bind监听530端口,负责特殊域名解析和其他高级的操作,Overture监听53端口,负责常规域名的智能解析和对外服务。
可能需要用到的工具:Putty(ssh终端)、WinSCP(sftp文件管理工具)。
下载配置文件(内含适用于Linux64位的Overture)并解压。
1、安装dnsmasq、Bind

yum install dnsmasq bind -y

2、设置dnsmasq、bind开机自启(Bind服务名为“named”)

chkconfig dnsmasq on
chkconfig named on

3、上传压缩包etc文件夹中dnsmasq.conf、named.conf文件和dnsmasq.d、named.d文件夹到/etc目录
4、重启dnsmasq和Bind

service dnsmasq restart
service named restart

5、将压缩包内var文件夹中的dns文件夹上传到/var目录
6、进入Overture目录

cd /var/dns

7、设置Overture可执行权限

chmod +x overture

8、后台运行Overture

nohup ./overture >/dev/null 2>&1 &

停止DNS服务命令

killall overture
service named stop
service dnsmasq stop

卸载DNS服务

yum remove named dnsmasq -y
rm -rf /var/dns/

搭建过程至此结束,注意:服务器重启后需要手动启动Overture,修改配置文件后只需重启dnsmasq和Bind即可生效,不会导致DNS对外服务中断。DNS服务可能会因为某些原因而服务异常,(其实也几乎没有啦)可以编写监控脚本实现服务异常自动重启,如有需要请等待博主接下来的发文;
另外,外网服务器最好还是配置一下防火墙比较好,当前主节点防火墙配置(博主表示也不知道博主的防火墙有没有效果 :smile: )请等待博主接下来的发文;
最后插一句,博主寻找缓存DNS的智能解析方法寻找了几个月,最终才实现了智能解析,其他的也不奢望,仅仅希望使用此配置和方法搭建DNS的朋友能在自己的网站上面放个链接,注明一下方法来源,谢谢。
特别鸣谢:Overture


2018.03.18日更新:

1、下载hosts_sample文件,这是更新时Pure DNS使用的广告过滤规则,你可以编辑此文件在其中添加合适的规则,比如Pure DNS还添加了

111.**.***.** *.scholar.google.com

等规则(IP已被隐藏),这个IP是这样来的,*.scholar.google.com属于泛解析规则,并且包含scholar.google.com域名。

2、去https://github.com/shawn1m/overture/releases下载合适的版本、解压,修改config.json文件:修改PrimaryDNS中Policy字段为auto使其支持ecs智能解析;修改CacheSize字段为10000使其支持DNS缓存;替换hosts_sample文件为第一步中的文件。

3、上传第二步修改后的文件夹到服务器上,并运行Overture。上传过程:略。运行:64位Linux进入Overture目录后执行

chmod +x overture-linux-amd64
nohup ./overture-linux-amd64 &

然后回车使Overture后台运行,Windows64位系统直接双击overture-windows-amd64.exe运行即可。

Linux系统可以使用

netstat -tunlp

命令查看端口监听情况(最后一栏含有PID进程号),正常情况下53端口应被Overture监听,若服务器53端口被监听但无法解析请求请检查服务器防火墙设置。关闭DNS服务:

killall overture-linux-amd64

或者

kill PID进程号

结束Overture的运行。

评论回复

  1. 回复 匿名

    自己安装的centos7 64
    [root@localhost ~]# service dnsmasq restart
    Redirecting to /bin/systemctl restart dnsmasq.service
    [root@localhost ~]# service named restart
    Redirecting to /bin/systemctl restart named.service
    Job for named.service failed because the control process exited with error code. See “systemctl status named.service” and “journalctl -xe” for details.
    [root@localhost ~]#

  2. 回复 匿名

    有没有傻瓜一键搞定的?(羞耻) :oops:

  3. 回复 IAMHCl

    请问博主,我用你这个在腾讯云centos7.3出错了# service named restart返回错误
    Redirecting to /bin/systemctl restart named.service
    Job for named.service failed because the control process exited with error code. See “systemctl status named.service” and “journalctl -xe” for details.
    如何解决呢?
    还有我将路由DNS设置成博主的两个DNS IP,结果手机上虽然不会立即报网络故障(电脑上没法试,我改了host),但一直加载不出来,这是移动宽带的原因吗?

    • 回复 IAMHCl

      @IAMHCl我重装成了centos6.5,就启动成功了 :cry: :cry: :cry: :cry:

  4. 回复 Bard

    SNI Proxy 怎么搭建? :grin:

  5. 回复 Bard

    :!: :!: SNI代理怎么搭建 我有台洛杉矶 想试试

    • 回复 匿名

      @Bardhttps://doub.bid/wlzy-27/ 自己看教程哦,记得主机要有真正的443端口才能用 转发过的不行

      • 回复 Bard

        @匿名
        博主你好,我根据https://doub.bid/wlzy-27 的教程在洛杉矶服务器搭建了SNI Proxy,但是在国内DNS服务器上添加搭建好的SNI Proxy服务IP发现不能适应,国内站点解析正常,谷歌解析失败,我的SNI proxy配置文件是这样的:
        文件:/etc/sni.conf
        内容:

        user daemon

        pidfile /tmp/sniproxy.pid

        error_log {
        syslog daemon
        priority notice
        }

        listener 0.0.0.0:443 {
        protocol tls
        table TableName
        }

        table TableName {
        .* *:443
        }
        #代码结束

        SNI启动指令:sniproxy -c /etc/sni.conf

        netstat -tln查询TCP端口 sniproxy监听的443端口是正常运行的!

        为了测试443端口是否能正常通信,我停止了SNI Proxy 安装了httpd 开启443端口是可以正常访问的。(apache测试443端口:http://服务器IP:443 是可以正常访问的)

        不知道我是哪里步骤错了、您可以帮我看看吗?另外我的国内搭建dns的服务器对SNI的服务器ping 在稳定在150ms ,不存在丢包、断链情况!

        • 回复 Dreamer

          你本地修改hosts文件,把谷歌指向你的sni的ip,访问谷歌试试看看能不能访问,能访问的话就不是sni的问题~~

  6. 回复 匿名

    不能搭在国外VPS上是不是因为GFW只污染国外的服务器?

  7. 回复 匿名

    博主啊还有个问题是PureDNS的去代理化网站的无污染DNS是靠什么解析出来的?是手动整理的hosts规则吗?还是DNSpod Public DNS 本来就能解析出来?

  8. 回复 yilin101

    dnsmasq: failed to create listening socket: Permission denied

    请求解决这个问题 我看很多用户都被这个问题困扰
    刚安装不替换文件是可以启动的 只要文件一替换就不行了,我还测试了一下只替换内容 不覆盖文件 也不行
    可能是dnsmasq.conf问题

  9. 回复 清雨

    您好!我现在在局域网内用Pcap_DNSProx部署了一台本地DNS服务器,想请教一下怎么用运营商的 SNI 服务器 来进行海外加速呢?现在本地DNS服务器已经可以避免DNS劫持及投毒了。
    C:\Users\XXX>nslookup http://www.google.com
    服务器: pcap-dnsproxy.server
    Address: 127.0.0.1

    非权威应答:
    名称: http://www.GOogle.COm
    Addresses: 2404:6800:4008:802::2004
    172.217.27.132

    • 回复 清雨

      不用了,自己尝试了一下,已经搞定了。谢谢博主的思路

      • 回复 Dreamer

        嗯,还有就是国内运营商SNI无法海外加速x墙的。。。

  10. 回复 匿名

    http://dl.dream.ren/PureDNS/PureDNS.zip
    怎么挂了.能提供下更新么?

  11. 回复 CrazyRookie

    好像挂了….

  12. 回复 匿名

    按教程架设了,但是DNS无法解析,不知道是什么问题?有QQ吗?可以交流一下吗?

  13. 回复 匿名

    http://dl.dream.ren/PureDNS/PureDNS.zip
    东西没了更新下ok?

  14. 回复 jarod

    nohup ./overture >/dev/null 2>&1 &

    这个能自动开机运行吗?

  15. 回复 匿名

    配置文件下载不聊了

  16. 回复 OK

    请问博主,sni.zone,是什么文件,SNI地址应该在哪个配置文件上修改呢,感谢

  17. 回复 匿名

    博主来个群,叫我们怎么搭建dns,我们不翻墙,我们听党的话

  18. 回复 LY

    只有SNI.list里面配置的域名才能启动加速么?不过好像很多网站不在这个列表也能访问。

    • 回复 LY

      @LY
      头疼,解决一个问题又一个问题,这个也太挑环境了。

      没办法折腾了。

1 + 7 =

回到顶部