DNS的部署(BIND)的经验之谈 (有常见报错总结)

这里不介绍DNS的基础知识,只关于DNS部署相关的内容

首先理解两个概念: 递归请求和迭代请求

所谓递归请求:即为DNS服务器要去DNS的根服务器一层一层的请求下来(相当消耗资源)

所谓迭代请求:DNS服务器从自己负责的区域这一层或往下就能找到(不需要去DNS根服务器找)

本机主DNS服务器:192.168.150.129 

从DNS服务器:192.168.150.130

子域DNS服务器:192.168.150.131

BIND的基础安装

(1)yum安装BIND安装包   
yum install -y bind  (测试仅需安装此包即可,企业互联网环境还可以安装bind-chroot包)
(2)修改主配置文件/etc/name.conf  (具体配置可以查看https://blog.csdn.net/qq_40628106/article/details/83749584)
options{}中   listen-on port 53 { 127.0.0.1; };---改成--->listen-on port 53 { any; };    表示监听任意端口
              dnssec-enable yes;---改成--->dnssec-enable no;                             关闭dnssec功能
              dnssec-validation yes;--改成-->dnssec-validation no;
              allow-query     { localhost; };---改成-->//allow-query     { localhost; }; 直接注释掉,不管是主从服务器,还是子域服务器都要注释掉,防止访问不到 
(3)检查修改后的配置文件是否有语法错误
named-checkconf 命令
(4)启动服务
systemctl start named.service   启动后可用systemctl status named.service查看是否启动成功
netstat -tunlp (查看tcp和udp的53号端口是否是named进程在进行监听,监听后说明服务已打开)
(5)修改DNS配置文件将指向改为本机地址
vim /etc/resolv.conf中
nameserver 192.168.150.2---改为--->nameserver 192.168.150.128
(6)使用dig等命令测试即可
dig -t A www.baidu.com

配置解析一个正向区域(结合之前的BIND的安装与配置)

以magedu.com为例  (这个域名应该事先从互联网上注册,并申请修改NS记录指向要作为DNS服务器的地址)
(配置是在辅助文件上做的,而且一般不在主配置文件上添加)
主配置文件/etc/named.conf文件指定了 /etc/named.rfc1912.zones 这个文件,这个文件是特别重要,我们后面要靠该文件来关联 主配置文件和许多域文件,如DNS正向解析的域文件,DNS反向解析的域文件。
(1)配置/etc/named.rfc1912.zones文件
vim /etc/named.rfc1912.zones  在最后添加
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
};
这样即为添加了一个区域                                  
(2)新建上面zone中配置的magedu.com.zone (在/var/named/目录下)
cd /var/named
vim magedu.com.zone  (创建文件的同时在文件中创建如下文本)
(文本中主要记录为A或AAAA)
$TTL 3600    #宏,用于替代资源记录定义格式中的ttl
$ORIGIN magedu.com.   (也是宏的一种,用于下面的名称自动在后面补全magedu.com.)
@       IN      SOA     ns1.magedu.com. admin.magedu.com.  (      
                                        2021081601       ; serial
                                        1H               ; refresh
                                        10M              ; retry
                                        1D               ; expire
                                        1D )             ; minimum
        IN      NS      ns1    (这个ns1本来应该写全,如ns1.magedu.com.,但是上面的宏会自动补全)
        IN      MX   10 mx1
        IN      MX   20 mx2
ns1     IN      A       192.168.150.128
mx1     IN      A       192.168.150.129
mx2     IN      A       192.168.150.130
www     IN      A       192.168.150.128
web     IN      CNAME   www
bbs     IN      A       192.168.150.128
bbs     IN      A       192.168.150.129

 (3)修改/var/named/magedu.com.zone文件权限
 ls -l /var/named/magedu.com.zone   (先查看文件权限)
 (修改文件权限属组为named,其他用户不能拥有任何权限)
 chmod o= /var/named/magedu.com.zone
 chown :named /var/named/magedu.com.zone
 (4)检查语法错误
 named-checkconf   (检查主配置文件是否有语法错误)
 named-checkzone magedu.com /var/named/magedu.com.zone  (检查magedu.com对应的/var/named/magedu.com.zone配置文件是否有语法错误)  出现ok才为正常
 (5)装载区域  重载配置文件
 rndc status  命令  查看-->number of zones:字段
 rndc reload  或者  systemctl reload named.service (装载区域,重载配置文件) 
 用rndc status  命令  查看-->number of zones:字段会发现+1
 (6)检测
 dig -t A www.magedu.com  --->结果会显示  (同样可以测试web.magedu.com  bbs.magedu.com等)
