逗比云还是逃不过被墙的命运,既然如此那以后逗比云也就一直用被墙的旧域名 [softsmirror.cf] 算了。
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

Linux 使用 dowsDNS 快速自建DNS服务器以 科学上网+屏蔽广告

Linux教程 Toyo 8评论
广告
本文最后更新于 2017年5月14日 23:25 可能会因为没有更新而失效。如已失效或需要修正,请留言!

这几天实在不知道写什么教程,于是想啊想,突然想起来 dowsDNS了,当初写过一个 Windows 使用这个搭建本地DNS科学上网的教程,我就突然想起来,如果把监听的IP 127.0.0.1 改成 0.0.0.0 岂不是变成了可以外网访问的 远程DNS服务器啦,所以在 Linux系统上面试了试的确可以,于是又可以写教程了~

Windows 搭建本地DNS:一个搭建 本地DNS 以科学上网的小工具 —— dowsDNS

一键脚本:『原创』快速自建DNS服务器以 科学上网+屏蔽广告 —— dowsDNS 一键脚本

Github项目地址:https://github.com/dowsnature/dowsDNS

注意:DNS和Hosts这两种科学上网方式,都必须使用 https ,比如访问谷歌: https://www.google.com ,使用 http 明文传输会被墙拦截。

准备工作

首先你需要一个 国内的VPS(云服务器),否则你用海外VPS搭建DNS服务器会被墙拦截并伪造(DNS污染)。

系统建议为 Debian 7 x64 ,原因不多说,我经常用这个系统,常看我教程的人都知道。

如果你不是很懂的话,你只需要 安装依赖 - 下载/解压 - 修改监听IP为 0.0.0.0 - 启动dowsDNS 即可!其他的都可以不管。

安装依赖

dowsDNS是一个由 Python 编写的软件,所以Linux想要运行,就需要确定安装了最低版本2.7的 Python。

  1. python -V
  2. # 用上面的命令检查是否安装了 Python,如果返回如下的信息即代表已安装,可以跳过当前步骤继续下面的unzip步骤
  3. # Python 2.7.x
  4. # 如果返回 -bash: python: command not found ,即代表未安装,那么就用下面的命令来安装 Python
  5. # CentOS系统:
  6. yum install python -y
  7. # Debian/Ubuntu系统:
  8. apt-get install python -y

然后下面因为是下载的 zip 压缩包,要解压这个还需要安装 unzip :

  1. # CentOS系统:
  2. yum update && yum install unzip -y
  3. # Debian/Ubuntu系统:
  4. apt-get update && apt-get install unzip -y

下载安装

然后我们开始下载/解压 dowsDNS:

  1. wget -N --no-check-certificate https://github.com/dowsnature/dowsDNS/archive/master.zip
  2. unzip master.zip
  3. mv dowsDNS-master dowsDNS

假设你的安装目录为 /root ,那么dowsDNS的目录即为 /root/dowsDNS

配置修改

接下来可能需要根据需求修改配置文件,首先进入配置文件目录:

  1. cd dowsDNS/conf

基础配置文件

以下是dowsDNS的默认配置文件,可以根据需求来修改 上游DNS

  1. {
  2. "Remote_dns_server" : "114.114.114.114",
  3. # 上游DNS,即一些dowsDNS没有指定的域名都由上游DNS解析,比如百度啥的。
  4.  
  5. "Remote_dns_port":53,
  6. # 上游DNS的端口,可以使用上游DNS为 208.67.222.222 搭配 5353 端口防DNS污染。
  7.  
  8. "Rpz_json_path":"./data/rpz.json",
  9. "Local_dns_server" : "127.0.0.1",
  10. # 监听IP,127.0.0.1 代表仅本地和局域网才能访问,设置 0.0.0.0 即可外网访问。
  11.  
  12. "Local_dns_port" : 53,
  13. # 监听端口,默认 53 ,可按需求修改,一般设备的DNS都只能设置 53 端口。
  14.  
  15. "sni_proxy_on":false,
  16. # SNI代理开关,当开启(true)这个设置后,DowsDNS所有的自定义设置的泛域名解析和hosts(包括自带的)都会强制指向下面 sni_proxy_ip 参数指定的 SNI代理IP。
  17.  
  18. "Public_Server":false,
  19. # 如果是局域网使用,写 false,如果是外网访问使用,写 true
  20.  
  21. "sni_proxy_ip":"219.76.4.3"
  22. # SNI代理 IP,如果你搭建或者有其他的SNI代理IP,可以放到这里使用。
  23. }

