DNS服务器搭建

本文详细介绍了DNS请求流程,包括区域解析库中的资源记录类型,如SOA、NS、MX、A等,并展示了资源记录的格式。接着,通过实例演示了DNS服务器的搭建过程,强调了子域配置和从DNS服务器的重要性。最后,总结了配置过程中需要注意的事项,如权限、版本号管理和服务器时钟同步。
摘要由CSDN通过智能技术生成

DNS请求流程

Client –>hosts文件 –>DNS Service Local Cache –> DNS Server (recursion) –> Server Cache –>iteration(迭代) –> 根–> 顶级域名DNS–>二级域名DNS…

DNS服务资源记录概念

区域解析库:由众多RR组成:

  • 资源记录: Resource Record, RR

  • 记录类型: A, AAAA, PTR, SOA, NS, CNAME, MX
    SOA: Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
    A: internet Address,作用, FQDN –> IP
    AAAA:FQDN –> IPv6
    PTR:PoinTeR, IP –> FQDN
    NS:Name Server,专用于标明当前区域的DNS服务器
    CNAME:Canonical Name,别名记录
    MX:Mail eXchanger,邮件交换器

资源记录格式

资源记录定义的格式: 语法: name [TTL] IN rr_type value 注意:
(1) TTL可从全局继承,所以以下记录都没有写TTL
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

SOA记录

name: 当前区域的名字,例如“baidu.com.”
value: 有多部分组成
(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.baidu.com
(3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
例如:

baidu.com. 1D IN SOA ns.baidu.com. admin.baidu.com. (
                                            2015042201 ;序列号
                                            2H ;刷新时间
                                            10M ;重试时间
                                            1W ;过期时间
                                            1D ;否定答案的TTL值,即错误查询的缓存时间
                                            )

刷新时间:主DNS推送数据到从DNS服务器失败后再次推送的时间
重试时间:从DNS向主DNS拉取数据失败后再次拉取数据的时间
过期时间:再次推送或者拉取失败持续时间

NS记录

name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.baidu.com.
注意:一个区域可以有多个NS记录
例如:

baidu.com. IN NS ns1.baidu.com.
baidu.com. IN NS ns2.baidu.com.

注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

MX记录

name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名

一个区域内, MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
例如:

baidu.com. IN MX 10 mx1.baidu.com.
IN MX 20 mx2.baidu.com.

注意:
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

A记录

name: 某主机的FQDN,例如www.baidu.com.
value: 主机名对应主机的IP地址
例如:

www.baidu.com. IN A 1.1.1.1
mx1.baidu.com. IN A 3.3.3.3
mx2.baidu.com. IN A 4.4.4.4
$GENERATE 1-254 HOST$ A 1.2.3.$
*.baidu.com. IN A 5.5.5.5 #如果用户输入wwww.baidu.com就会解析指定的IP
baidu.com. IN A 6.6.6.6 #用户直接输入baidu.com就可以解析IP

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

其他记录

AAAA:
name: FQDN
value: IPv6
PTR:
name: IP,有特定格式,把IP地址反过来写, 1.2.3.4,要写作4.3.2.1;而有特定后缀: in-addr.arpa.,所以完整写法为
: 4.3.2.1.in-addr.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.baidu.com.
如1.2.3为网络地址,可简写成:
4 IN PTR www.baidu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写
下面是自己写的DNS反向解析:

$TTL 1D
@       IN      SOA     dns.zhang.com.  admin.zhang.com. (2 1D 2m 1W 3h)
                                    NS      dns.zhang.com.
6.6.168.192.in-addr.arpa.           PTR     dns.zhang.com.
7                                   PTR     webser.zhang.com.
110                                 PTR     mail.zhang.com.

别名记录

CNAME:
name: 别名的FQDN
value: 真正名字的FQDN
例如:

www.baidu.com. IN CNAME websrv.baidu.com.

也可以用于cdn加速设置
例如:

www.baidu.com.    IN CNAME www.cdncloud.com.
www.cdncloud.com. IN   A   111.111.111.123

DNS服务器搭建实例

[root@centos6 ~]# vi /etc/named.conf
options {
        listen-on port 53 { localhost; }; #监听本机IP的53端口
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; }; //anyone can query
        allow-transfer  { 192.168.6.66; };      //用于主从结构,从服务器可以同步主服务器数据
        recursion yes; #可以递归查询,如果本服务器没有结果可以到帮忙到根服务器查询
        dnssec-enable no;
        dnssec-validation no;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};

[root@centos6 ~]# vi /etc/named.rfc1912.zones
#添加正向解析
zone "zhang.com" IN {
        type master;
        file "zhang.com.zone";
};
#添加反向解析
zone "6.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.6.loopback";
};

