dnsmasq高阶配置详解 - 国内外域名分流解析

来源: 腾讯云 时间:2022-11-14 10:10:50

一、前言

dnsmasq支持dns及dns缓存、dhcp、tftp等服务,本文将使用dnsmasq配合国内白名单,实现国内外分流解析,拿到最优的解析节点,提升访问效率。


(资料图片)

大致架构如下:

分流解析架构

二、安装

1.从软件仓库安装

dnsmasq在各个发行版自带软件仓库基本都会有,使用对应包管理安装命令安装即可:

发行版

安装命令

CentOS/Redhat

yum install -y dnsmasq

Debian

apt-get install -y dnsmasq

Archlinux

pacman -Sy dnsmasq/yay -y dnsmasq

2.编译安装

到dnsmasq官方下载页面下载最新版,截至2022年11月份,目前最新版为2.87,下载到本地:

wget https://thekelleys.org.uk/dnsmasq/dnsmasq-2.87.tar.gz

解压:

tar xvf dnsmasq-2.87.tar.gz

编译及安装:

cd dnsmasq-2.87makemake install

三、解析流程及参数说明

1.查询流程及优先级

先查找hosts文件,再查找/etc/dnsmasq.d/*.conf,之后查找/etc/dnsmasq.conf

是否查找hosts,还能通过no-hosts来定义,no-hosts表示不查找hosts文件。

因此,如果你想让dnsmasq本身提供解析服务,且无需去上游DNS查询,或者说你要做任意域名的DNS解析,就可以将记录写到上面任意一个文件,conf的语法形如:address=/test.com/192.168.1.1,hosts则遵循hosts文件的语法:192.168.1.1 test.com

2.常用参数说明

参数

说明

resolv-file

定义dnsmasq从哪里获取上游DNS服务器的地址, 默认从/etc/resolv.conf获取。

strict-order

表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。

listen-address

定义dnsmasq监听的地址,默认是监控本机的所有网卡上。

address

启用泛域名解析,即自定义解析a记录,例如:address=/long.com/192.168.115.10 访问long.com时的所有域名都会被解析成192.168.115.10

bogus-nxdomain

对于任何被解析到此 IP 的域名,将响应 NXDOMAIN 使其解析失效,可以多次指定 通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点

server

指定使用哪个DNS服务器进行解析,对于不同的网站可以使用不同的域名对应解析。 例如:server=/google.com/8.8.8.8 #表示对于google的服务,使用谷歌的DNS解析。

no-hosts

直接查询上游DNS,忽略hosts文件。

no-reslov

不做上游DNS查询。

cache-size

设置缓存域名的数量,默认150,硬限制为1000。

log-queries

记录查询请求,并通过log-facility指定记录日志。

3.参数配置

(1)基础配置

基于#2的参数说明,那么我可以在dnsmasq.conf配置如下参数:

log-querieslog-facility=/var/log/dnsmasq.logno-hostsbogus-nxdomain=119.29.29.29cache-size=1000port=53

并且在/etc/resolv.conf定义上游DNS解析:

nameserver 8.8.8.8nameserver 8.8.4.4

这里只需要定义国外DNS即可,国内DNS在后面的分流配置中定义。

需要注意的是,resolv.conf文件最多可以定义3个DNS服务器:

因此,如果想让dnsmasq配置三个以上的上游DNS服务器,则可以在dnsmasq.conf文件中通过参数resolv-file=xxx.conf自定义读取文件即可。

(2)拓展配置

同时,如果设置resolv.conf,也会影响运行dnsmasq的本机器的请求,对于dns query要去resolv.conf定义的上游DNS查找,那么如果想让服务器本身也走dnsmasq,则可以在resolv.conf文件中将DNS设置为本地地址:

nameserver ::1nameserver 127.0.0.1

之后在dnsmasq.conf定义上游DNS即可,如:

all-serversserver=8.8.8.8server=8.8.4.4server=1.1.1.1

all-servers表示从以下dns列表中查找,选择回应最快的一条作为查询结果返回,如果非53端口,则可以通过增加#port来自定义端口,如server=8.8.8.8#25533

前面说过,如果不想影响本机器的配置,则可以通过resolv-file参数来自定义指定文件。

4.检查语法

配置后可使用dnsmasq --test检查语法。

四、国内外分流配置

使用dnsmasq-china-list作为大陆域名白名单,定义国内域名使用的上游DNS,不匹配的则走dnsmasq定义的上游DNS,完美利用解析优先级机制。

1.conf文件说明

conf

说明

accelerated-domains.china.conf

国内域加速

google.china.conf

Google域加速

apple.china.conf

Apple域加速

bogus-nxdomain.china.conf

反劫持

2.克隆项目

将项目克隆到本地:

cd /optgit clone https://github.com/felixonmars/dnsmasq-china-list

3.超链到dnsmasq.d目录

你可以选择直接将上面几个文件从dnsmasq-china-list目录中拷贝到dnsmasq.d目录下,但考虑到这个项目的文件是定时更新维护的,因此超链接的方式更方便,后续只需定时执行git pull更新项目文件即可,无需重新拷贝。

ln -sf /opt/dnsmasq-china-list/accelerated-domains.china.conf  /etc/dnsmasq.d/accelerated-domains.china.conf ln -sf /opt/dnsmasq-china-list/google.china.conf /etc/dnsmasq.d/google.china.confln -sf /opt/dnsmasq-china-list/apple.china.conf /etc/dnsmasq.d/apple.china.confln -sf /opt/dnsmasq-china-list/bogus-nxdomain.china.conf /etc/dnsmasq.d/bogus-nxdomain.china.conf 

4.替换LDNS

可选项。上一步可见国内域名默认都是指定114的DNS作为上游,你可以选择替换为运营商分配给你的LDNS,即本地出口DNS,LDNS可以通过此网站查询。

假定LDNS为113.87.49.47,那么替换命令可以这么写:

sed -i "s|114.114.114.114|113.87.49.47|g" accelerated-domains.china.conf

5.定时更新dnsmasq-china-list

可选项。定时更新只为保障列表更全面更稳定,可配合crond定时任务实现。

脚本逻辑很简单:

#!/bin/bashcd /opt/dnsmasq-china-listgit pullsystemctl restart dnsmasq.service

之后通过crond配置定时任务,每6小时更新一次:

0 */6 * * * /bin/bash /server/scripts/update-china-list.sh

