编译bind以及DNS排错

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

编译bind

准备阶段:

下载bind软件包,然后传输到系统中   
https://www.isc.org/downloads/

安装开发包组   
yum -y groupinstall "Development tools"    
解压bind软件包    
tar xvf bind-9.10.5-P3.tar.gz

创建named系统用户账号   
useradd -r -d /var/named -s /sbin/nologin -u 53 named

-r 指定系统账号,-d指定家目录为/var/named -s指定shell环境为/sbin/nologin -u 指定UID为53

创建named的家目录及修改所属组信息   
mkdir /var/named

ll -d /var/named \所属组为root

chgrp named /var/named/ \修改所属组为named   
chmod o= /var/named/

关闭防火墙、禁用SELinux

iptables -F

setenforce 0

编译

cd bind-9.10.5-P3

./configure --help \查看configure编译的说明

mkdir /usr/src/bind9 \新建目录作为bind的根目录

./configure --prefix=/usr/src/bind9/ \执行编译安装,出现如下提示时,需要安装OpenSSL软件包或在编译时使用--without-openssl关闭安全加密功能

clip_image001

./configure --prefix=/usr/src/bind9/ --without-openssl

make && make install

clip_image002

vim /etc/profile.d/bind9.sh \添加bind9二进制文件的路径到全局变量中   
export PATH=/usr/src/bind9/sbin:/usr/src/bind9/bin:$PATH

. /etc/profile.d/bind9.sh \刷新生效

ls /usr/src/bind9/bin

which dig \测试dig命令的路径是否正确

编辑/etc/man.config(centos 6)|man_db.conf(centos7)文件 添加一个

clip_image003

man dig \测试帮助文档命令路径是否正确

vim /etc/ld.so.conf.d/named.conf \编辑加载库文件路径

/usr/src/bind9/lib \ 可以参照当前目录下其他文件格式

ldconfig –v \加载库文件 让系统重新生成缓存

ln -sv /usr/src/bind9/include /usr/include/named \导出头文件,直接复制,或者基于链接方式

vim /usr/src/bind9/etc/named.conf \新建named.conf配置文件   
options {    
directory "/var/named";    
};    
zone "." {    
type hint;    
file "named.ca";    
};

编辑DNS . 文件,可从其他主机中复制,可在网络中某个DNS服务器中抓取

dig -t NS . @172.16.0.1 > /var/named/named.ca \抓取 .DNS数据到/var/named/named.ca

vim /usr/src/bind9/etc/named.conf \添加DNS解析域文件   
options { #OPTIONS选项用来定义一些影响整个DNS服务器的环境

listen-on port 53 { any; };

directory "/var/named"; # 指定的域名解析文件的路径,如这里的是将其指定到 /var/named 下

allow-query { any; };

recursion yes;

dnssec-enable no;

dnssec-validation no;

};   
zone "." { #根区域

type hint;   
file "named.ca";    
};    
zone "magedu.com"
 { #测试

type master;   
file "magedu.com.zone";    
};

vim /var/named/magedu.com.zone \编辑DNS数据库文件   
$TTL 1D    
@ IN SOA ns admin ( 0 1D 10M 3D 1H)    
NS ns    
ns A 192.168.198.136    
www A 192.168.198.150

chgrp named /usr/src/bind9/etc/named.conf \修改主配置文件所属组为named

chmod 640 /usr/src/bind9/etc/named.conf \设置权限为640

chgrp -R named /var/named/ \解析域文件目录下文件所属组为named

named -f -g -d 3 -u named \ 开启named服务,-f 前台执行,-g 将日志信息输出到标准输出,-d 以什么级别显示debug信息,-u 指定什么用户执行命令

named -u named 后台运行

ss -tuln \启动成功后,监听的tcp 、udp的53端口

tail /var/log/message \检查区域配置文件语法错误以及区域文件加载成功、服务运行

Sep 21 04:55:07 WTF-6 named[20954]: managed-keys-zone: loaded serial 0

Sep 21 04:55:07 WTF-6 named[20954]: zone magedu.com/IN: loaded serial 2017092001

Sep 21 04:55:07 WTF-6 named[20954]: all zones loaded

Sep 21 04:55:07 WTF-6 named[20954]: running

客户端访问测试   
dig www.danran.com @192.168.198.136 指定ip192.168.198.136为dns服务器解析域名

named -u named \当修改配置文件后,重新启动named服务

killall named \停止named服务

安装rndc

生成DNS key文件   
rndc-confgen -r /dev/urandom > /usr/src/bind9/etc/rndc.conf