解析数据库文件默认在/var/named/目录下
[root@centos6 ~]# vi /var/named/zhang.com.zone 
$TTL 86400      ; 1 day
@               IN SOA  zhang.com. admin.zhang.com. (
                                1          ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                        NS      dns.zhang.com.
                        MX      10      mail.zhang.com.
dns                     A       192.168.6.6
webser.zhang.com.       A       192.168.6.7
mail                    A       192.168.6.110
www.zhang.com.                  CNAME   webser.zhang.com.
zhang.com.              A       192.168.6.6
*                       A       192.168.6.99

[root@centos6 ~]# vi /var/named/192.168.6.loopback 
$TTL 1D
@       IN      SOA     dns.zhang.com.  admin.zhang.com. (2 1D 2m 1W 3h)
                NS      dns.zhang.com.
6               PTR     dns.zhang.com.
7               PTR     webser.zhang.com.
110             PTR     mail.zhang.com.
[root@centos6 ~]# service named restart
[root@centos6 ~]# dig www.zhang.com @127.0.0.1 #可以通过这个命令测试是否成功
[root@centos6 ~]# dig -x 192.168.6.6 @127.0.0.1 #可以通过这个命令测试反向解析是否成功

以上是配置DNS服务器整个过程,每次修改完配置文件记得要把serial编号加一。

子域

以下实例是父域和子域在不同服务器上,如果在同一台服务器上,直接可以当成父域的一条记录,直接上配置文件

父域服务器解析数据库
[root@centos6 ~]# vi /var/named/zhang.com.zone
$TTL 86400      ; 1 day
@               IN SOA  zhang.com. admin.zhang.com. (
                                1          ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                        NS      dns
son.zhang.com.          NS      dns2 #子域
dns2                    A       192.168.6.16 #子域IP
dns                     A       192.168.6.6

子域服务器解析
[root@centos6 ~]# vi /etc/named.rfc1912.zones
zone "son.zhang.com" IN {
        type master;
        file "son.zhang.com.zone";
};

子域服务器解析数据库
[root@centos6 ~]# vi /var/named/son.zhang.com.zone 
$TTL 86400      ; 1 day
@               IN SOA  son.zhang admin.zhang.com. (
                                1          ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                        NS      dns.son.zhang.com.
                        MX      10 mail
dns.son.zhang.com.      A       192.168.6.16
mail                    A       192.168.6.160
webser                  A       192.168.6.190
www                     CNAME   webser
*                       A       192.168.6.123
son.zhang.com.          A       192.168.6.133

从DNS服务器

主服务器
[root@centos6 ~]# vi /etc/named.conf
options {
        listen-on port 53 { localhost; }; #监听本机IP的53端口
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; }; //anyone can query
        allow-transfer  { 192.168.6.66; };      //用于主从结构,指定哪个服务器可以同步数据,默认允许所有主机,192.168.6.66是从服务器,这里只允许它同步数据
        recursion yes; #可以递归查询,如果本服务器没有结果可以到帮忙到根服务器查询
        dnssec-enable no;
        dnssec-validation no;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};

从服务器
[root@centos6 ~]# vi /etc/named.rfc1912.zones
zone "zhang.com" IN {
        type slave;
        masters { 192.168.6.6; };
        file "slaves/zhang.com.zone";
};
只要主服务器开启区域传送,当从服务器重启服务时会自动拷贝一份主服务器上的解析数据库到slaves目录下,这时如果主DNS服务器宕机,从服务器也可以查询

总结

在配置的过程中可能会出现一些问题,在此总结下

  • 首先要注意权限和属组的问题
-rw-r--r-- 1 named named  505 Sep 22 11:01 zhang.com.zone 
#区域数据库的属组要为named,所有组要有读的权限,如果要拷贝记得加-p选项
  • 在/etc/named.conf文件里的选项
listen-on port 53 { localhost; }; #监听本机53端口
allow-query     { any; }; #允许所有主机查询
allow-transfer  { 192.168.6.66; }; #开启区域传送,用在主从结构里,允许从服务器更新数据
recursion yes;
  • 修改区域解析数据库后要增加版本号,否则数据不会更新,版本号不能超过10位数。

  • 同步服务器间的时钟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值