当前位置:   article > 正文

DNS的部署(BIND)的经验之谈 (有常见报错总结)_配置dns服务器安装bind失败怎么办

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

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

  1. 以magedu.com为例 (这个域名应该事先从互联网上注册,并申请修改NS记录指向要作为DNS服务器的地址)
  2. (配置是在辅助文件上做的,而且一般不在主配置文件上添加)
  3. 主配置文件/etc/named.conf文件指定了 /etc/named.rfc1912.zones 这个文件,这个文件是特别重要,我们后面要靠该文件来关联 主配置文件和许多域文件,如DNS正向解析的域文件,DNS反向解析的域文件。
  4. (1)配置/etc/named.rfc1912.zones文件
  5. vim /etc/named.rfc1912.zones 在最后添加
  6. zone "magedu.com" IN {
  7. type master;
  8. file "magedu.com.zone";
  9. };
  10. 这样即为添加了一个区域
  11. (2)新建上面zone中配置的magedu.com.zone (在/var/named/目录下)
  12. cd /var/named
  13. vim magedu.com.zone (创建文件的同时在文件中创建如下文本)
  14. (文本中主要记录为A或AAAA)
  15. $TTL 3600 #宏,用于替代资源记录定义格式中的ttl
  16. $ORIGIN magedu.com. (也是宏的一种,用于下面的名称自动在后面补全magedu.com.)
  17. @ IN SOA ns1.magedu.com. admin.magedu.com. (
  18. 2021081601 ; serial
  19. 1H ; refresh
  20. 10M ; retry
  21. 1D ; expire
  22. 1D ) ; minimum
  23. IN NS ns1 (这个ns1本来应该写全,如ns1.magedu.com.,但是上面的宏会自动补全)
  24. IN MX 10 mx1
  25. IN MX 20 mx2
  26. ns1 IN A 192.168.150.128
  27. mx1 IN A 192.168.150.129
  28. mx2 IN A 192.168.150.130
  29. www IN A 192.168.150.128
  30. web IN CNAME www
  31. bbs IN A 192.168.150.128
  32. bbs IN A 192.168.150.129
  33. (3)修改/var/named/magedu.com.zone文件权限
  34. ls -l /var/named/magedu.com.zone (先查看文件权限)
  35. (修改文件权限属组为named,其他用户不能拥有任何权限)
  36. chmod o= /var/named/magedu.com.zone
  37. chown :named /var/named/magedu.com.zone
  38. (4)检查语法错误
  39. named-checkconf (检查主配置文件是否有语法错误)
  40. named-checkzone magedu.com /var/named/magedu.com.zone (检查magedu.com对应的/var/named/magedu.com.zone配置文件是否有语法错误) 出现ok才为正常
  41. (5)装载区域 重载配置文件
  42. rndc status 命令 查看-->number of zones:字段
  43. rndc reload 或者 systemctl reload named.service (装载区域,重载配置文件)
  44. 用rndc status 命令 查看-->number of zones:字段会发现+1
  45. (6)检测
  46. dig -t A www.magedu.com --->结果会显示 (同样可以测试web.magedu.com bbs.magedu.com等)
  47. (和你在/var/named/magedu.com.zone文件中配置的一样,会显示www.magedu.com对应的地址就是本机地址)
  48. ;; ANSWER SECTION:
  49. www.magedu.com. 3600 IN A 192.168.150.128
  50. ;; AUTHORITY SECTION:
  51. magedu.com. 3600 IN NS ns1.magedu.com.
  52. ;; ADDITIONAL SECTION:
  53. ns1.magedu.com. 3600 IN A 192.168.150.128

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

  1. 基本和上面的正向区域没太大区别
  2. (1)配置/etc/named.rfc1912.zones文件
  3. vim /etc/named.rfc1912.zones 在最后添加
  4. zone "ZONE_NAME" IN {
  5. type master;
  6. file "ZONE_NAME.zone";
  7. };
  8. 示例:
  9. zone "150.168.192.in-addr.arpa" IN {
  10. type master;
  11. file "192.168.150.zone";
  12. };
  13. 注意:正向区域 ZONE_NAME为区域,如baidu.com,但是反向区域的ZONE_NAME为“反写的网段地址.in-addr.arpa”
  14. 反向区域的ZONE_NAME示例:正常网段为192.168.150 ————> 150.168.192.in-addr.arpa
  15. (2)创建并配置区域数据库文件(反向区域主要配置PTR)
  16. cd /var/named
  17. vim 192.168.150.zone (创建文件的同时在文件中创建如下文本)
  18. $TTL 3600
  19. $ORIGIN 150.168.192.in-addr.arpa. (注意和正向区域区分)
  20. @ IN SOA ns1.magedu.com. admin.magedu.com. (
  21. 2021081701 ; serial
  22. 1H ; refresh
  23. 10M ; retry
  24. 1D ; expire
  25. 1D ) ; minimum
  26. IN NS ns1.magedu.com.
  27. 128 IN PTR ns1.magedu.com.
  28. 129 IN PTR mx1.magedu.com.
  29. 130 IN PTR mx2.magedu.com.
  30. 128 IN PTR www.magedu.com.
  31. (3)修改192.168.150.zone文件权限
  32. ls -l 192.168.150.zone (先查看文件权限)
  33. (修改文件权限属组为named,其他用户不能拥有任何权限)
  34. chmod o= 192.168.150.zone
  35. chown :named 192.168.150.zone
  36. (4)检查语法错误
  37. named-checkconf (检查主配置文件是否有语法错误)
  38. named-checkzone 150.168.192.in-addr.arpa /var/named/192.168.150.zone
  39. (5)装载区域 重载配置文件
  40. rndc status 命令 查看-->number of zones:字段
  41. rndc reload 或者 systemctl reload named.service (装载区域,重载配置文件)
  42. 用rndc status 命令 查看-->number of zones:字段会发现+1
  43. (6)检测
  44. 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为两台(主从两台服务器均要告诉上级服务器)

