WEB架构之DNS-部署DNS(01)

1.1 部署单机DNS

1.1.1 Yum安装Bind

[root@linux-node1 ~]# yum install -y bind-utils bind bind-devel bind-chroot
  • BIND相关软件包介绍如下:
  1. Bind:DNS主程序包
  2. bind-utils:DNS客户端程序包,如nslookup,dig
  3. bind-devel:DNS开发包,也可以叫做支持包
  4. bind-libs:被bind和bind-utils共同用到的库文件
  5. bind-chroot:chroot牢笼,伪装根目录,选装

1.1.2 编辑主配置文件(/etc/named.conf)

/etc/named.conf是主配置文件,用于配置全局选项以及创建查找区域。比如要创建一个leonshadow.com 的查找区域就需要在该配置文件中完成。为避免主配置文件过于臃肿,还有一个/etc/named.rfc1912.zones文件被包含进主配置文件,所以要新增查找区域的话推荐在该文件中配置。

[root@linux-node1 ~]# vim /etc/named.conf
options {
    # 修改为网卡的实际地址或者写为any,但端口一定别改
    listen-on port 53 { any; };
    listen-on-v6 port 53 { any; };
    # 存放区域配置文件的目录,每个域的zone文件(就是详细的解析信息文件)默认否存放于此
    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";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    # 只对该网段内的IP提供DNS服务,也可以用any
    allow-query     { 10.10.10.0/24; };
    # 让该DNS成为转发器
    forward only;
    # 转发到的服务器地址
    forwarders { 223.5.5.5;1.1.1.1; };

    # 允许递归查询
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.root.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
         channel warning {
                 file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
                 severity warning;
                 print-category yes;
                 print-severity yes;
                 print-time yes;
         };

         channel general_dns {
                 file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
                 severity info;
                 print-category yes;
                 print-severity yes;
                 print-time yes;
         };

         category default {
                 warning;
         };

         category queries {
                 general_dns;
         };
};

zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

1.1.3 编辑辅配置文件(/etc/named.rfc1912.zones)

使用辅助文件,该文件中定义了许多域名的zone文件,增加一个域名的定义,仅需4行即可。

[root@linux-node1 ~]# vim /etc/named.rfc1912.zones
zone "leonshadow.com" IN {
        # master代表是该域的主服务器
        type master;
        # 定义zone文件,存放路径由主配置文件directory决定
        file "leonshadow.com.zone";
};

1.1.4 编写Zone文件

建立区域数据zone文件(推荐复制named.localhost作为模板文件进行修改)注意修改文件权限为640,属主root,属组named。

