[ChinaDNS] 无污染的智能路由 DNS 折腾记 #2

1018 字
5 分钟
[ChinaDNS] 无污染的智能路由 DNS 折腾记 #2
[ChinaDNS] 无污染的智能路由 DNS 折腾记 #2

这篇文章算是上一篇文章的完善,教你如何将 ChinaDNS 与 DNSMasq 结合起来用,使其更加稳定并且可以支持 TCP 查询

Head Pic: 「チャンのエリ」/「はれんちとめこ」[pixiv]


之前一篇文章讲到了如何搭建 ChinaDNS 以及关于 DNS 污染现象的详细说明,但是单纯使用 ChinaDNS 可能会不稳定,并且只支持通过UDP的53端口进行查询

因此,我们最好是使用 DNSMasq 作为主 DNS 服务端,将 ChinaDNS 作为 DNSMasq 的上游 DNS

以下部署过程在我两篇文章里独有讲到,但是这里会对某些步骤稍作修改,想了解关于 DNSMasq 和 ChinaDNS 的更多内容可以看我在文章末尾留的两篇文章

ChinaDNS#

1. 下载并编译#

  1. 如果你的系统中没有make和gcc就需要先安装
Terminal window
# Ubuntu / Debian
apt-get install -y make gcc
# CentOS
yum install -y make gcc
  1. 下载 ChinaDNS 源码并解压编译
Terminal window
cd /root
wget --no-check-certificate https://github.com/shadowsocks/ChinaDNS/releases/download/1.3.2/chinadns-1.3.2.tar.gz
tar -zxvf chinadns-1.3.2.tar.gz
mv chinadns-1.3.2 chinadns
cd chinadns
./configure && make
  1. 更新 chnrouter
Terminal window
# In /root/chinadns
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > chnroute.txt

2. 配置 supervisor 守护进程#

防止 ChinaDNS 进程挂掉 如果你的系统中已经有 supervisor,那么忽略安装步骤,酌情参考除了安装之外的配置步骤

  1. 安装
Terminal window
# python2
pip install supervisord
# python3
pip install git+https://github.com/Supervisor/supervisor
  1. 初始化并修改配置文件 此处和原先不一样的一点:让 ChinaDNS 在8053端口(或者其他非53端口)监听,因为我们要让它做 DNSMasq 的上游 DNS
Terminal window
echo_supervisord_conf > /etc/supervisord.conf
echo "[program:chinadns]
command=/root/chinadns/src/chinadns -p 8053 -m -c /root/chinadns/chnroute.txt -s 114.114.114.114,208.67.222.222:443
user = root
autostart = true
autorestart = true" >> /etc/supervisord.conf
  1. 添加 supervisor 开机自启
Terminal window
echo "supervisord -c /etc/supervisord.conf" >> /etc/rc.local
# 执行此命令以防系统没有权限执行开机自启脚本(by youngerzhong)
chmod +x /etc/rc.local

之后查看/etc/rc.local文件,如果有exit 0这行,就把它移动到文件的最后一行,即保证我们上面添加的这句在exit 0前面

  1. 启动 supervisor
Terminal window
supervisord -c /etc/supervisord.conf

然后查看程序运行状态

Terminal window
supervisorctl status

如果有输出 chinadns 的运行状态RUNNING就说明成功了

此时可以用dig命令检查一下看 ChinaDNS 是否有正常运作

Terminal window
dig www.pixiv.net @127.0.0.1 -p 8053

DNSMasq#

如果你已经有 DNSMasq,那么忽略安装步骤,酌情参考除了安装之外的配置步骤

1. 安装#

Ubuntu / Debian#

Terminal window
apt-get install dnsmasq

CentOS#

由于 CentOS 的yum安装的 DNSmasq 版本比较旧,因此我们可以先下载最新版编译好,用yum安装完之后再替换掉程序。

先从 http://www.thekelleys.org.uk/dnsmasq/ 找到你想要的 DNSmasq 版本的源码压缩包的下载地址,例如我选择的是我写这篇文章时的最新版dnsmasq-2.79.tar.gz。

下载对应的源码压缩包并解压

Terminal window
cd /root
wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.79.tar.gz
tar xf dnsmasq-2.79.tar.gz

编译,源码 make 不带 etc 等

Terminal window
cd dnsmasq-2.79
make V=s

然后用 yum 安装 DNSmasq

Terminal window
yum install dnsmasq

yum 安装的是2.4.8版本,然后我们再用我们编译好的最新版本替换

Terminal window
yes | cp -f ./src/dnsmasq /usr/sbin/dnsmasq

这时可以查看 DNSmasq 的版本检验一下

Terminal window
dnsmasq -v