配置解析一个从区域

  1. 在从服务器中
  2. 基础安装bind部分
  3. 1.首先也是先用yum安装bind相关的安装包
  4. yum install -y bind
  5. 2.安装好后修改主配置文件/etc/name.conf (具体配置可以查看https://blog.csdn.net/qq_40628106/article/details/83749584)
  6. 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服务器的地址和自己的地址
  7. dnssec-enable yes;---改成--->dnssec-enable no; 关闭dnssec功能
  8. dnssec-validation yes;--改成-->dnssec-validation no;
  9. 3检查修改后的配置文件是否有语法错误
  10. named-checkconf 命令
  11. 4启动服务
  12. systemctl start named.service 启动后可用systemctl status named.service查看是否启动成功
  13. 配置成为从服务器部分
  14. (1)定义区域,配置/etc/named.rfc1912.zones文件
  15. vim /etc/named.rfc1912.zones 在最后添加
  16. zone "ZONE_NAME" IN {
  17. type slave;
  18. file "slaves/ZONE_NAME.zone"; --slaves目录专用于从主DNS服务器同步数据
  19. masters {MASTER_IP;}; --告诉谁为主DNS服务器,便于同步
  20. };
  21. 示例:
  22. zone "magedu.com" IN {
  23. type slave;
  24. file "slaves/magedu.com.zone";
  25. masters { 192.168.150.129; };
  26. };
  27. (2)重载从服务器,注意!!!!一定要在主服务器配置了NS记录的情况后进行重载
  28. rndc reload 或者 systemctl reload named.service (装载区域,重载配置文件)
  29. cd /var/named/slaves 在这里目录下即可看到自动生成的magedu.com.zone
  30. 如果看不到可以看下面的 “从区域解析相关错误”
  31. (2)测试
  32. dig -t A www.magedu.com @192.168.150.130
  33. 在主服务器中
  34. (1)确保区域数据文件中为每个从服务器配置了NS记录
  35. vim /var/named/magedu.com.zone
  36. 添加一条NS记录,并对应NS记录添加一条A记录,示例:(注意,每配置一次从服务器,需要都要加1)
  37. $TTL 3600
  38. $ORIGIN magedu.com.
  39. @ IN SOA ns1.magedu.com. admin.magedu.com. (
  40. 2021081602 ; serial --序号要加1
  41. 1H ; refresh
  42. 10M ; retry
  43. 1D ; expire
  44. 1D ) ; minimum
  45. IN NS ns1
  46. IN NS ns2 --从服务器对应的NS记录
  47. IN MX 10 mx1
  48. IN MX 20 mx2
  49. ns1 IN A 192.168.150.129
  50. mx1 IN A 192.168.150.128
  51. ns2 IN A 192.168.150.130 --从服务器对应的A记录
  52. www IN A 192.168.150.129
  53. web IN CNAME www
  54. bbs IN A 192.168.150.128
  55. bbs IN A 192.168.150.129
  56. (2)检查区域文件是否有语法错误,没错误的话重载配置文件即可
  57. named-checkzone 150.168.192.in-addr.arpa /var/named/192.168.150.zone
  58. rndc reload 或者 systemctl reload named.service (装载区域,重载配置文件)

从区域的反向解析

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

解析相关错误(重点)

  1. 如果配置完从区域,重载从服务器后没看到自动生成的/var/named/slaves/magedu.com.zone文件
  2. (1)可以首先查看BIND的日志文件 vim /var/log/messages (/var/log/messages这个文件就是BIND的日志文件)
  3. 窍门:vim中末行模式下 :$ 表示跳转到最后一行
  4. 示例:例如日志文件中报错 (报错一般为显眼的大红色)
  5. transfer of 'magedu.com/IN' from 192.168.150.129#53: failed to connect: host unreachable
  6. host unreachable报错表示主机无法访问,那么我们就可以考虑为什么主DNS服务器的主机无法访问了
  7. 对于Linux来说无非就是SELinux阻止,或者是防火墙阻止(将这两者关闭即可解决问题)
  8. 注意:systemctl status named命令也可以看一部份日志信息,但是不全
  9. (2)关闭SELinux
  10. 查看SELinux状态命令:getenforce (Enforcing 代表SELinux是开启状态)
  11. 关闭SELinux:sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config (注意此命令执行完后重启才能生效)
  12. 也可以编辑/etc/selinux/config文件,修改SELINUX参数为下面其一:disabled或permisslve
  13. 立即生效:getenforce--->setenforce 0
  14. (3) 关闭防火墙
  15. 查看防火墙状态:systemctl status firewalld
  16. 暂时关闭防火墙:systemctl stop firewalld
  17. 永久关闭防火墙:systemctl disable firewalld
  18. 重启防火墙:systemctl enable firewalld
  19. (2)如果在从服务器dig测试中报错connection timed out;no servers could be reached
  20. 首先也是确认从服务器的SELinux和防火墙是否关闭
  21. 然后确认53号端口是否正常开启
  22. iptables -L -n |grep 53
  23. 1.手动开启53号端口
  24. [root@localhost ~]# firewall-cmd --zone=public --add-port=53/tcp --permanent
  25. [root@localhost ~]# firewall-cmd --zone=public --add-port=53/udp --permanent
  26. [root@localhost ~]# firewall-cmd --reload #更新配置
  27. 2.配置BIND主配置文件,53号端口不仅要加主DNS服务器的ip,也要加自己的IP
  28. 修改主配置文件/etc/name.conf (具体配置可以查看https://blog.csdn.net/qq_40628106/article/details/83749584)
  29. 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号端口
  30. 一般来说都是BIND主配置文件没有添加从服务器自己的IP地址导致53号端口没有打开从而测试时请求超时

BIND实现子域授权

  1. 主服务器端
  2. (1)仅需在区域配置文件中添加一条NS记录即可,NS对于的A记录也要添加
  3. 示例:(注意,每配置一次从服务器,需要都要加1)
  4. $TTL 3600
  5. $ORIGIN magedu.com.
  6. @ IN SOA ns1.magedu.com. admin.magedu.com. (
  7. 2021081603 ; serial --序号要加1
  8. 1H ; refresh
  9. 10M ; retry
  10. 1D ; expire
  11. 1D ) ; minimum
  12. IN NS ns1
  13. IN NS ns2
  14. IN MX 10 mx1
  15. IN MX 20 mx2
  16. ns1 IN A 192.168.150.129
  17. mx1 IN A 192.168.150.128
  18. ns2 IN A 192.168.150.130
  19. www IN A 192.168.150.129
  20. web IN CNAME www
  21. bbs IN A 192.168.150.128
  22. bbs IN A 192.168.150.129
  23. ops IN NS ns1.ops --子域对应DNS服务器的NS记录
  24. ns1.ops IN A 192.168.150.131 --子域DNS服务器的ip地址
  25. (2)重载区域数据库文件即可
  26. rndc reload
  27. 子域服务器端
  28. 开始也是一样的安装bind,修改主配置文件,启动服务
  29. yum insatll -y bind*
  30. vim /etc/named.conf 修改其中
  31. options{}中 listen-on port 53 { 127.0.0.1; };---改成--->listen-on port 53 { 127.0.0.1; 192.168.150.131; };
  32. dnssec-enable yes;---改成--->dnssec-enable no; 关闭dnssec功能
  33. dnssec-validation yes;--改成-->dnssec-validation no;
  34. 3检查修改后的配置文件是否有语法错误
  35. named-checkconf 命令
  36. 4启动服务
  37. systemctl start named.service 启动后可用systemctl status named.service查看是否启动成功
  38. (1)在/etc/named.rfc1912.zones文件添加一列 示例:
  39. zone "ops.magedu.com" IN { --ops.magedu.com为magedu.com的子域
  40. type master;
  41. file "ops.magedu.com.zone";
  42. };
  43. (2)在/var/named目录下创建ops.magedu.com.zone 文件 添加下列内容
  44. 示例:
  45. $TTL 3600
  46. $ORIGIN ops.magedu.com.
  47. @ IN SOA ns1.ops.magedu.com. admin.ops.magedu.com. (
  48. 2021081901 ; serial
  49. 1H ; refresh
  50. 10M ; retry
  51. 1D ; expire
  52. 1D ) ; minimum
  53. IN NS ns1
  54. ns1 IN A 192.168.150.131
  55. www IN A 192.168.150.131
  56. (3)更改权限
  57. [root@localhost named]# chmod o= ops.magedu.com.zone
  58. [root@localhost named]# chown :named ops.magedu.com.zone
  59. (4)检查区域文件,显示为
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/664742
    推荐阅读