可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

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

逗比 Toyo 1015℃ 0评论
本文最后更新于 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。

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

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

# CentOS系统: yum update && yum install unzip -y # Debian/Ubuntu系统: apt-get update && apt-get install unzip -y 

下载安装

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

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

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

配置修改

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

cd dowsDNS/conf 

基础配置文件

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

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

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

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

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

hosts配置文件(去广告)

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

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

vi hosts_repository_config.json 

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

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

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

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

自定义泛域名解析

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

cd .. # 返回上一级目录 cd data # 重新进入 data目录 

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

{ "gvt0.com":"219.76.4.4",  "*.gvt0.com":"219.76.4.4",  "gvt1.com":"219.76.4.4",  "*.gvt1.com":"219.76.4.4",  "gvt2.com":"219.76.4.4", "*.gvt2.com":"219.76.4.4", "gvt3.com":"219.76.4.4", "*.gvt3.com":"219.76.4.4", "youtube.com":"219.76.4.4",  "*.youtube.com":"219.76.4.4",  "ytimg.com":"219.76.4.4", "*.ytimg.com":"219.76.4.4", "youtu.be":"219.76.4.4", "*.youtu.be":"219.76.4.4", "googlevideo.com":"219.76.4.4", "*.googlevideo.com":"219.76.4.4", "ggpht.com":"219.76.4.4", "*.ggpht.com":"219.76.4.4" } 

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

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

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

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

"google.com":"1.1.1.1", 

使用说明

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

日志基本长这样:

INFO:root:Query: www.google-analytics.com. INFO:root:Query: clients5.google.com. INFO:root:Revise: clients5.google.com. INFO:root:Query: lh3.googleusercontent.com. INFO:root:Revise: lh3.googleusercontent.com. INFO:root:Query: apis.google.com. INFO:root:Revise: apis.google.com. INFO:root:Query: notifications.google.com. INFO:root:Revise: notifications.google.com. 

其他说明

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

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

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

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

提示 wget: command not found 的错误

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

# CentOS系统: yum install -y wget  # Debian/Ubuntu系统: apt-get install -y wget 

升级 dowsDNS

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

阅后请多多推广本文: Linux 使用 dowsDNS 快速自建DNS服务器以 科学上网+屏蔽广告
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

转载请注明:逗比根据地 » Linux 使用 dowsDNS 快速自建DNS服务器以 科学上网+屏蔽广告

喜欢 (3)
发表我的评论
取消评论

表情

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址