全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 2400|回复: 27

使用dnsmasq支持hosts泛解析与DNS加速

[复制链接]
发表于 2018-12-23 17:19:13 | 显示全部楼层 |阅读模式
安装

  1. $ yum install dnsmasq -y
复制代码


配置

先把配置文件备份一份

  1. $ cp /etc/dnsmasq.conf /etc/dnsmasq.conf_bak
复制代码


dnsmasq的配置在配置文件中都有详细的说明,你可以通过阅读配置文件的注释更改自己想要的配置,我只是想做泛解析,所以我的配置如下:

  1. $ vim /etc/dnsmasq.conf
  2. # 严格按照resolv-file文件中的顺序从上到下进行DNS解析, 直到第一个成功解析成功为止
  3. strict-order

  4. # 监听的IP地址
  5. listen-address=127.0.0.1

  6. # 设置缓存大小
  7. cache-size=10240

  8. # 泛域名解析,访问任何baidu.com域名都会被解析到6.6.6.6
  9. address=/baidu.com/6.6.6.6
复制代码



域名解析默认读取/etc/hosts文件到本地域名配置文件(不支持泛域名)

DNS配置默认读取/etc/resolv.conf上游DNS配置文件,如果读取不到`/etc/hosts`的地址解析,就会转发给resolv.conf进行解析地址

DNS配置文件

  1. $ vim /etc/resolv.conf
  2. # 这些都是常用的DNS,可以配置很多
  3. nameserver 127.0.0.1  # 一定要放在第一个
  4. nameserver 8.8.8.8
  5. nameserver 8.8.4.4
  6. nameserver 1.1.1.1
复制代码


启动服务

  1. $ systemctl enable --now dnsmasq
复制代码


测试

  1. $ ping baidu.com
  2. PING baidu.com (6.6.6.6) 56(84) bytes of data.
  3. ^C
  4. --- baidu.com ping statistics ---
  5. 2 packets transmitted, 0 received, 100% packet loss, time 1000ms

  6. $ ping www.baidu.com
  7. PING www.baidu.com (6.6.6.6) 56(84) bytes of data.
  8. ^C
  9. --- www.baidu.com ping statistics ---
  10. 2 packets transmitted, 0 received, 100% packet loss, time 999ms

  11. $ ping pan.baidu.com
  12. PING pan.baidu.com (6.6.6.6) 56(84) bytes of data.
  13. ^C
  14. --- pan.baidu.com ping statistics ---
  15. 2 packets transmitted, 0 received, 100% packet loss, time 999ms
复制代码


由上可以看到,几乎访问任何baidu.com的域名都会被解析到6.6.6.6,基本上就达到了我们最初的目的。

缓存(FQ有加成)

dnsmasq还有一项非常有用的功能就是可以对已经解析过的域名进行缓存,下次在访问这个域名的时候就可以直接返回IP地址,而不再需要经过DNS查询,这对于扶墙的来说,其实也算是一点优化,默认已经配置好了,我们只需要来演示下缓存的效果

安装dig工具

  1. $ yum install bind-utils -y
复制代码


演示

  1. $ dig www.centos.com | grep "Query time"
  2. ;; Query time: 88 msec
  3. $ dig www.centos.com | grep "Query time"
  4. ;; Query time: 0 msec
  5. $ dig www.centos.com | grep "Query time"
  6. ;; Query time: 0 msec
  7. $ dig www.centos.com | grep "Query time"
  8. ;; Query time: 0 msec
  9. $ dig www.有图比.com | grep "Query time"
  10. ;; Query time: 28 msec
  11. $ dig www.有图比.com | grep "Query time"
  12. ;; Query time: 0 msec
  13. $ dig ** | grep "Query time"
  14. ;; Query time: 71 msec
  15. $ dig ** | grep "Query time"
  16. ;; Query time: 0 msec
复制代码


看看上面的对比,查询时间缩小了不少倍,可见缓存已经产生作用。





第一次发技术贴,不知道markdown好难受。
发表于 2018-12-23 17:29:04 | 显示全部楼层
前排支持, hosts 泛解析挺有用的
发表于 2018-12-23 17:29:48 来自手机 | 显示全部楼层
前排留名 要火
发表于 2018-12-23 17:30:42 | 显示全部楼层
支持,这个host泛解析确实有用
 楼主| 发表于 2018-12-23 17:37:27 | 显示全部楼层
sdy413 发表于 2018-12-23 17:29
前排支持, hosts 泛解析挺有用的

我把一些**的网站都解析到了6.6.6.6,
发表于 2018-12-23 17:53:31 | 显示全部楼层
顺便安利下自己为dnsmasq写的web界面:https://github.com/helloxz/phpdns
发表于 2018-12-23 17:58:26 | 显示全部楼层
楼主有简单搭建 DNS over https 或 tls 的资料吗
 楼主| 发表于 2018-12-23 17:59:30 | 显示全部楼层
xiaoz 发表于 2018-12-23 17:53
顺便安利下自己为dnsmasq写的web界面:https://github.com/helloxz/phpdns

想问下你是怎么让dnsmasq读取规则的,难道每次增、删、改都要操作下文件?
 楼主| 发表于 2018-12-23 18:00:35 | 显示全部楼层
oMo 发表于 2018-12-23 17:58
楼主有简单搭建 DNS over https 或 tls 的资料吗

没遇到这方面的需求,,感觉Google下应该有人写过
发表于 2018-12-23 18:12:59 | 显示全部楼层
ansheng 发表于 2018-12-23 17:59
想问下你是怎么让dnsmasq读取规则的,难道每次增、删、改都要操作下文件? ...

定时任务执行一个shell脚本,shell脚本检测文件修改时间,如果修改过就重载dnsmasq,如果没有则不做操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-4-16 22:27 , Processed in 0.061872 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表