(和你在/var/named/magedu.com.zone文件中配置的一样,会显示www.magedu.com对应的地址就是本机地址)
  ;; ANSWER SECTION:
www.magedu.com.         3600    IN      A       192.168.150.128

;; AUTHORITY SECTION:
magedu.com.             3600    IN      NS      ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.         3600    IN      A       192.168.150.128

配置解析一个反向区域(结合之前的BIND的安装与配置)

基本和上面的正向区域没太大区别

(1)配置/etc/named.rfc1912.zones文件
vim /etc/named.rfc1912.zones  在最后添加
zone "ZONE_NAME" IN {  
        type master;
        file "ZONE_NAME.zone";
};  
示例:
zone "150.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.150.zone";
};
注意:正向区域 ZONE_NAME为区域,如baidu.com,但是反向区域的ZONE_NAME为“反写的网段地址.in-addr.arpa” 
反向区域的ZONE_NAME示例:正常网段为192.168.150  ————> 150.168.192.in-addr.arpa 
 (2)创建并配置区域数据库文件(反向区域主要配置PTR)
cd /var/named
vim 192.168.150.zone  (创建文件的同时在文件中创建如下文本)  
    
$TTL 3600
$ORIGIN 150.168.192.in-addr.arpa.  (注意和正向区域区分)
@       IN      SOA     ns1.magedu.com. admin.magedu.com.  (
                                        2021081701       ; serial
                                        1H               ; refresh
                                        10M              ; retry
                                        1D               ; expire
                                        1D )             ; minimum
        IN      NS      ns1.magedu.com.
128     IN      PTR     ns1.magedu.com.
129     IN      PTR     mx1.magedu.com.
130     IN      PTR     mx2.magedu.com.
128     IN      PTR     www.magedu.com.

 (3)修改192.168.150.zone文件权限
 ls -l 192.168.150.zone   (先查看文件权限)
 (修改文件权限属组为named,其他用户不能拥有任何权限)
 chmod o= 192.168.150.zone
 chown :named 192.168.150.zone 

  (4)检查语法错误
 named-checkconf   (检查主配置文件是否有语法错误)
 named-checkzone 150.168.192.in-addr.arpa /var/named/192.168.150.zone
 
 (5)装载区域  重载配置文件
 rndc status  命令  查看-->number of zones:字段
 rndc reload  或者  systemctl reload named.service (装载区域,重载配置文件) 
 用rndc status  命令  查看-->number of zones:字段会发现+1
 
 (6)检测
 dig -x 192.168.150.128   (同样可以检测配置文件中配置的192.168.150.129  192.168.150.130)

BIND实现主从DNS服务

DNS主从服务器

重点:主从的概念是从区域级别来定义的

理解:(1)如一个主的DNS服务器负责baidu.com和magedu.com两个区域的解析,那么从服务器可以选择其中一个区域配置,可以两个区域都配置(只有配置了相应的区域才能实现主从同步,没配置的区域从服务器不管)

(2)也可以从服务器负责baidu.com的主要解析(即为baidu.com的主DNS服务器),主的DNS服务器即配置为baidu.com区域的从服务器

(3)也可以级联复制(即01从服务器同步主DNS服务器,再来一台02从服务器同步01从服务器)

对于主从服务器如何实现负载均衡:(1)对于本地客户端来说,假如说有100台主机,那么50台主机的/etc/resolv.conf文件中配置为主DNS服务器,另外50台配置为从服务器即可

(2)对于外部的客户端递归的请求,那么在主从服务器的上级(如baidu.com的上级com)采用轮询机制即可,即要在上级服务器的区域数据库文件中配置NS为两台(主从两台服务器均要告诉上级服务器)

配置解析一个从区域

在从服务器中