[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone
# 第一条记录必须是SOA记录,用@表示当前区域,也就是leonshadow.com,IN为固定格式,SOA是记录类型,后面是DNS服务器和管理员邮箱,邮箱里的@用.表示
$TTL 1D
@ IN SOA  ns1.leonshadow.com. 632113590.qq.com. (
                                2020070901      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.leonshadow.com.

$ORIGIN leonshadow.com.
ns1     A     10.10.10.101
www     A     10.10.10.102
web     CNAME www
mx      MX    5   10.10.10.101  # 5 数值越小优先级越高
mx      MX    50  10.10.10.102

# 修改zone文件的属组
[root@linux-node1 ~]# chown root.named /var/named/leonshadow.com.zone
  • 配置文件解析:
  1. Serial只是一个序号,但这个序号可被用来作为 slave 与 master 更新的依据。 举例来说, master 序号为 100 但 slave 序号为 90 时,那么这个 zone file 的资料就会被传送到 slave 来更新了。由于这个序号代表新旧资料,通常建议可以利用日期来设定,举例来说上面的资料是在 2006/10/20 所写的第一次,所以用 2006102001 作为序号代表(yyyymmddnn,nn代表这一天是第几次修改)
  2. Refresh:除了根据 Serial 来判断新旧之外,我们可以利用这个 refresh(更新) 命令 slave 多久进行一次主动更新;
  3. Retry如果到了 Refresh 的时间但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机连线;
  4. Expire如果 slave 一直无法与 master 连接上,那么经过多久的时间之后则命令 slave 不要再连接 master 了,也就是说此时我们假设 master DNS 可能遇到重大问题而无法上线,则等待系统管理员处理完毕后再重新连接 slave DNS
  5. Minimun这个就有点象是 TTL

1.1.5 检查配置文件语法

仅仅是配置文件语法检测,而非逻辑检测。

[root@linux-node1 ~]# named-checkconf /etc/named.conf
[root@linux-node1 ~]# named-checkzone leonshadow.com leonshadow.com.zone
zone leonshadow.com/IN: loaded serial 2020070901
OK

1.1.6 启动DNS服务

[root@linux-node1 ~]# systemctl start named
# 重新加载服务也可使用如下命令
[root@linux-node1 ~]# rndc reload

[root@linux-node1 ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 10.10.10.101:53         0.0.0.0:*               LISTEN      1735/named          
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1735/named         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1226/sshd          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1735/named         
tcp6       0      0 :::53                   :::*                    LISTEN      1735/named         
tcp6       0      0 :::22                   :::*                    LISTEN      1226/sshd          
tcp6       0      0 ::1:953                 :::*                    LISTEN      1735/named         
udp        0      0 10.10.10.101:53         0.0.0.0:*                           1735/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1735/named         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           949/chronyd        
udp6       0      0 :::53                   :::*                                1735/named         
udp6       0      0 ::1:323                 :::*                                949/chronyd
  • 开启端口说明:
  1. TCP 53:主从复制时使用
  2. UDP 53:客户查询时使用
  3. 953:DNS远程控制工具rndc使用,可以进行数据的更新、服务的启动等工作

1.1.7 解析测试

[root@linux-node1 ~]# dig @10.10.10.101 web.leonshadow.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @10.10.10.101 web.leonshadow.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5103
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;web.leonshadow.com.        IN  A

;; ANSWER SECTION:
web.leonshadow.com. 86400   IN  CNAME   www.leonshadow.com.
www.leonshadow.com. 86400   IN  A   10.10.10.102

;; AUTHORITY SECTION:
leonshadow.com.     86400   IN  NS  ns1.leonshadow.com.

;; ADDITIONAL SECTION:
ns1.leonshadow.com. 86400   IN  A   10.10.10.101

;; Query time: 0 msec
;; SERVER: 10.10.10.101#53(10.10.10.101)
;; WHEN: Thu Jul 09 11:43:28 CST 2020
;; MSG SIZE  rcvd: 115

1.2 部署主从DNS

主从DNS服务器配置时,由于DNS大多数均为查询使用,只有管理员才会进行域名写入操作,一般主DNS不对外提供DNS解析服务,仅作为配置变更使用,而从DNS服务器可以加入到一个或多个集群中提供域名解析服务,此时只要主服务器配置不丢,从服务器就不需要考虑备份问题。

1.2.1 Yum安装Bind

主从DNS服务器执行相同操作,同1.1.1

1.2.2 编辑主配置文件(/etc/named.conf)

主从DNS服务器执行相同操作,同1.1.2

1.2.3 编辑辅配置文件(/etc/named.rfc1912.zones)

  • 主DNS服务器配置:
[root@linux-node1 ~]# vim /etc/named.rfc1912.zones
zone "leonshadow.com" IN {
        type master;
        file "leonshadow.com.zone";
        allow-transfer {
            10.10.10.102;   # 同步到从服务器的地址
        };
        notify  yes;
        also-notify {
            10.10.10.102;   # 同步到从服务器的地址
        };
};
  • 从DNS服务器配置:
[root@linux-node2 ~]# vim /etc/named.rfc1912.zones
zone "leonshadow.com" IN {
        type slave;
        masters { 10.10.10.101; };
        file "slaves/slave.leonshadow.com.zone";
};

1.2.4 在主DNS服务器上编写Zone文件

仅在主服务器上更新zone文件,同1.1.4

1.2.5 启动DNS服务

主从DNS服务器执行相同操作,同1.1.6

1.2.6 测试主从同步

1.2.6.1 添加记录测试

  • 仅在主DNS服务器上操作:
[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone
$TTL 1D
@ IN SOA  ns1.leonshadow.com. 632113590.qq.com. (
                                2020070902      ; serial,每次更新后需将此值+1,否则不同步
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.leonshadow.com.

$ORIGIN leonshadow.com.
ns1     A     10.10.10.101
www     A     10.10.10.102
web     CNAME www
mx      MX    5   10.10.10.101
mx      MX    50  10.10.10.102
test    A     10.10.10.100  # 添加此条记录

# 重载DNS服务
[root@linux-node1 ~]# rndc reload
server reload successful
  • 从服务器上进行验证:
[root@linux-node1 ~]# dig @10.10.10.102 test.leonshadow.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @10.10.10.102 test.leonshadow.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25709
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test.leonshadow.com.       IN  A

;; ANSWER SECTION:
test.leonshadow.com.    86400   IN  A   10.10.10.100

;; AUTHORITY SECTION:
leonshadow.com.     86400   IN  NS  ns1.leonshadow.com.

;; ADDITIONAL SECTION:
ns1.leonshadow.com. 86400   IN  A   10.10.10.101

;; Query time: 1 msec
;; SERVER: 10.10.10.102#53(10.10.10.102)
;; WHEN: Thu Jul 09 14:01:24 CST 2020
;; MSG SIZE  rcvd: 98

1.2.6.2 添加泛解析记录

  • 仅在主DNS服务器上操作:
[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone
$TTL 1D
@ IN SOA  ns1.leonshadow.com. 632113590.qq.com. (
                                2020070903      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.leonshadow.com.

$ORIGIN leonshadow.com.
ns1     A     10.10.10.101
www     A     10.10.10.102
web     CNAME www
test    A     10.10.10.100
*       A     1.2.3.4

[root@linux-node1 ~]# rndc reload
  • 从服务器上进行验证:
[root@linux-node1 ~]# dig @10.10.10.102 aaaa.leonshadow.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @10.10.10.102 aaaa.leonshadow.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12129
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;aaaa.leonshadow.com.       IN  A

;; ANSWER SECTION:
aaaa.leonshadow.com.    86400   IN  A   1.2.3.4

;; AUTHORITY SECTION:
leonshadow.com.     86400   IN  NS  ns1.leonshadow.com.

;; ADDITIONAL SECTION:
ns1.leonshadow.com. 86400   IN  A   10.10.10.101

;; Query time: 1 msec
;; SERVER: 10.10.10.102#53(10.10.10.102)
;; WHEN: Thu Jul 09 15:07:07 CST 2020
;; MSG SIZE  rcvd: 98

1.2.6.3 添加反向解析记录

  • 主DNS服务器上操作:
[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone
# 注意:此处192.168是反向的
zone "168.192.in-addr.arpa" IN {
        type master;
        file "168.192.zone";
        allow-transfer {
            10.10.10.102;
        };
        notify  yes;
        also-notify {
            10.10.10.102;
        };
};

[root@linux-node1 ~]# vim /var/named/168.192.zone
$TTL 1D
@ IN SOA  ns1.leonshadow.com. 632113590.qq.com. (
                                2020070901      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.leonshadow.com.
102.122    IN    PTR    a.leonshadow.com.  # 此处解析的IP地址为:192.168.122.102

[root@linux-node1 ~]# chown root.named /var/named/168.192.zone
[root@linux-node1 ~]# rndc reload
  • 从DNS服务器上操作:
[root@linux-node2 ~]# vim /etc/named.rfc1912.zones
# 注意:此处192.168是反向的
zone "168.192.in-addr.arpa" {
        type slave;
        masters { 10.10.10.101; };
        file "slaves/slave.168.192.zone";
};

[root@linux-node2 ~]# rndc reload
  • 测试运行结果:
[root@linux-node1 ~]# host 192.168.122.102 10.10.10.101
Using domain server:
Name: 10.10.10.101
Address: 10.10.10.101#53
Aliases:

102.122.168.192.in-addr.arpa domain name pointer a.leonshadow.com.

[root@linux-node1 ~]# host 192.168.122.102 10.10.10.102
Using domain server:
Name: 10.10.10.102
Address: 10.10.10.102#53
Aliases:

102.122.168.192.in-addr.arpa domain name pointer a.leonshadow.com.
温馨提示:本文最后更新于2022-12-20 20:57:40,已超过483天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/2027.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享