五、验证

1.日志验证

通过以上配置后,最终来验证一下:

根据查询日志可见,按照预定的轨道进行解析,国内外使用不同的上游DNS查询,并且缓存一份到本地。

2.抓包验证

通过报文情况可以看到,国外域名第一次查询往往会比较久,因为物理链路距离较长,涉及跨境传输,后面的查询将结果缓存到本地后,则无需再去请求上游DNS,直接命中缓存返回A记录,通过dig命令前后两次对比也可以直观看出。

附带PDF版本:

dnsmasq高阶配置详解-国内外域名分流解析dnsmasq高阶配置详解-国内外域名分流解析-亮色版

上一篇:

下一篇:

X 关闭

热门推荐

红尘故事歌词(红尘故事)

2022-11-14   万能网

本土新增1747+14325

2022-11-14   江苏新闻广播

本土新增“1747+14325”

2022-11-14   人民网科普

漂亮小妞妞(美女小妞)

2022-11-14   万能网

见“证”大兴安岭绿色变迁

2022-11-14   光明日报

我国牵头的首项健康显示国际标准正式发布

2022-11-14   中国产业经济信息网

上能电气户用逆变器获欧洲市场认证

2022-11-14   中国产业经济信息网

中国核电创新求变:争创国际一流清洁能源企业

2022-11-14   中国产业经济信息网

坦克世界验证码0全球聚焦

2022-11-14   万能网

大麦新空间落址北京隆福文化街区

2022-11-14   北京青年报官网

环球今日讯!供热管家“包干”到户

2022-11-14   北京青年报官网

北京地标农产品:平谷大桃

2022-11-14   沐橙籽

更新!石景山区新增高风险区

2022-11-13   北京石景山

北京石景山区新增高风险区4每日时讯

2022-11-13   成都商报红星新闻

微资讯!北京买房-双井区域楼盘分析

2022-11-13   小川房产交流

望京老小区楼道建起“楼门美术馆”

2022-11-13   北京日报客户端

万寿寺——京西小故宫

2022-11-13   青烟威文学

国家速滑馆今日起临时闭馆

2022-11-13   北京日报客户端

鞍钢集团获世界钢铁协会"Steelie"奖2天天热讯

2022-11-13   中国产业经济信息网

勇组词(永组词)

2022-11-13   万能网

2022年11月12日《石景山新闻》

2022-11-12   北京石景山

亚朵集团今日登陆纳斯达克,连续三年实现盈利

2022-11-12   中国产业经济信息网

海勃湾区入选2022中国西部百强区

2022-11-12   乌海广播电视台融视频

etf是什么意思?

2022-11-12   万能网

小雪暂歇,碧空下海陀戴雪美景如画

2022-11-12   北京日报客户端

c盘转换成ntfs格式

2022-11-12   万能网

5 11 23 47 95(5 11)

2022-11-12   万能网

北京首批高校毕业生保障性租赁住房入住

2022-11-12   北京日报客户端

竞技体育如何大众化

2022-11-12   万能网

北京公司车指标如何操作上车

2022-11-12   中创企服

全球短讯!乌鲁木齐西城热力有限公司24小时温暖守护热线

2022-11-11   新疆生产建设兵团第十二师电视台

当前视点!创城有您,每一刻都是文明~

2022-11-11   北青社区报昌平版

北京楼市并未放松限购0全球热点评

2022-11-11   京津冀去哪买房

Copyright   2015-2022 中国行业信息网版权所有  备案号:   联系邮箱:29 59 11 57 8@qq.com