使用BIND搭建内部DNS服务

我与影子孤独终老i 提交于 2020-02-03 17:30:55
​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌‌​​​​‌​​​​​​​‍​​​‌​‌​‌‌​‌​‌‌‌‍‌​‌‌‌‌​‌‍‌​‌‌​‌‌​‍‌​‌‌​​​‌‍‌​‌‌‌​‌‌‍​​‌‌​‌‌‌‌​‌​​‌​‍​‌​​​​‌​​​​​‌​‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌‌​‌‌‌‌​​​‌​‌‌‌‍‌​‌‌‌​‌‌‍‌​‌‌​​​‌‍‌​‌​‌‌​​‍​​‌‌​​​‌‌‌‌​​‌​‍​‌​‌‌​‌​‌​‌‌‌‌​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​‌‌‌‌​‍‌​​‌‌​‌‌‍‌​​‌​​‌​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​​​‌‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌​​‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​​​‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌‌​‍‌​​‌​‌​​‍‌​​‌​‌‌​‍‌​​​‌​​​‍‌​​‌​‌‌​‍‌‌​‌​​​‌‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌​‌​​​‌‌‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​​‍‌​​‌​‌‌‌‍‌​​‌​‌‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌‌​​‌​‌​‍‌‌​​‌‌​‌‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

企业内部经常需要搭建内部的DNS服务器,现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet Systems Consortium)编写和维护。BIND支持先今绝大多数的操作系统(Linux,UNIX,Mac,Windows),BIND服务的名称称之为named。DNS默认使用UDP、TCP协议,使用端口为53(domain),953(mdc,远程控 大专栏  使用BIND搭建内部DNS服务制使用)。 本文介绍了如何使用BIND软件轻松构建一套私有的DNS服务。

名词解析

  • DNS

​ 域名解析服务(Domain Name System),是用于解析域名与IP地址对应关系的服务。

  • 正向解析

​ 根据主机名(域名)查找对应的IP地址。

  • 反向解析

​ 根据IP地址查找对应的主机名(域名)。

部署过程

  • 安装BIND服务,其二进制命令名称为named
yum -y install bind-chroot bind bind-utils bind-devel
  • 编辑主配置文件/etc/named.conf,需要修改的行数如下:(下面显示的是修改之后的配置)
[root@internal-dns]# vim /etc/named.conf
13 listen-on port 53 { any; };    //127.0.0.1修改为any,代表允许监听任何IP地址。
14 #listen-on-v6 port 53 { ::1; }; //注释掉这行
19 allow-query { any; }; //localhost修改为any,代表允许任何主机查询。
  • 配置区域数据信息,文件名为/etc/named.rfc1912.zones ,在该文件最下面追加以下内容:
vim /etc/named.rfc1912.zones
# 正向解析
zone "linux.com" IN {
        type master;
        file "linux.com.zone";
        allow-update { none; };
};

# 反向解析
zone "15.168.192.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.zone";
};
  • 配置解析数据信息

复制正向解析配置模板文件,填写相关记录值:

cp /var/named/named.localhost  /var/named/linux.com.zone

修改后的正向解析文件内容如下:

[root@localhost named]# cat linux.com.zone 
$TTL 1D
@     IN SOA     @ rname.invalid. (              
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
@     IN NS       dns.linux.com.
dns     IN A        192.168.15.150
www     IN A       192.168.15.150
hehe IN A       192.168.15.150

复制反向解析配置模板文件,填写相关记录值:

cp /var/named/named.loopback /var/named/1.0.0.127.zone

修改后的反向解析文件内容如下:

[root@localhost named]# cat 1.0.0.127.zone 
$TTL 1D
@       IN SOA   @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN    NS     dns.linux.com.
150     IN    PTR    dns.linux.com.
150     IN    PTR    www.linux.com.
150     IN    PTR    hehe.linux.com.

检验配置文件语法是否正确:

named-checkconf /etc/named.conf
named-checkzone linux.com /var/named/linux.com.zone
named-checkzone 1.0.0.127.in-addr.arpa /var/named/1.0.0.127.zone

重启named服务:

systemctl restart named
  • 检验解析结果

将本机DNS地址设置为本机IP:

[root@ineteral-dns named]# cat /etc/resolv.conf
nameserver 192.168.15.150

使用host/nslookup/dig等命令测试解析是否生效。

常见报错

在测试的时候,可能会遇到下面一些报错。

一、Host not found

Host www.linux.com not found: 2(SERVFAIL)

报错原因可能是配置文件的权限问题,检查配置文件的属性:

[root@ineteral-dns named]# ll
总用量 24
-rw-r----- 1 root  root   475 5月   7 13:26 1.0.0.127.zone
-rw-r----- 1 root  root   248 5月   7 13:26 linux.com.zone

修改域文件的属性:

chmod 640 *.zone
chgrp named linux.com.zone
chgrp named 1.0.0.127.zone

再次测试,即可返回正确的解析结果。

[root@ineteral-dns named]# host www.linux.com
www.linux.com has address 192.168.15.150

二、正向解析正常,反向解析错误

反向解析的时候,出现以下报错:

** server can't find 150.15.168.192.in-addr.arpa.: NXDOMAIN

可能的原因是反向解析文件的区域配置错误,检查区域信息配置:

zone "15.168.192.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.zone";
};

再次测试,成功解析:

[root@ineteral-dns named]# nslookup 
> 192.168.15.150
Server:        192.168.15.150
Address:    192.168.15.150#53

150.15.168.192.in-addr.arpa    name = www.linux.com.
150.15.168.192.in-addr.arpa    name = dns.linux.com.
150.15.168.192.in-addr.arpa    name = hehe.linux.com.
>

The End.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!