这几天实在不知道写什么教程,于是想啊想,突然想起来 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服务器以 科学上网+屏蔽广告
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!