CentOS7下安装配置DNS服务器

Linux大全评论1.1K views阅读模式

CentOS7下安装配置DNS服务器过程,写下来以备不时之需好了。先介绍一下相关的名词解释。

名词解析:

  • FQDN:Fully Qualified Domain Name,完全合格域名,是指主机名加上全路径,例如ns1.baidu.com.

  • SOA:Start of Authority,起始授权记录,用于设置该域的序列号、刷新时间、过期时间等信息,在定义每个域时SOA只能定义一条,而且必须在起始位置定义。

  • NS:Name Server,域名服务器记录,作用是定义创建的新域是由哪个DNS服务器来负责解析。

  • MX:Mail eXchanger,邮件交换记录,指向的是一个邮件服务器,用来当发邮件的时候,根据收件人的地址后缀来定位邮件服务器,说白了就是让邮件服务器知道应该把这封邮件发到哪里去。

    需要注意一点的是定义MX记录时因为@符号在DNS服务器配置中有特殊的含义,表示当前定义的域的域名。所以在定义邮件服务器时需要将@写为“.”号来代替,定义格式示例:mail1  IN  MX 10  mail1.baidu.com. 。

  • A:用来指定完全合格域(FQDN)名对应的IP记录,可以通过此设置改域名下,指定用户自己的WEB服务器地址,示例:www.baidu.com.  IN  A  172.16.81.250  (注:此仅做演示,baidu.com.表示自己定义的区域名,并非真实的域名)。

  • CNAME:别名记录,这种记录允许将多个名字映射到同一台计算机,示例:ftp   IN   CNAME   www    (注:此处是省略了域名的写法,可以在区域开头位置定义域名$ORIGIN  baidu.com.  再次强调域名后边的“.”不可以省略

  • PTR:反向域名解析,即将IP地址转换为FQDN,此记录一般定义在反向域名解析中在定义反向区域时,区域的名称一般是取IP地址的网络地址然后反写组成,示例:原来IP地址为172.16.81.250,定义

    $ORIGIN 81.16.172.

    250     IN         PTR         www.baidu.com.

  • TTL:Time To Live ,生存时间,表示DNS记录在DNS服务器上的缓存时间,时间越长对于服务器的压力越小,时间越短表示服务器需要重新查询并生成缓存的频率越高,压力越大。

  • *:泛域名解析,用于指定域名下所有未创建域名记录同一定位到指定主机中,示例   

*  IN   CNAME    www 
#为所有未创建的域名记录定义一个别名指向www主机。

在centos系统下实现域名服务器通常是使用bind工具来完成DNS的功能,下边开始进行bind的安装与配置。

~]
# yum install bind-untils bind  -y  
~]
# rpm -ql bind
/etc/NetworkManager/dispatcher
.d
/13-named
/etc/logrotate
.d
/named
/etc/named   
/etc/named
.conf   
#bind主配置文件
/etc/named
.iscdlv.key
/etc/named
.rfc1912.zones   
#定义zone的文件
/etc/named
.root.key
/etc/portreserve/named
/etc/rc
.d
/init
.d
/named   
#bind脚本文件
/etc/rndc
.conf   
#rndc配置文件
/etc/rndc
.key
/etc/sysconfig/named
/usr/lib64/bind
/usr/sbin/arpaname
/usr/sbin/ddns-confgen
/usr/sbin/dnssec-dsfromkey
/usr/sbin/dnssec-keyfromlabel
/usr/sbin/dnssec-keygen
/usr/sbin/dnssec-revoke
/usr/sbin/dnssec-settime
/usr/sbin/dnssec-signzone
/usr/sbin/genrandom
/usr/sbin/isc-hmac-fixup
/usr/sbin/lwresd
/usr/sbin/named
/usr/sbin/named-checkconf   
#检测/etc/named.conf文件语法
/usr/sbin/named-checkzone   
#检测zone和对应zone文件的语法
/usr/sbin/named-compilezone
/usr/sbin/named-journalprint
/usr/sbin/nsec3hash
/usr/sbin/rndc   
#远程dns管理工具
/usr/sbin/rndc-confgen   
#生成rndc密钥
/var/log/named
.log
/var/named
/var/named/data
/var/named/dynamic
/var/named/named
.ca   
#根解析库
/var/named/named
.empty
/var/named/named
.localhost   
#本地主机解析库
/var/named/named
.loopback   
/var/named/slaves   
#从文件夹
/var/run/named

编辑bind主配置文件/etc/named.conf

~]
# vim /etc/named.conf
// 
C
/C
++风格的语法,注释用
//
或/* */
// 
named.conf
//
// 
Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// 
server as a caching only nameserver (as a localhost DNS resolver only).
//
// 
See 
/usr/share/doc/bind
*
/sample/ 
for 
example named configuration files.
// 
options {
   
listen-on port 53 { 127.0.0.1; };
 
listen-on-v6 port 53 { ::1; };
 
directory 
"/var/named"
;     
//
指明存放区域文件根目录,下面给出的相对路径都是相对此目录
 
dump-
file 
"/var/named/data/cache_dump.db"

 
statistics-
file 
"/var/named/data/named_stats.txt"
;
   
memstatistics-
file 
"/var/named/data/named_mem_stats.txt"
;
 
allow-query     { localhost; };   
//
允许哪些主机查询
 
recursion 
yes
;       
//
是否允许递归查询 
 
dnssec-
enable 
yes
;
 
dnssec-validation 
yes
;
 
dnssec-lookaside auto; 
 
/* Path to ISC DLV key */
 
bindkeys-
file 
"/etc/named.iscdlv.key"

 
managed-keys-directory 
"/var/named/dynamic"
;
}; 
logging {         
//
定义日志       
 
channel default_debug {               
     
file 
"data/named.run"
;               
     
severity dynamic;       
   
};
}; 
zone 
"." 
IN {             
//
定义根区域文件名称 
 
type 
hint;
file 
"named.ca"
;   
//
使用的是相对路径,默认存放在
/var/named/named
.ca 
};
//
把另外两个文件也包含进来,作为主配置文件的一部分
 
include 
"/etc/named.rfc1912.zones"
;     
//
定义区域配置文件
 
include 
"/etc/named.root.key"
;       
//
根区域的key文件,与事务签名相关

通过修改listen-on port 53 {}来修改需要监听的服务器IP地址;

allow-query {}修改为any则所有主机均可以通过该DNS服务器来查询;

将dnssec开头的参数全部注释掉后保存配置,一个缓存服务器就创建完成。

下边再来创建新的DNS服务器,创建自定义的区域则要在/etc/named.rfc-1912.zone中添加新的区域,然后在/var/named/ZONE_NAME.zone添加区域解析库。

#示例:创建bing.com.域
   
~]
# vim /etc/named.rfc-1912.zone   #编辑配置文件
   
zone 
"bing.com" 
IN{
       
type 
master;
       
file 
"bing.com.zone"
;
   
};
   
保存退出
   
~]
# vim /var/named/bing.com.zone  #创建区域解析库
   
$TTL 86400   
#定义缓存过期时长
   
$ORIGIN bing.com. 
#域名后的“.”不能省略
   
@    IN SOA ns1.bing.com.  admin.bing.com.(
                   
2017012301;serial 
#使用“;”号可以用于注释
                   
2H;refresh
                   
5M;retry
                   
7D;expire
                   
1D;MINTTL     
#返回否定答案时最小缓存时长
                   
)
   
@  IN  NS  ns1.bing.com.   
#定义指定域名服务器
   
@  IN  NS  ns2.bing.com.   
#域名可以指定多个域名服务器,如果存在多个的情况下,此处ns2表示从域名服务器
   
ns1  IN  MX 10 mail1   
#定义邮件服务器,此记录也可指定多个
   
ns1  IN  A  172.16.100.10   
#指定ns1域名服务器的IP地址
     
ns2  IN  A  172.16.100.11   
#指定从域名服务器IP地址
   
mail1 IN  A  172.16.100.10   
#指定邮件服务器IP地址
   
www  IN  A  10.20.57.10   
#指定该域名下的web服务器主机的IP地址
   
ftp 
IN  CNAME www       
#将ftp主机设置为www别名
   
*   IN   CNAME www       
#设置泛域名解析
   
保存退出
   
~]
# named-checkconf   #检查配置文件有没有语法错误
   
~]
# named-checkzone "bing.com." "/var/named/bing.com.zone"  #检查解析库语法所有检查完毕之后没有问题
   
#重读配置文件
   
~]
# rndc reload
   
#使用dig 命令测试是否成功
   
~]
# dig -t A www.bing.com  @172.16.100.10  #@指定DNS服务器IP地址,如果不指定则使用/etc/resolv.conf中配置的DNS来解析

下边再来配置从DNS服务器,从DNS配置非常简单,所有的解析库记录都是从主服务器中区域传送过来的。但是要注意,从服务器必须要在主DNS区域中定义才可以做区域传送否则传送失败。

#从域名服务器IP地址为172.16.100.11
   
vim 
/etc/named
.rfc-1912.zone
   
zone 
"bing.com." 
IN {
       
type 
slaves;         
#类型需要设置为slaves
       
masters { 172.16.100.10; };   
#指定主域名服务器的IP地址
       
files 
"/slaves/bing.com.zone"

#指定从服务器区域解析库存放位置,解析库名称必须与主DNS中的名称相同,注意,此处定义完之后不要去创建此文件,该文件是通过区域传送产生
   
};
   
~]
# named-checkconf    #验证语法
   
~]
# rndc reload       #重读配置
   
从服务器中就生成了与主DNS中相同的解析库文件。

DNS服务器到此配置完成,其中还涉及到子域授权以及编译安装配置的内容,时间有限,后期看看再来补充一下,现在简单再来设置一下安全策略。

~]
# vim /etc/named.conf
   
acl mynet{
     
172.16.100.10;
     
172.16.100.11;
     
10.20.30.0
/24
;     
#定义IP段
   
};
   
需要定义全局控制的则在
/etc/named
.conf中设置
   
allow-query { mynet; };   
#只允许指定列表中的主机来查询
   
allow-recursion { mynet; }; 
#只允许指定列表中的主机来递归查询
   
allow-transfer { mynet; };   
#只允许指定列表中的主机进行区域传送
   
allow-update { mynet; };   
#只允许指定列表中的主机进行区域更新,此功能非常危险,应该设置为none,即不允许任何主机更新区域解析库,而由管理员来手动生成解析库文件。

企鹅博客
  • 本文由 发表于 2020年4月3日 01:45:06
  • 转载请务必保留本文链接:https://www.qieseo.com/168281.html

发表评论