轻量级域名解析服务器之dnsmasq的介绍与部署

 更新时间:2022年7月19日 13:36  点击:68 作者:最美dee时光

1、dnsmasq的简介

dnsmasq提供DNS缓存和DHCP服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。作为DHCP服务器,dnsmasq可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个PXE服务器。

2、dnsmasq的主要作用

  1. 将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。
  2. 应对ISP的DNS劫持(反DNS劫持),输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址。
  3. 智能DNS加快解析速度,打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。
    国内指定DNS
    server=/cn/114.114.114.114
    server=/taobao.com/114.114.114.114
    server=/taobaocdn.com/114.114.114.114
    国外指定DNS
    server=/google.com/223.5.5.5
  4. 屏蔽网页广告,将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。
    address=/ad.youku.com/127.0.0.1
    address=/ad.iqiyi.com/127.0.0.1
  5. 指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。
    address=/www.baidu.com/123.123.123.123
  6. 管理控制内网DNS,首先将局域网中的所有的设备的本地DNS设置为已经安装Dnsmasq的服务器IP地址。然后修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。
    例如想让局域网中的所有用户访问www.freehao123.com时跳转到192.168.0.2,添加:192.168.0.2 www.freehao123.com在Hosts文件中既可,整个过程也可以说是“DNS劫持”。

3、dnsmasq的解析流程

  • dnsmasq先去解析hosts文件;
  • 再去解析/etc/dnsmasq.d/下的*.conf文件;
  • 上面这些文件的优先级要高于dnsmasq.conf,我们自定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的。

如果不想用hosts文件做解析,我们可以在/etc/dnsmasq.conf中加入no-hosts这条语句,这样的话就直接查询上游DNS了;
如果我们不想做上游查询,就是不想做正常的解析,我们可以加入no-reslov这条语句。

4、dnsmasq的参数及常用设置说明(/etc/dnsmasq.conf )

1)dnsmasq经常修改的比较重要参数说明

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解析。

2)查看配置文件语法是否正确,可执行下列命令

dnsmasq --test

3)DNS 缓存设置

要在单台电脑上以守护进程方式启动dnsmasq做DNS缓存服务器,编辑/etc/dnsmasq.conf,添加监听地址:

listen-address=127.0.0.1

如果用此主机为局域网提供默认DNS,请用为该主机绑定固定IP 地址,设置:

listen-address=10.10.x.x

这种情况建议配置静态IP

多个ip地址设置:

listen-address=127.0.0.1,10.10.x.x 

4)三个以上域名服务器

Linux处理DNS 请求时有个限制,在 resolv.conf 中最多只能配置三个域名服务器(nameserver)。作为一种变通方法,可以在 resolv.conf 文件中只保留localhost 作为域名服务器,然后为外部域名服务器另外创建 resolv-file 文件。首先,为dnsmasq 新建一个域名解析文件:

cat /etc/dnsmasq.d/resolv.dnsmasq.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

然后编辑 /etc/dnsmasq.conf 让 dnsmasq 使用新创建的域名解析文件:

cat /etc/dnsmasq.conf
...
resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf
...

5、dnsmasq的部署

1)安装dnsmasq

yum -y install dnsmasq

安装完毕后,可以通过dnsmasq -v命令查看版本,有版本号出来就代表安装上了。

2)修改Dnsmasq配置文件dnsmasq.conf

修改配置文件前一定要先备份

cp /etc/dnsmasq.conf  /etc/dnsmasq.conf.bak
echo 'resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf  #表示dnsmasq 会从这个指定的文件中寻找上游dns服务器
echo 'addn-hosts=/etc/dnsmasq.d/dnsmasq.hosts' >> /etc/dnsmasq.conf  #添加读取额外的 hosts 文件路径,可以多次指定;也可以指定为目录,会自动扫描此目录下的配置文件
cat /etc/dnsmasq.conf
...
strict-order      #取消这一行的注释,表示严格按照resolv.conf中的顺序进行查找
listen-address=127.0.0.1,192.168.115.120   #多个ip地址设置;如果想允许所有的用户使用你的DNS解析服务器,把listen-address去掉即可
...