看一下版本号,应该就是我们编译好的版本了

2. 配置#

编辑/etc/dnsmasq.conf文件,将下面提到的配置项解除注释并进行更改

Terminal window
# 指定监听 53 端口
port=53
# 禁止 DNSMasq 使用 resolv.conf
no-resolv
no-poll
# 指定监听IP,将 x.x.x.x 换成你的 eth0 网卡IP(用 ifconfig 命令查看)
listen-address=127.0.0.1,x.x.x.x
# 指定额外配置文件夹
conf-dir=/etc/dnsmasq.d/

如果你比较懒不想找而且只需要用 DNSMasq 做到本文所述功能,也可以直接 (注意替换x.x.x.x)

Terminal window
echo "port=53
no-resolv
no-poll
listen-address=127.0.0.1,x.x.x.x
conf-dir=/etc/dnsmasq.d/" > /etc/dnsmasq.conf

然后运行以下命令写入配置以将 ChinaDNS 作为上游 DNS

Terminal window
echo "server=127.0.0.1#8053" > /etc/dnsmasq.d/chinadns.conf

重启 DNSMasq

Terminal window
/etc/init.d/dnsmasq restart

3. 开放安全组/防火墙端口#

这里只是特别提醒一下记得开放,特别是部分 IDC 是有“安全组”的,记得开放53端口的 TCP 和 UDP

其余的iptables操作这里就不教了,因为一般都是全开放,或者去百度一下

相关文章#

[ChinaDNS] 无污染的智能路由 DNS 折腾记
手上有台去年被京东云骗了买的80多rmb一年的1M小水管机子,闲着也是闲着,就打算用 ChinaDNS 项目部署一个无污染的DNS服务,其中遇到了许多坑,弄清楚了之后我觉得很有必要写一篇教程(特别是在用H大的老毛子固件上的ChinaDNS的朋友们需要看一看),其中涉及到 DNS 污染的问题是重点
2018-04-05教程#chinadns#dns污染#linux
[DNSmasq] 安装&配置详解
DNSmasq 是 Linux 下的一个用于配置 DNS 和 DHCP 的工具,个人认为最主要的功能还是用来做 DNS 服务器。一句话,好用的不行。
2017-11-06Linux 笔记#dnsmasq#dns#分流

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

[ChinaDNS] 无污染的智能路由 DNS 折腾记 #2
https://moe.best/posts/chinadns-plus-dnsmasq/
作者
神代綺凛
发布于
2018-05-19
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
[ChinaDNS] 无污染的智能路由 DNS 折腾记
教程手上有台去年被京东云骗了买的80多rmb一年的1M小水管机子,闲着也是闲着,就打算用 ChinaDNS 项目部署一个无污染的DNS服务,其中遇到了许多坑,弄清楚了之后我觉得很有必要写一篇教程(特别是在用H大的老毛子固件上的ChinaDNS的朋友们需要看一看),其中涉及到 DNS 污染的问题是重点
2
[ChinaDNS] 无污染的智能路由 DNS 折腾记 #3
教程没想到这个系列还能有第三集,应该是完结篇了。这次是因为前不久试用了一下 Linux 的 Windows 子系统,发现意外的不错,与 Windows 本身契合度很高,于是在 Windows 里跑 DNSMasq + ChinaDNS 的设想得以实现√
3
[overture] 无污染的智能 DNS 折腾记 #4
教程我是在大概三个月前得知了 overture 并开始使用,其相对 ChinaDNS 的优点是设置更丰富、使用国内外 DNS 的判断逻辑更完善、支持 ECS (edns-client-subnet),并且设置比 Pcap DNSProxy 简单很多。 本文会介绍在 PC 及 openwrt 路由器上部署 overture 的方法和要点。
4
[Pcap DNSProxy] 无污染DNS搭建 linux下编译过程全记录
教程Pcap DNSProxy 是一个基于 WinPcap/LibPcap 用于过滤 DNS 投毒污染的工具,提供便捷和强大的包含正则表达式的修改 Hosts 的方法,以及对 DNSCurve/DNSCrypt 协议、并行和 TCP 协议请求的支持。多服务器并行请求功能,更可提高在恶劣网络环境下域名解析的可靠性。
5
[教程] 在 Linux 上部署 HBase 的详细配置过程
教程HBase 是一个分布式的、面向列的开源数据库,详细的也不再多讲。之所以有这篇文章是因为博主在学业上需要用到这一软件,因此自己摸索并记录下部署过程。
随机文章随机推荐
Profile Image of the Author
神代綺凛
专业咕咕
分类
标签
站点统计
文章
107
分类
15
标签
269
总字数
140,468
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录