您的位置:首页 > 其它

BIND的安装与配置

2017-12-10 20:39 225 查看

BIND简介

DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析:

正向解析:根据主机名(域名)查找对应的IP地址
反向解析:根据IP地址查找对应的主机名(域名)


工作形式上又分主服务器、从服务器和缓存服务器。

主服务器:在特定区域内具有唯一性、负责维护该区域内的域名与IP地址对应关系
从服务器:从主服务器中获得域名与IP地址对应关系并维护,以防主服务器宕机等情况
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址对应关系,提高重复查询时的效率


bind是一款代码的DNS服务器软件,它是由伯克利大学编写,全名(Berkeley Internet Name Domain)伯克利英特网域名,是目前世界上使用最为广泛的DNS服务器软件

bind相关

包名: bind

进程: named

协议: DNS

使用端口: 53/tcp , 53/upd

named程序

主程序文件 /usr/sbin/named

主配置文 /etc/named.conf

区域配置文件 /etc/named.rfc1912.zones

bind相关的安装包

bind : 主程序包

bind-chroot : 将named进程的活动范围限定在chroot目录,保证安全性

bind-devel : 与开发相关的头文件和库文件(编译安装bind时所需)

bind-libs : bind服务器端和客户端都使用到的公共库文件

bind-utils : bind客户端工具 bind的客户端

bind客户端

~]# rpm -ql bind-utils
/etc/trusted-key.key
/usr/bin/dig    #最常用的DNS服务器测试工具
/usr/bin/host    #一款轻量级DNS测试工具
/usr/bin/nslookup    #DNS查询工具,在众多平台上都有实现(windows上也有),可交互式查询
/usr/bin/nsupdate     #更新工具
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz


dig命令

dig [-t type] name [@SERVER] [query options]

query options:
+[no]trace:跟踪解析过程
+[no]recurse:进行递归解析

测试反向解析:
dig -x IP @SERVER

模拟区域传送:
dig -t axfr ZONE_NAME @SERVER

Tips:(1)dig用于测试dns系统,因此,不会查询hosts文件进行解析
(2)不加”@server-ip”,根据/etc/resolv.conf配置的解析文件来查询
(3)dig命令不会查缓存,而是直接查服务器


eg:

解析百度的地址



反向解析114DNS的域名



追踪www.qq.com的过程



host命令

host [-t type] name [SERVER]


eg:



nslookup命令

nslookup domain [dns-server]
nslookup -qt=type domain [dns-server]

也可以用交互式模式
nslookup>
server IP: 指明使用哪个DNS server进行查询
set q=RR_TYPE: 指明查询的资源记录类型
NAME: 要查询的名称


eg:



bind服务器配置

配置正向解析的bind

配置反向解析的bind

配置辅助bind

实现主辅DNS之间的区域传送

实验环境:2台CentOS 7.4 x64虚拟机(selinux和firewall已关闭)

Domain Name: example.com.          10.0.0.0/24
主DNS服务器: mster.example.com.     10.0.0.10
辅DNS服务器: slave.example.com.     10.0.0.11
WEB服务器: www.example.com.         10.0.0.10,10.0.0.11
FTP服务器: ftp.example.com.   CNAME   www.example.com
MX服务器: mx.example.com.          10.0.0.10


具体过程如下:

两台虚拟机都通过yum安装bind

~]# yum install bind bind-libs bind-utils -y


两台虚拟机都修改主配置文件(/etc/named.conf)

主配置文件包含以下内容

全局配置:options {}
日志子系统配置:logging {}
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone;
格式为  zone "ZONE_NAME" IN {}


~]# vim /etc/named.conf
listen-on port 53 { any; };    监听任意ip地址
allow-query     { any; };      允许任何主机查询
dnssec-enable no;              关闭dnssec功能
dnssec-validation no;


两台虚拟机都启动named服务,设置开机自启动

~]# systemctl start named.service
~]# systemctl enable named.service
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.


两台虚拟机都查看named服务是否启动

~]# ss -tunl | grep :53
udp    UNCONN     0      0      10.0.0.10:53                    *:*
udp    UNCONN     0      0      127.0.0.1:53                    *:*
udp    UNCONN     0      0       ::1:53                   :::*
tcp    LISTEN     0      10     10.0.0.10:53                    *:*
tcp    LISTEN     0      10     127.0.0.1:53                    *:*
tcp    LISTEN     0      10      ::1:53                   :::*


这样,缓存DNS服务器就设置好了

1.配置主DNS服务器正向解析

(1)配置区域数据信息

[root@master ~]# vim /etc/named.rfc1912.zones

zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};


(2)创建区域数据文件(/var/named/ZONE_NAME.zone)

[root@master ~]# vim /var/named/example.com.zone

$TTL 86400
@        IN    SOA    master.example.com. admin.example.com. (
2017121001
1D
1H
1W
3H )

IN    NS    master
IN    MX 20 mx
master   IN    A     10.0.0.10
www      IN    A     10.0.0.10
IN    A     10.0.0.11
mx       IN    A     10.0.0.10
ftp      IN    CNAME www


