利用BIND搭建自己的DNS服务器

1. 实验内容

设置自己的DNS服务器。在windows或者Linux操作系统上,安装BIND软件,并为一些简单的名称配置它。使用诸如Domain Information Groper (DIG)的软件来测试你的配置。应确保你的DNS数据库包含有名称服务器、邮件服务器和标准服务器的记录。注意,如果你是在名为HOSTNAME的机器上运行BIND,就能解析形如RESOURCE-NAME.HOSTNAME的名称。

2.解决方案

实验环境的选择为ubuntu18.04, 实验中在自己主机上搭建了服务器,同时也在自己主机上(client)进行测试,实验主要分以下几个部分,

  • server上安装bind
  • 设置server的配置文件
    • 往bind的配置文件里面添加根区域
    • 编写资源记录文件
  • 设置client客户端的默认dns

  • 本机测试

安装bind

sudo apt-get update
sudo apt-get install bind9 bind9utils

设置server的配置文件

  • 首先,在 /etc/bind/目录下创建一个 db.shuitang.com文件, 这个文件是原来记录接下来自己设置的dns服务器里面资源的内容,后面会解释如何编写这个文件.

  • 然后, 到/etc/bind目录下,修改names.conf.default-zones, 添加如下内容:

    zone "shuitang.com"{
    	type master;
    	file "/etc/bind/db.shuitang.com";  //这个文件是刚刚创建的那个文件
    };
    

    表示在添加了一个新域: “shuitang.com”

  • 编写db.shuitang.com,内容如下:

    $TTL 604800
      
    @       IN      SOA     primary.shuitang.com. admin.shuitang.com. (
      
                                    20
                                604800
                                86400
                            2419200
                            604800 )
      
    @       IN      NS      primary.shuitang.com.
    primary IN      A       172.26.5.123
      
    ;Mail
    shuitang.com. IN  MX  10 mail.shuitang.com.
      
    mail    IN      A       172.26.5.123
      
    www     IN      A       172.26.5.123
    bbb     IN      A       172.26.5.123
    
  • 编辑named.cond.options(也在/etc/bin/目录下)

    打开监听操作: 添加下面两条语句

    listen-on port 53 {127.0.0.1;172.26.5.123; };   # 此处填写ns1的内网IP地址。仅在内网监听
            allow-transfer { none; };      # 默认禁用zone transfer
    

    在文件中的视图:

    options {
            directory "/var/cache/bind";
      
            //recursion yes;                 # 启用递归寻址
            //allow-recursion { trusted; };  # 允许“trusted”列表前来递归寻址
            listen-on port 53 {127.0.0.1;172.26.5.123; };   # 此处填写ns1的内网IP地址。仅在内网监听
            allow-transfer { none; };      # 默认禁用zone transfer
      
            // If there is a firewall between you and nameservers you want
            // to talk to, you may need to fix the firewall to allow multiple
            // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
      
            // If your ISP provided one or more IP addresses for stable
            // nameservers, you probably want to use them as forwarders.
            // Uncomment the following block, and insert the addresses replacing
            // the all-0's placeholder.
      
            // forwarders {
            //      0.0.0.0;
            // };
      
            //========================================================================
            // If BIND logs error messages about the root key being expired,
            // you will need to update your keys.  See https://www.isc.org/bind-keys
            //========================================================================
            dnssec-validation auto;
      
            auth-nxdomain no;    # conform to RFC1035
            listen-on-v6 { any; };
    };
      
    
  • 配置完成,重启服务

    service bind9 restart
    

设置客户端的默认dns

修改客户端/etc/resolv.conf文件

nameserver 172.26.5.123
#nameserver 127.0.1.1

测试

dig www.shuitang.com
dig mail.shuitang.com

dns1

dns2

参考

Beginner’s guide to implementing DNS server using BIND: https://linuxtechlab.com/configuring-dns-server-using-bind/ , 2019-11-16

DNS中SOA是什么: https://www.zhihu.com/question/35428551 , 2019-11-16

https://blog.csdn.net/lyhdream/article/details/77620932 , 2019-11-16