基础安装bind部分
1.首先也是先用yum安装bind相关的安装包
yum install -y bind
2.安装好后修改主配置文件/etc/name.conf  (具体配置可以查看https://blog.csdn.net/qq_40628106/article/details/83749584)
options{}中   listen-on port 53 { 127.0.0.1; };---改成--->listen-on port 53 { 127.0.0.1; 192.168.150.129; 192.168.150.130; };  添加上主DNS服务器的地址和自己的地址
              dnssec-enable yes;---改成--->dnssec-enable no;                             关闭dnssec功能
              dnssec-validation yes;--改成-->dnssec-validation no;
3检查修改后的配置文件是否有语法错误
named-checkconf 命令
4启动服务
systemctl start named.service   启动后可用systemctl status named.service查看是否启动成功              

配置成为从服务器部分
(1)定义区域,配置/etc/named.rfc1912.zones文件
vim /etc/named.rfc1912.zones  在最后添加
zone "ZONE_NAME" IN {
    type slave;                   
    file "slaves/ZONE_NAME.zone";    --slaves目录专用于从主DNS服务器同步数据
    masters {MASTER_IP;};      --告诉谁为主DNS服务器,便于同步
};
示例:
zone "magedu.com" IN {
        type slave;
        file "slaves/magedu.com.zone";
        masters { 192.168.150.129; };
};
(2)重载从服务器,注意!!!!一定要在主服务器配置了NS记录的情况后进行重载
rndc reload  或者  systemctl reload named.service (装载区域,重载配置文件)
cd /var/named/slaves  在这里目录下即可看到自动生成的magedu.com.zone
如果看不到可以看下面的  “从区域解析相关错误”
(2)测试
dig -t A www.magedu.com @192.168.150.130

 
  
在主服务器中
(1)确保区域数据文件中为每个从服务器配置了NS记录
vim /var/named/magedu.com.zone
 	添加一条NS记录,并对应NS记录添加一条A记录,示例:(注意,每配置一次从服务器,需要都要加1)
$TTL 3600
$ORIGIN magedu.com.
@       IN      SOA     ns1.magedu.com. admin.magedu.com.  (
                                        2021081602       ; serial   --序号要加1
                                        1H               ; refresh
                                        10M              ; retry
                                        1D               ; expire
                                        1D )             ; minimum
        IN      NS      ns1
        IN      NS      ns2    --从服务器对应的NS记录
        IN      MX   10 mx1
        IN      MX   20 mx2
ns1     IN      A       192.168.150.129
mx1     IN      A       192.168.150.128
ns2     IN      A       192.168.150.130   --从服务器对应的A记录
www     IN      A       192.168.150.129
web     IN      CNAME   www
bbs     IN      A       192.168.150.128
bbs     IN      A       192.168.150.129
(2)检查区域文件是否有语法错误,没错误的话重载配置文件即可
named-checkzone 150.168.192.in-addr.arpa /var/named/192.168.150.zone
rndc reload  或者  systemctl reload named.service (装载区域,重载配置文件)  

从区域的反向解析

配置从服务器的反向解析没啥特别的
(1)在/etc/named.rfc1912.zones文件添加一列  示例:
zone "150.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/192.168.150.zone";
        masters { 192.168.150.129; };
};
(2)确保主服务器反向区域解析的区域文件上添加一条从服务器的NS记录
参考上面的配置反向区域
(3)主服务器先rndc reload 从服务器再rndc reload即可
(4)从服务器检查/var/named/slaves目录下是否自动生成了相关文件
(5)dig测试即可

解析相关错误(重点)

如果配置完从区域,重载从服务器后没看到自动生成的/var/named/slaves/magedu.com.zone文件
(1)可以首先查看BIND的日志文件 vim /var/log/messages  (/var/log/messages这个文件就是BIND的日志文件)
窍门:vim中末行模式下  :$ 表示跳转到最后一行
示例:例如日志文件中报错  (报错一般为显眼的大红色)
transfer of 'magedu.com/IN' from 192.168.150.129#53: failed to connect: host unreachable
host unreachable报错表示主机无法访问,那么我们就可以考虑为什么主DNS服务器的主机无法访问了
对于Linux来说无非就是SELinux阻止,或者是防火墙阻止(将这两者关闭即可解决问题)
注意:systemctl status named命令也可以看一部份日志信息,但是不全

(2)关闭SELinux
查看SELinux状态命令:getenforce   (Enforcing 代表SELinux是开启状态)
关闭SELinux:sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config  (注意此命令执行完后重启才能生效)
也可以编辑/etc/selinux/config文件,修改SELINUX参数为下面其一:disabled或permisslve
立即生效:getenforce--->setenforce 0

(3) 关闭防火墙
查看防火墙状态:systemctl status firewalld
暂时关闭防火墙:systemctl stop firewalld
永久关闭防火墙:systemctl disable firewalld
重启防火墙:systemctl enable firewalld



(2)如果在从服务器dig测试中报错connection timed out;no servers could be reached
首先也是确认从服务器的SELinux和防火墙是否关闭
然后确认53号端口是否正常开启
iptables -L -n |grep 53
  1.手动开启53号端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=53/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=53/udp --permanent
[root@localhost ~]# firewall-cmd --reload					#更新配置
  2.配置BIND主配置文件,53号端口不仅要加主DNS服务器的ip,也要加自己的IP
  修改主配置文件/etc/name.conf  (具体配置可以查看https://blog.csdn.net/qq_40628106/article/details/83749584)
options{}中   listen-on port 53 { 127.0.0.1; };---改成--->listen-on port 53 { 127.0.0.1; 192.168.150.129; 192.168.150.130; };  添加上主DNS服务器的地址,额外添加自己的IP,用于服务启动时开启53号端口

一般来说都是BIND主配置文件没有添加从服务器自己的IP地址导致53号端口没有打开从而测试时请求超时

BIND实现子域授权

主服务器端

(1)仅需在区域配置文件中添加一条NS记录即可,NS对于的A记录也要添加
示例:(注意,每配置一次从服务器,需要都要加1)
$TTL 3600
$ORIGIN magedu.com.
@       IN      SOA     ns1.magedu.com. admin.magedu.com.  (
                                        2021081603       ; serial   --序号要加1
                                        1H               ; refresh
                                        10M              ; retry
                                        1D               ; expire
                                        1D )             ; minimum
        IN      NS      ns1
        IN      NS      ns2    
        IN      MX   10 mx1
        IN      MX   20 mx2
ns1     IN      A       192.168.150.129
mx1     IN      A       192.168.150.128
ns2     IN      A       192.168.150.130   
www     IN      A       192.168.150.129
web     IN      CNAME   www
bbs     IN      A       192.168.150.128
bbs     IN      A       192.168.150.129

ops     IN	     NS	     ns1.ops     --子域对应DNS服务器的NS记录
ns1.ops IN      A       192.168.150.131        --子域DNS服务器的ip地址
(2)重载区域数据库文件即可
rndc reload


子域服务器端

开始也是一样的安装bind,修改主配置文件,启动服务
yum insatll -y bind*
vim /etc/named.conf  修改其中
options{}中   listen-on port 53 { 127.0.0.1; };---改成--->listen-on port 53 { 127.0.0.1; 192.168.150.131; }; 
              dnssec-enable yes;---改成--->dnssec-enable no;                             关闭dnssec功能
              dnssec-validation yes;--改成-->dnssec-validation no;
3检查修改后的配置文件是否有语法错误
named-checkconf 命令
4启动服务
systemctl start named.service   启动后可用systemctl status named.service查看是否启动成功              

(1)在/etc/named.rfc1912.zones文件添加一列  示例:
zone "ops.magedu.com" IN {    --ops.magedu.com为magedu.com的子域
        type master;
        file "ops.magedu.com.zone";
};
(2)在/var/named目录下创建ops.magedu.com.zone 文件  添加下列内容
示例:
$TTL 3600
$ORIGIN ops.magedu.com.
@       IN      SOA     ns1.ops.magedu.com.     admin.ops.magedu.com. (
                                        2021081901       ; serial
                                        1H               ; refresh
                                        10M              ; retry
                                        1D               ; expire
                                        1D )             ; minimum
        IN      NS      ns1
ns1     IN      A       192.168.150.131
www     IN      A       192.168.150.131    
(3)更改权限
[root@localhost named]# chmod o= ops.magedu.com.zone
[root@localhost named]# chown :named ops.magedu.com.zone
(4)检查区域文件,显示为🆗后重载区域文件
named-checkzone ops.magedu.com /var/named/ops.magedu.com.zone
rndc reload  或者  systemctl reload named.service (装载区域,重载配置文件)  
(5)测试
 dig -t A www.ops.magedu.com @192.168.150.131              

BIND定义转发域(子域找父域)

区域转发:仅转发对某特定区域的解析请求

(1)在/etc/named.rfc1912.zones添加一列
zone "ZONE_NAME" IN {
    type forward;
    forward {first|only};   --first:转发后不响应的话找根   only:只转发
    forwarders { SERVER_IP; };
};
如在192.168.150.131这个子域服务器中添加一列
zone "magedu.com" IN {
        type forward;
        forward only;
        forwarders { 192.168.150.130; 192.168.150.129; };    --父域的主从服务器均可添加
};
(2)文件检查并重载文件
named-checkconf
rndc reload
(3)测试
dig -t A www.magedu.com @192.168.150.131    --子域解析父域




全局转发:
比如有一台DNS服务器无法访问互联网,那么这个DNS服务器就无法去通过根进行递归解析,
那么就可找一台可以访问互联网的DNS服务器,将这个全局转发给这个可以访问互联网的服务器

这里拿子域192.168.150.131举例,可以访问互联网的服务器为父域192.168.150.129

仅需在/etc/named.conf中定义
options{}中  添加两条   forward only;
        		     forwarders { 192.168.150.130; 192.168.150.129; };  
保存后重载即可
rndc reload

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值