(3)更改区域解析库文件的权限为640,属主为root,属组为named

[root@master ~]# chown :named /var/named/example.com.zone
[root@master ~]# chmod 640 /var/named/example.com.zone


(4)使用named-checkconf,named-checkzone命令检测配置文件及区域文件是否存在语法错误

[root@master ~]# named-checkconf
[root@master ~]# named-checkzone "example.com" /var/named/example.com.zone
zone example.com.zone/IN: loaded serial 2017121001
OK


(5)重启或者重载named服务

[root@master ~]# systemctl reload named.service


(6)检验正向解析结果



这样bind正向解析就配置好了

2.配置主DNS服务器反向解析

(1)添加反向解析区域配置文件

[root@master ~]# vim /etc/named.rfc1912.zones

zone "0.0.10.in-addr.arpa" IN {
type master;
file "10.0.0.zone";
allow-update { none; };
};


(2)创建反向区域解析文件

[root@master ~]# vim /var/named/10.0.0.zone

$TTL 86400
@      IN    SOA    master.example.com. admin.example.com. (
2017121001
1D
1H
1W
3H )

IN    NS    master.example.com.
10     IN    PTR   master.example.com.
IN    PTR   mx.example.com.
IN    PTR   www.example.com.
11     IN    PTR   www.example.com.


Tips:反向解析不需要CNAME记录,MX记录不允许出现在反向解析里

(3)更改反向解析区域解析库文件的权限为640,属主为root,属组为named

[root@master ~]# chown :named /var/named/10.0.0.zone
[root@master ~]# chmod 640 /var/named/10.0.0.zone


(4)使用named-checkconf,named-checkzone命令检测配置文件及反向解析区域文件是否存在语法错误

[root@master ~]# named-checkconf
[root@master ~]# named-checkzone "10.0.0" /var/named/10.0.0.zone
zone 10.0.0.zone/IN: loaded serial 2017121001
OK


(5)重启或者重载named服务

[root@master ~]# systemctl reload named.service


(6)检验反向解析结果



这样bind反向解析就配置好了

3. 配置辅助DNS服务器并实现主从复制

(1)在slave服务器上的添加解析配置文件

[root@slave ~]# vim /etc/named.rfc1912.zones

zone "example.com" IN {
type slave;
masters { 10.0.0.10; };
file "slaves/example.com.zone";
};

zone "0.0.10.in-addr.arpa" IN {
type slave;
masters { 10.0.0.10; };
file "slaves/10.0.0.zone";
};


检查slave服务器的配置文件是否有语法错误

[root@slave ~]# named-checkconf


重载slave服务器的named服务

[root@slave ~]# systemctl reload named.service


(2)编辑master服务器的区域文件,添加slave服务器的记录(正向解析文件添加NS和A记录,反向解析文件添加NS和PTR记录)

[root@master ~]# vim /var/named/example.com.zone




[root@master ~]# vim /var/named/10.0.0.zone
a895




检查master服务器上语法和区域文件是否有错误

[root@master ~]# named-checkconf
[root@master ~]# named-checkzone "example.com" /var/named/example.com.zone
zone example.com/IN: loaded serial 2017121001
OK
[root@master ~]# named-checkzone "10.0.0" /var/named/10.0.0.zone
zone 10.0.0.zone/IN: loaded serial 2017121001
OK


重载master服务器的named服务

[root@master ~]# systemctl reload named.service


查看master服务器的日志,检验主辅DNS之间的区域传送



slave服务器的/var/named/slaves/目录下多了example.com.zone和10.0.0.zone文件,正式从master服务器上自动复制而来的

[root@slave ~]# ll /var/named/slaves/
total 8
-rw-r--r-- 1 named named 417 Dec 10 16:31 10.0.0.zone
-rw-r--r-- 1 named named 485 Dec 10 16:31 example.com.zone


检验slave服务器的解析功能



Tips:

1.主服务器的区域解析库文件中必须有一条NS记录是指向从服务器
2.从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
3.主服务器得允许从服务器作区域传送
4.主从服务器时间应该同步,可通过chrony进行
5.bind程序的版本应该保持一致;否则,应该从高,主低


rndc命令

rndc(Remote Name Domain Controllerr)是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作。安装bind时默认安装了rndc,rndc默认监听在953/tcp端口,只监听127.0.0.1这个地址,也就是默认只允许本机使用rndc

语法格式:rndc COMMAND

COMMAND:
reload: 重载主配置文件和区域解析库文件
reload zone: 重载区域解析库文件
retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;
notify zone: 重新对区域传送发通知;
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志;
trace: 递增debug级别;
trace LEVEL: 指定使用的级别;


~]# rndc status
version: 9.9.4-RedHat-9.9.4-51.el7_4.1 <id:8f9657aa>
CPUs found: 2
worker threads: 2
UDP listeners per interface: 2
number of zones: 103
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: