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

目录
  • 1、dnsmasq的简介
  • 2、dnsmasq的主要作用
  • 3、dnsmasq的解析流程
  • 4、dnsmasq的参数及常用设置说明(/etc/dnsmasq.conf )
    • 1)dnsmasq经常修改的比较重要参数说明
    • 2)查看配置文件语法是否正确,可执行下列命令
    • 3)DNS 缓存设置
    • 4)三个以上域名服务器
  • 5、dnsmasq的部署
    • 1)安装dnsmasq
    • 2)修改Dnsmasq配置文件dnsmasq.conf
    • 3)修改/etc/resolv.conf文件,并创建resolv.dnsmasq.conf和dnsmasq.hosts文件
    • 4)启动Dnsmasq
    • 5)测试是否配置成功。
  • 6、dnsmasq的使用及实现的功能
    • 1)作为本地DNS使用
    • 2)智能DNS加快解析速度。
    • 3)屏蔽网页广告
    • 4)指定域名解析到特定的IP上
    • 5)管理控制内网DNS
  • 总结

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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Linux下用dnsmasq做dns cache server的配置方法

    目前最新版是2.7.1 ,可去其FTP下载:http://www.thekelleys.org.uk/dnsmasq/ 安装过程比较简单 yum -y install dnsmasq* wget http://www.keepalived.org/software/keepalived-1.2.9.tar.gz tar zxvf keepalived-1.2.9.tar.gz cd keepalived-1.2.9 ./configure --prefix=/usr/local/keepaliv

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

    目录 1.dnsmasq的简介 2.dnsmasq的主要作用 3.dnsmasq的解析流程 4.dnsmasq的参数及常用设置说明(/etc/dnsmasq.conf ) 1)dnsmasq经常修改的比较重要参数说明 2)查看配置文件语法是否正确,可执行下列命令 3)DNS 缓存设置 4)三个以上域名服务器 5.dnsmasq的部署 1)安装dnsmasq 2)修改Dnsmasq配置文件dnsmasq.conf 3)修改/etc/resolv.conf文件,并创建resolv.dnsmasq.c

  • 如何用C写一个web服务器之基础功能

    服务器架构 目标架构 以 nginx 的思想来考虑本服务器架构,初步考虑如下图: 当然 php 进程也可以替换为其他的脚本语言,可以更改源码中的 command 变量实现. 服务器有一个 master 进程,其有多个子进程为 worker 进程,master 进程受理客户端的请求,然后分发给 worker 进程,worker 进程处理 http 头信息后将参数传递给 php 进程处理后,将结果返回到上层,再响应给客户端. 也考虑过使用 php-fpm 的 worker 进程池方式,那样的话 ph

  • 如何用C写一个web服务器之GCC项目编译

    前言 本想着接下来大概实现一下 CGI 协议,但是实现过程中被一个问题卡住了: C进程与php进程的交互数据类型问题: 在 C 进程中我准备将服务器处理后的请求数据存储在一个结构体内,然后将此结构体中的信息传给 PHP,而 PHP 进程内也会有一个全局数组与之对应,可是众所周之,结构体是 C 进程内的内存数据,是无法直接传给 PHP 使用的. 这时候我们也需要一种"协议"来解决进程数据类型的异构性.当然这个解决方案确定起来还是很简单的,无非是对C结构体进行序列化,使用xml,json,

  • 如何用C写一个web服务器之I/O多路复用

    前言 I/O模型 接触过 socket 编程的同学应该都知道一些 I/O 模型的概念,linux 中有阻塞 I/O.非阻塞 I/O.I/O 多路复用.信号驱动 I/O 和 异步 I/O 五种模型. 其他模型的具体概念这里不多介绍,只简单地提一下自己理解的 I/O 多路复用:简单的说就是由一个进程来管理多个 socket,即将多个 socket 放入一个表中,在其中有 socket 可操作时,通知进程来处理, I/O 多路复用的实现方式有 select.poll 和 epoll. select/p

  • 如何用C写一个web服务器之CGI协议

    目录 前言 CGI CGI请求 CGI响应 Nginx和PHP的CGI实现 SAPI PHP-FPM 纠偏 代码实现 http_parser cJSON 前言 这次更新主要实现一下 CGI 协议. 先放上GitHub链接https://github.com/zhenbianshu/tinyServer 作为一个服务器,基本要求是能受理请求,提取信息并将消息分发给 CGI 解释器,再将解释器响应的消息包装后返回客户端.在这个过程中,除了和客户端 socket 之间的交互,还要牵扯到第三个实体 -

  • 微服务之Feign的介绍与使用小结

    目录 前言: Feign的简介 Feign的优点 Feign如何使用 Feign的使用总结 前言: 最近在学习微服务相关的知识,看了黑马的相关课程,将关于Feign的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象 Feign的简介 Feign 是一个声明式的伪RPC的REST客户端,它用了基于接口的注解方式,很方便的客户端配置,Spring Cloud 给 Feign 添加了支持Spring MVC注解,并整合Ribbon及Eureka进行支持负载均衡. Feign 是⼀个 HTT

  • PowerShell重启服务命令Restart-Service详细介绍

    PowerShell重启服务(Restart-Service),使用PowerShell可以很方便的操作Windows系统服务,比如实现自动重启服务.本文就介绍如何使用PowerShell来重启服务,以及一些相关的内容.PowerShell中重启服务的cmdlet是Restart-Service,顾名思义就是把服务停止了再启动起来. PowerShell重启服务(Restart-Service) 使用PowerShell可以很方便的操作Windows系统服务,比如实现自动重启服务.本文就介绍如何

  • NodeJs搭建本地服务器之使用手机访问的实例讲解

    作为一名不懂后台的前端工程师来说,利用node.js搭建服务器,是一个非常好的选择.下面搭建一个简单的服务器: var app=require("express")(); //接收来自用户的任何请求 app.use(function(req,res){ res.write("The response from server"); res.end(); }); 这个ip地址,楼主之前一直以为是在这里指定IP地址,意味着别人输入这个IP地址就能访问到你的服务器了,其实并

  • Linux开机自启动服务两种方式介绍

    目录 rc.local方式 chkconfig方式 rc.local方式 1首先创建一个要自启动的脚本 vi /etc/scripts/createFile.sh #!/bin/bash #开机创建一个文件夹 mkdir /opt/ccc 2.给予执行权限 chmod 777 createFile.sh 3.在/etc/rc.d/rc.local文件中添加脚本的绝对路径 4.给与rc.local执行权限 chmod 777 rc.local 重启服务,发现已经在opt路径下创建了一个ccc的文件

  • Linux系统配置(服务控制)详细介绍

    目录 前言 一.系统服务控制 1.systemctl 2.target 3.常见系统服务 4.开机自启服务管理 二.服务管理 1.防火墙与核心防护 2.时间管理 3.SSH服务 结语 前言      Linux操作系统中包含了大量的服务程序,这些服务程序在切换运行级别时根据预设的状态进行启动或终止,其中有不少系统服务可能并不是用户需要的,但是默认也运行了 一.系统服务控制 1.systemctl      在CentOS系统中,各种系统服务的控制脚本默认放在usr/lib/systemd目录下,

随机推荐