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

2022-5-16 18:45| 发布者: Hocassian| 查看: 79| 评论: 0|原作者: 神代綺凜

摘要:
C:\Users\Administrator\Downloads\神代綺凜\2019-10-15-14-34-56-19827283870600-文章归档 - 神代綺凜の萌化小基地-采集的数据-后羿采集器.html

标题

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

标题链接

https://moe.best/tutorial/chinadns-plus-dnsmasq.html

正文

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

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

ChinaDNS + DNSMasq

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

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

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

ChinaDNS

1. 下载并编译

  1. 如果你的系统中没有makegcc就需要先安装
    1
    2
    3
    4
    # Ubuntu / Debian apt-get install -y make gcc # CentOS yum install -y make gcc
  2. 下载 ChinaDNS 源码并解压编译
    1
    2
    3
    4
    5
    6
    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
  3. 更新 chnrouter
    1
    2
    # 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. 安装
    1
    2
    3
    4
    # python2 pip install supervisord # python3 pip install git+https://github.com/Supervisor/supervisor
  2. 初始化并修改配置文件
    此处和原先不一样的一点:让 ChinaDNS 在8053端口(或者其他非53端口)监听,因为我们要让它做 DNSMasq 的上游 DNS
    1
    2
    3
    4
    5
    6
    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
  3. 添加 supervisor 开机自启
    1
    2
    3
    echo "supervisord -c /etc/supervisord.conf" >> /etc/rc.local # 执行此命令以防系统没有权限执行开机自启脚本(by youngerzhong) chmod +x /etc/rc.local

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

  4. 启动 supervisor

    1
    supervisord -c /etc/supervisord.conf

    然后查看程序运行状态

    1
    supervisorctl status

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

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

    1
    dig www.pixiv.net @127.0.0.1 -p 8053

DNSMasq

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

1. 安装

Ubuntu / Debian

1
apt-get install dnsmasq

CentOS

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

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

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

1
2
3
cd /root wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.79.tar.gz tar xf dnsmasq-2.79.tar.gz

编译,源码 make 不带 etc 等

1
2
cd dnsmasq-2.79 make V=s

然后用 yum 安装 DNSmasq

1
yum install dnsmasq

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

1
yes | cp -f ./src/dnsmasq /usr/sbin/dnsmasq

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

1
dnsmasq -v

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

2. 配置

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

1
2
3
4
5
6
7
8
9
10
11
12
# 指定监听 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

1
2
3
4
5
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

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

重启 DNSMasq

1
/etc/init.d/dnsmasq restart

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

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

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

相关文章

搬瓦工VPS优惠套餐,建站稳如狗,支持支付宝,循环出账94折优惠码BWH26FXH3HIQ
年付$28CN2线路,1核/512M内存/10G硬盘/500GB@1Gbps【点击购买】(经常售罄,请抓紧机会)
年付$47CN2线路,1核/1G内存/20G硬盘/1T@1Gbps【点击购买
最后修改:2019 年 02 月 09 日 12 : 59 AM
如果觉得我的文章对你有用,请随意赞赏

文章信息

中二病患者: 神代綺凜  发布时间:2018 年 05 月 19 日  31358 次浏览   67 条评论  3751 字数 分类: 教程


路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部