修改配置文件的话,一般你只需要把 127.0.0.1 改成 0.0.0.0 即可,其他的不懂就多尝试或者不要动。

可以用 vim编辑器 手动修改,也可以用 sed 命令来修改。

  1. # vim编辑器打开配置文件修改,打开后按 I键 进入编辑模式,修改后按 ESC键 退出编辑模式,然后输入 :wq 保存并退出,输入 :q! 可以不保存强制退出。
  2. vi config.json
  3.  
  4. # sed 直接替换修改
  5. sed -i 's/127.0.0.1/0.0.0.0/g' config.json
搭建SNI代理教程:一个 反代无需证书 适用于DNS/Hosts的小工具 —— SNI Proxy代理 安装教程

hosts配置文件(去广告)

以下是dowsDNS的默认hosts配置文件,可以根据需求来修改/添加 hosts的地址,如果不懂请不要修改!

新版本中作者因为一些原因删除了屏蔽广告的hosts在线文件,所以失去了广告屏蔽功能,如果你想要这个功能,那么手动添加上即可。

  1. vi hosts_repository_config.json

打开文件后,按 I键 进入编辑模式,添加下面的代码到文件中,添加位置看下面示例,添加后按 ESC键 退出编辑模式,然后输入 :wq 保存并退出。

  1. "adaway":"https://raw.githubusercontent.com/aoccin/adaway/master/hosts"
  2. # 把这行代码添加到文件内

示例配置文件(注意逗号):

  1. {
  2. "hosts":{
  3. "racaljk":"https://coding.net/u/scaffrey/p/hosts/git/raw/master/hosts",
  4. "adaway":"https://raw.githubusercontent.com/aoccin/adaway/master/hosts" # 这个是去广告用的
  5. #"xxx":"https://xxx.xxx/hosts" # 添加格式就是这样,需要注意的是 JSON格式最后一行不要逗号,注意上面三个默认配置的逗号。
  6. },
  7. "wrcd":"https://raw.githubusercontent.com/liuyunbin/dowsDNS/master/data/wrcd.json"
  8.  
  9. }

自定义泛域名解析

当你想要对一些子域名/泛域名解析指定IP的时候,你可以修改 ~/dowsDNS/data/wrcd.json 文件

  1. cd ..
  2. # 返回上一级目录
  3. cd data
  4. # 重新进入 data目录

打开后会看到大概如下(可能会变动)格式:

  1. {
  2. "gvt0.com":"219.76.4.4",
  3. "*.gvt0.com":"219.76.4.4",
  4. "gvt1.com":"219.76.4.4",
  5. "*.gvt1.com":"219.76.4.4",
  6. "gvt2.com":"219.76.4.4",
  7. "*.gvt2.com":"219.76.4.4",
  8. "gvt3.com":"219.76.4.4",
  9. "*.gvt3.com":"219.76.4.4",
  10. "youtube.com":"219.76.4.4",
  11. "*.youtube.com":"219.76.4.4",
  12. "ytimg.com":"219.76.4.4",
  13. "*.ytimg.com":"219.76.4.4",
  14. "youtu.be":"219.76.4.4",
  15. "*.youtu.be":"219.76.4.4",
  16. "googlevideo.com":"219.76.4.4",
  17. "*.googlevideo.com":"219.76.4.4",
  18. "ggpht.com":"219.76.4.4",
  19. "*.ggpht.com":"219.76.4.4"
  20. }

假如你要给基于谷歌域名 google.com 的所有二级域名做泛域名解析,那么直接这样写:

这代表, www.google.com xxx.google.com 233.google.com 等任何基于 google.com 的域名都是解析为 1.1.1.1 这个IP。

注意:JSON格式的文件,最后一行不能有 , 逗号,注意看上面文件的 逗号格式!格式错误会导致无法启动。
  1. "*.google.com":"1.1.1.1",

但是上面的那个智能解析 xxx.google.com 这样的二级域名,不包括 顶级域名本身 google.com ,所以你可能需要把这个也给加上,同样这也是子域名的添加方法。

  1. "google.com":"1.1.1.1",

