阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS7下安装配置DNS服务器

160次阅读
没有评论

共计 5548 个字符,预计需要花费 14 分钟才能阅读完成。

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

权限访问列表 acl,在主配置文件 /etc/named.conf 起始位置设置

~]# 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,即不允许任何主机更新区域解析库,而由管理员来手动生成解析库文件。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141245.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5548字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中