介绍
Dnsmasq: 轻量级的 DNS,DHCP 服务器,适用于资源受限的路由器和防火墙。它还已广泛用于智能手机和便携式热点的网络共享,并在虚拟化框架中支持虚拟网络。受支持的平台包括Linux(带有glibc和uclibc),Android, BSD 和 Mac OSX。Dnsmasq包含在大多数Linux发行版以及FreeBSD,OpenBSD和NetBSD的端口系统中。Dnsmasq提供完整的IPv6支持。
安装
CentOS
1
yum install -y dnsmasq
Ubuntu/Debian/Deepin
1
apt-get install -y dnsmasq
配置
DNSmasq 的配置文件位于
/etc/dnsmasq.conf
,均有注释说明,记录我的dnsmasq.conf
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21[root@repo ~]# egrep -v '^#|^$' /etc/dnsmasq.conf
# 以下两个参数告诉Dnsmasq过滤一些查询:1.哪些公共DNS没有回答 2.哪些root根域不可达。
domain-needed # 从不转发格式错误的域名
bogus-priv # 从不转发不在路由地址中的域名
resolv-file=/home/hoke/dnsmasq/upstream.conf # 上游地址
local=/runchain.com/ # 增加一个本地域名,会在/etc/hosts中进行查询
addn-hosts=/home/hoke/dnsmasq/add_hosts # 自定义 hosts
cache-size=10000 # 设置dns缓存大小,默认为150条
# For debugging purposes, log each DNS query as it passes through
# dnsmasq.
log-queries
log-facility=/var/log/dnsmasq.log
# Include all files in a directory which end in .conf
conf-dir=/home/hoke/dnsmasq/dnsmasq.d/,*.conf
no-negcache # 不缓存未知域名缓存,默认情况下dnsmasq缓存未知域名并直接返回为客户端。
clear-on-reload # 重启后清空缓存upstream.conf
上游地址配置1
2
3[root@repo ~]# cat /home/hoke/dnsmasq/upstream.conf
nameserver 114.114.114.114
nameserver 8.8.8.8以上仅开启 DNS,需要开启 DHCP 的朋友参看配置文件注释,配置修改后启动生效即可
1
systemctl start dnsmasq
高阶技能
dnsmasq-china-list
特定于中文的配置可改善您喜欢的DNS服务器。chnroutes的最佳合作伙伴。
提高中文域名的解析速度。
尽可能获取最佳的CDN节点,但不要妥协外来CDN的结果,因此您同时也可以获得VPN的最佳CDN节点。
在NXDOMAIN上阻止ISP广告(例如114so)。
项目地址: https://github.com/felixonmars/dnsmasq-china-list
用法
- clone 项目
1
git clone https://github.com/felixonmars/dnsmasq-china-list.git
- 把
*.conf
拷贝至conf-dir=/home/hoke/dnsmasq/dnsmasq.d/
目录中 - 重启 DNSmasq
1
systemctl restart dnsmasq
conf 说明
accelerated-domains.china.conf
:一般域加速。
使用中文DNS服务器时,这些域的解析速度和/或结果更好。要确定某个域是否符合条件,必须满足以下条件之一:- 域的NS服务器位于中国大陆。
- 使用中国的DNS服务器时,该域将解析为位于中国大陆的IP,但使用外国的DNS服务器(例如,在中国具有节点的CDN加速站点)时,该域并非总是如此。但是,这不包括在中国大陆附近有节点的节点,例如日本,香港,台湾等。
- 如果顶级域名已经在列表中,请不要添加子域名。这包括该/cn/规则已匹配的所有.cn域。
google.china.conf
:加速Google域。
使用中文DNS时,会将这些域解析到Google中国服务器。在大多数情况下,这将为使用Google网络服务(例如Google Web Fonts和AdSense)的网站缩短页面加载时间。请记住,它们不被认为是稳定的。使用风险自负。
apple.china.conf
:Apple域名将加速发展。
一些ISP(通常是较小的ISP)在使用其中国大陆CDN服务器访问Apple资产时遇到问题。如果发生这种情况,请考虑删除此文件。bogus-nxdomain.china.conf
:反劫持,一般某域名如果不存在 dns 解析结果,会返回 nxdomain ,但是有些运营商会无良重定向至 114 导航等广告页面,dnsmasq-china-list 项目收集了一些这种污染 IP
定时检测 hosts , 自动刷新 Dnsmasq
每次改动 hosts , 都需要手动 restart Dnsmasq ,整了个自动化脚本放到定时任务里,实现自动刷新
新增定时脚本dnsmasq_crontab.sh
, 作用是检测 add_hosts 文件1分钟内有没有修改,如有修改执行 restart dnsmqsq 命令
1 |
|
加入 crontab
1 | */1 * * * * /home/hoke/dnsmasq/dnsmasq_crontab.sh |