使用说明

  1. # 首先我们进入 dowsDNS的目录
  2. cd /root/dowsDNS
  3.  
  4. # 调试运行
  5. python start.py
  6. # 调试运行是前台运行,关闭SSH后就会断开,要后台运行请看下面的命令。调试运行按 Ctrl+C键 退出。
  7.  
  8. # 带日志运行
  9. nohup python start.py > /tmp/dns.log 2>&1 &
  10. # 当DNS请求很多的时候,日志就会很大,所以建议调试的时候用日志看看即可,平时建议不带日志运行!
  11.  
  12. # 不带日志运行
  13. nohup python start.py > /dev/null 2>&1 &
  14. # 停止 dowsDNS
  15. kill -9 $(ps -ef|grep "python start.py"|grep -v grep|awk '{print $2}')
  16.  
  17. # 查看日志(如果带日志运行)
  18. tail -f /tmp/dns.log

日志基本长这样:

  1. INFO:root:Query: www.google-analytics.com.
  2. INFO:root:Query: clients5.google.com.
  3. INFO:root:Revise: clients5.google.com.
  4. INFO:root:Query: lh3.googleusercontent.com.
  5. INFO:root:Revise: lh3.googleusercontent.com.
  6. INFO:root:Query: apis.google.com.
  7. INFO:root:Revise: apis.google.com.
  8. INFO:root:Query: notifications.google.com.
  9. INFO:root:Revise: notifications.google.com.

其他说明

dowsDNS还是很稚嫩的,处于开发初期,在DNS服务方面可能比不上目前主流几个DNS服务软件,不过配置简单也是优势之一,期待以后会更好!

运行无报错,但DNS解析没反应

这个可能是防火墙的问题,因为DNS是UDP传输的,所以只需要开放UDP即可。

  1. iptables -I INPUT -m state --state NEW -m tcp -p udp --dport 本地监听DNS端口 -j ACCEPT
  2.  
  3. # 删除防火墙规则,内容一样把 -I 换成 -D 就行了:
  4. iptables -D INPUT -m state --state NEW -m tcp -p udp --dport 本地监听DNS端口 -j ACCEPT

提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。

  1. # CentOS系统:
  2. yum install -y wget
  3.  
  4. # Debian/Ubuntu系统:
  5. apt-get install -y wget

升级 dowsDNS

  1. cd /root/dowsDNS
  2. # 进入dowsDNS目录(如果安装目录不一样请自行替换)
  3.  
  4. python update.py

转载请超链接注明:逗比根据地 » Linux 使用 dowsDNS 快速自建DNS服务器以 科学上网+屏蔽广告
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (28)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(8)个小伙伴在吐槽
  1. 为什们脚本执行到最后一步那个压缩文件总是下载失败?
    kingwong2018-04-08 09:56 回复
    • 贴出完整错误信息。
      Toyo2018-04-08 14:40 回复
  2. 我如果用vw虚拟机的linux 搭建个这个然后弄到本机可以用吗??
    akers2018-01-27 23:54 回复
    • 理论是可以的,但是我没试过。
      Toyo2018-01-28 15:07 回复
  3. 项目更新了,支持edns-client-subnet了
    downature2017-05-14 18:13 回复
  4. 拿 Openwrt的路由器 当作 国内的VPS 不知可行不可行
    lantudai2017-05-04 23:03 回复
    • 路由器可以,树莓派应该也行。
      Toyo2017-05-04 23:47 回复
  5. 再要不就是太复杂,比如unbound/pnsnd/dnscrypt. 想折腾unbound的话可以参考这个 https://www.nanqinlang.com/unbound.html pnsnd因为不更新了,我是没动力再入手了. 至于dnscrypt,加密传输还是挺实用,但是容易炸,之后可能会写帖子也可能不会写.
    南琴浪2017-04-23 15:27 回复

�y�V���o�C��[UNLIMIT�����Ȃ�1�~] EC�i�r�Ń|�C���� Yahoo �y�V LINE���f�[�^����[���Ō��z500�~�`�I


�����z�[���y�[�W �����̃N���W�b�g�J�[�h �C�O�i���q�� ���萔���O�~�y�������ł񂫁z �C�O���s�ی��������I �C�O�z�e��