介绍:什么是DNS服务器就不说了,至于搭建dns服务器,在linux上有很多的服务可以搭建的,比如:bind、dnsmasq、unbound....等;

直接上干货:

搭建环境:redhat7.0,yum源挂载的是redhat7.0的光盘;
yum源自己配置成本地的就行了;

一、Dnsmasq安装
    yum install dnsmasq -y

二、Dnsmasq配置

1、Dnsmasq的配置文件为:/etc/dnsmasq.conf

2、编辑/etc/dnsmasq.conf

找到下列参数修改或添加:

    resolv-file=/etc/resolv.dnsmasq.conf           //会从这个文件中寻找上游dns服务器
    strict-order                                  //去掉前面的#
    addn-hosts=/etc/dnsmasq.hosts                //在这个目录里面ip和域名dnsmasq 
    listen-address=127.0.0.1,172.22.10.50      //监听地址

3、修改/etc/resolv.conf

        /etc/resolv.conf 定义了本机的dns地址(在本身不是dns服务器之前),将该文件内容注释并添加  nameserver 127.0.0.1  ,使用本机作为dns服务器;

4、创建 /etc/resolv.dnsmasq.conf 文件并添加上游dns服务器的地址

        默认没有  /etc/resolv.dnsmasq.conf ,需要按照dnsmasq配置文件中参数定义的路径创建;

        touch /etc/resolv.dnsmasq.conf

        echo 'nameserver 114.114.114.114' > /etc/resolv.dnsmasq.conf       

        * 以 114.114.114.114 为上游的dns服务器;

        resolv.dnsmasq.conf 中设置的是真正的nameserver,可以用电信、联通等公共的DNS

5、创建 /etc/dnsmasq.hosts 文件

           touch /etc/dnsmasq.hosts

           vim 编辑 /etc/dnsmasq.hosts 文件,添加ip对应的域名,例如:

                         192.168.111.111       xpt.redhat.cn

            这样,当客户端要求解析 xpt.redhat.cn 时,会解析为192.168.111.111 ;

三、Dnsmasq启动

1、设置Dnsmasq开机启动并启动Dnsmasq服务:
    systemctl start dnsmasq.service
    systemctl enable dnsmasq.service

2、netstat -tunlp | grep 53 查看Dnsmasq是否正常启动:
    # netstat -tlunp|grep 53
    tcp        0      0 0.0.0.0:53                  0.0.0.0:                   LISTEN      2491/dnsmasq        
    tcp        0      0 :::53                       :::
                       LISTEN      2491/dnsmasq        
    udp        0      0 0.0.0.0:53                  0.0.0.0:                               2491/dnsmasq        
    udp        0      0 :::53                       :::
       

如果有防火墙的话还需要打开防火墙:

 firewall-cmd --add-service=dns        //允许防火墙临时放行dns服务;

firewall-cmd --add-service=dns --permanent        //允许dns通过,永久生效;

#####  到此处,一个简单的dns服务器就搭建成功了,主要是理解配置文件中参数定义的文件路径都是什么作用;

可以使用 自己的windows电脑做测试,将自己windows的dns修改成搭建dns服务器的ip;

运行cmd,使用host 或者nslookup命令都可以:

              hsot   xpt.redhat.cn

              nslookup   xpt.redhat.cn

工作流程:

          windows向dns服务器发送请求解析 xpt.redhat.cn ,dns服务器接收到之后先去 /etc/dnsmasq.hosts 文件中寻找有误匹配的ip、域名,如果有则返回域名对应的ip,如果没有则向 /etc/resolv.dnsmasq.conf 中定义的上级dns服务器发送请求解析;

下面是对dns服务器配置进一步的深入:

1.对参数的解释:
    resolv-file            定义dnsmasq从哪里获取上游DNS服务器的地址, 默认是从/etc/resolv.conf获取。
    strict-order        表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
    listen-address        定义dnsmasq监听的地址,默认是监控本机的所有网卡上。
                            局域网内主机若要使用dnsmasq服务时,指定本机的IP地址。
    address                启用泛域名解析,即自定义解析a记录,如下配置为demon.com这个域名:
                            address=/demon.com/127.0.0.1  #访问demon.com时的所有域名都会被解析成127.0.0.1
    server                指定dnsmasq程序使用哪个DNS服务器进行解析。对于不同的网站可以使用不同的域名对应解析如下配置
                            server=/google.com/8.8.8.8    #表示对于google的服务,使用谷歌的DNS解析。
    bogus-nxdomain        为防止DNS污染,使用参数定义的DNS解析的服务器。注意:如果是阿里云服务器上配置dnsmasq要启用此项。

############## dns服务器的优化 ################

一、应对ISP的DNS劫持
1.输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。
    先随便 nslookup 一个不存在的域名,看看ISP商劫持的IP地址。        
2.接着编辑/etc/dnsmasq.conf文件,将:bogus-nxdomain=123.123.123.123 加入进去,
    后面的IP是刚刚查询到的DNS劫持IP地址;
3.重启dnsmasq,再尝试打开不存在的域名,这时浏览器就会显示正常的无法连接页面了。

二、智能DNS加快解析速度。
    打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。
        #国内指定DNS
        server=/cn/114.114.114.114
        server=/taobao.com/223.5.5.5
        server=/taobaocdn.com/114.114.114.114
        #国外指定DNS
        server=/google.com/8.8.8.8
        server=/cn/表示所有的cn域名都使用114这个公共DNS,
        
三、屏蔽网页广告。
    将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。
    address=/ad.youku.com/127.0.0.1
    address=/ad.iqiyi.com/127.0.0.1    

四、指定域名解析到特定的IP上。
    这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。
    address=/freehao123.com/123.123.123.123

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