3)修改/etc/resolv.conf文件,并创建resolv.dnsmasq.conf和dnsmasq.hosts文件

echo 'nameserver 127.0.0.1' > /etc/resolv.conf
yes | cp /etc/resolv.conf  /etc/dnsmasq.d/resolv.dnsmasq.conf
echo 'nameserver 8.8.8.8' >>/etc/dnsmasq.d/resolv.dnsmasq.conf
echo 'nameserver 10.10.0.120' >>/etc/dnsmasq.d/resolv.dnsmasq.conf
yes | cp /etc/hosts  /etc/dnsmasq.d/dnsmasq.hosts

resolv.dnsmasq.conf中设置的是真正的Nameserver,可以填写各大商家提供的免费DNS地址。

4)启动Dnsmasq

systemctl start dnsmasq             #启动dnsmasq服务
systemctl enable dnsmasq         #设置成开机自启动
netstat -antp|grep 53                  #查看端口是否启动成功

5)测试是否配置成功。

第一次查询耗时150ms,第二次查询耗时0ms

6、dnsmasq的使用及实现的功能

1)作为本地DNS使用

将dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。

ping harbor私服的域名并访问,发现可以ping通且可以正常访问

2)智能DNS加快解析速度。

打开/etc/dnsmasq.conf文件,server=添加指定的DNS,例如国内外不同的网站使用不同的DNS。

cat /etc/dnsmasq.conf
...
国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
国外指定DNS
server=/google.com/223.5.5.5
...

3)屏蔽网页广告

将广告的URL指定127.0.0.1这个IP,就可以将网页上讨厌的广告给去掉了。

cat /etc/dnsmasq.conf
...
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
...

4)指定域名解析到特定的IP上

这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。

cat /etc/dnsmasq.conf
...
address=/www.baidu.com/123.123.123.123
...

访问www.baidu.com会发现无法访问此网站

5)管理控制内网DNS

首先将局域网中的所有的设备的本地DNS设置为已经安装dnsmasq的服务器IP地址;然后修改已经安装dnsmasq的服务器hosts文件:/etc/hosts,指定域名到特定的IP中。

例如:想让局域网中的所有用户访问www.http123.com时跳转到10.10.0.111,添加'10.10.0.111 www.http123.com'hosts文件中既可,整个过程也可以说是"DNS劫持"。

echo'10.10.0.111 www.http123.com' >> /etc/hosts

浏览器访问www.http123.com就会自动跳转到10.10.0.111上

总结 

到此这篇关于轻量级域名解析服务器之dnsmasq的文章就介绍到这了,更多相关轻量级域名解析服务器dnsmasq内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

原文出处:https://blog.csdn.net/weixin_44729138/article/details/106020

相关文章

  • Asp.Net Core轻量级Aop解决方案:AspectCore

    这篇文章主要介绍了Asp.Net Core轻量级Aop解决方案:AspectCore,需要的朋友可以参考下...2021-09-22
  • 基于C#实现的轻量级多线程队列图文详解

    这篇文章主要给大家介绍了关于基于C#实现的轻量级多线程队列的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • 轻量级域名解析服务器之dnsmasq的介绍与部署

    dnsmasq这个轻量级的dns服务器,具有开源,搭建简单,维护成本低的优点,符合生产环境需求,下面这篇文章主要给大家介绍了关于轻量级域名解析服务器之dnsmasq的介绍与部署的相关资料,需要的朋友可以参考下...2022-07-19
  • JS轻量级函数式编程实现XDM二

    这篇文章主要为大家介绍了JS函数式编程实现XDM示例详解第2/3篇,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...2022-06-15
  • JS轻量级函数式编程实现XDM三

    这篇文章主要为大家介绍了JS轻量级函数式编程实现XDM示例详解第3/3篇,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...2022-06-15