vim /usr/src/bind9/etc/rndc.conf \将文件中的如下注释内容剪切到/usr/src/bind9/etc/named.conf文件中   
#Use with the following in named.conf, adjusting the allow list as #needed:    
#key "rndc-key" {    
#algorithm hmac-md5;    
#secret "JZMdWLCUJhuMaes8bUJJKw==";    
#};    
#controls {    
#inet 127.0.0.1 port 953

#allow { 127.0.0.1; } keys { "rndc-key"; };   
#};    
#End of named.conf

vim /usr/src/bind9/etc/named.conf \将/usr/src/bind9/etc/rndc.conf文件中剪切的内容复制到此文件中,并去掉#注释信息   
#Use with the following in named.conf, adjusting the allow list as needed:    
key "rndc-key" {    
algorithm hmac-md5;    
secret "JZMdWLCUJhuMaes8bUJJKw==";    
};    
controls {    
inet 127.0.0.1 port 953    
allow { 127.0.0.1; } keys { "rndc-key"; };    
};    

#End of named.conf

clip_image004

named -f -g -d 3 -u named \ 开启named服务,-f 前台执行,-g 将日志信息输出到标准输出,-d 以什么级别显示debug信息,-u 指定什么用户执行命令

named -u named 后台运行

ss -ntln \rndc的953端口一打开

rndc reload \rndc命令已安装

rndc querylog \打开named的日志功能

rndc status \查看named的状态信息

DNS排错

1. #dig A example.com

; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523

...

SERVFAIL:The nameserver encountered a problem while processing the query.

---可使用dig +trace排错,可能是网络和防火墙导致

2. NXDOMAIN:The queried name does not exist in the zone.

---可能是CNAME对应的A记录不存在导致

3. REFUSED:The nameserver refused the client's DNS request due to policy restrictions.

---可能是DNS策略导致

4. NOERROR不代表没有问题,也可以是过时的记录

5. 查看是否为权威记录,flags:aa标记判断

6. 被删除的记录仍能返回结果,可能是因为*记录存在 如:*.example.com. IN A 172.25.254.254

7. 注意“.”的使用

8. 避免CNAME指向CNAME记录,可能产生回环 test.example.com. IN CNAME lab.example.com. lab.example.com. IN CNAME test.example.com.

9. 正确配置PTR记录,许多服务依赖PTR,如sshd,MTA

10. 正确配置轮询round-robin记录




本文转自 工运搬运维 51CTO博客,原文链接:http://blog.51cto.com/13157015/1968303,如需转载请自行联系原作者

相关文章
|
4月前
|
网络协议 网络安全
基于bind软件部署DNS服务器
关于如何使用bind软件部署DNS服务器的教程,包括DNS服务器的类型、基于bind软件的部署步骤、验证DNS服务器可用性的指导,以及如何进行DNS正向解析的实现。
135 2
|
5月前
|
JavaScript 前端开发
bind原理深度解析
【8月更文挑战第1天】bind原理深度解析
48 0
|
8月前
|
Linux 调度 数据库
|
8月前
|
域名解析 网络协议 Ubuntu
【域名解析DNS专栏】搭建私有DNS服务器:从BIND到CoreDNS的选择
【5月更文挑战第26天】本文对比了两种流行的DNS服务器软件BIND和CoreDNS。BIND以其稳定性及丰富功能著称,广泛兼容各类平台,适合复杂环境;CoreDNS则以其高性能、模块化设计和易用性脱颖而出。根据需求、资源和技术水平,用户可选择适合自己的DNS服务器。安装示例包括BIND在Ubuntu上的apt安装及基本配置,以及CoreDNS的snap安装和YAML配置。
560 0
|
8月前
|
域名解析 运维 网络协议
记一次DNS运维排错
记一次DNS运维排错
71 1
|
8月前
|
网络协议 Linux 网络安全
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
100 0
|
域名解析 缓存 运维
Linux巩固篇013-Linux BIND域名解析服务
纸上得来终觉浅,绝知此事要躬行
376 1
Linux巩固篇013-Linux BIND域名解析服务
|
网络协议 Linux 网络安全
CentOS通过bind配置DNS服务器(下)
CentOS通过bind配置DNS服务器(下)
407 0
CentOS通过bind配置DNS服务器(下)
|
网络协议 Linux 网络安全
CentOS通过bind配置DNS服务器(上)
CentOS通过bind配置DNS服务器(上)
586 0
CentOS通过bind配置DNS服务器(上)
|
存储 缓存 网络协议
RH358管理DNS和DNS服务器--使用BIND 9配置授权名称服务器
RH358管理DNS和DNS服务器--使用BIND 9配置授权名称服务器
665 0
RH358管理DNS和DNS服务器--使用BIND 9配置授权名称服务器

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
    下一篇
    开通oss服务