Linux学习之CentOS(三十五)--配置域从DNS服务器以及缓存DNS服务器

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

在上一篇文章中Linux学习之CentOS(三十四)--配置域主DNS服务器,详细讲解了如何在Linux环境下配置一个域的主DNS服务器,在本篇随笔中将讲解如何配置一个域的从DNS服务器以及缓存DNS服务器

一、域从DNS服务器的作用

我们在之前上一篇随笔里有提到,DNS服务器一般有三种类型,一个是Primary DNS Server(主DNS服务器),一个是Secondary DNS Server(从DNS服务器),还有一个就是Caching DNS Server,我们配置一个域的DNS服务就是给其配置一个主DNS服务器,那么从DNS服务器主要是用来干嘛的呢?

配置一个域的从服务器一般是为了进行备份以及负载均衡使用,例如在生产环境中,我们给一个域配置的主DNS服务器崩溃了或者被恶意攻击了,那么这个时候如果没有配置从DNS服务器的话,我们的DNS服务器就不能提供DNS服务了,也就无法解析服务器上配置的域名了,或者说主服务器的访问量特别大,此时我们配置从服务器来达到负载均衡的效果,因此我们通常在配置了一个主DNS服务器以后,还需要为其配置多个从DNS服务器

我们知道,我们为一个域配置的文件都是由主DNS服务器来控制的,我们的从服务器上的信息都是通过从主服务器上抓取得来的,当域slave服务器启动的时候就会从域master服务器上抓取指定域的zone文件,所以我们配置从服务器的步骤就非常的简单了

二、配置域从DNS服务器

我们这里通过虚拟机模拟了两台Linux主机,一台主机就是昨天已经配置好的主DNS服务器,另外一台主机作为从DNS服务器来使用。

在进行域从DNS服务器配置之前,我们首先需要在主DNS服务器上进行一些配置:

(1)开放主DNS服务器上的53、953端口

因为我们的从服务器要通过网络去抓取主服务器上的zone文件,所以我们要在iptables里面增加两个规则,开放本机的53和953端口,这里为了实验方便,就直接先将iptables清空了

 

[root@xiaoluo etc]# iptables -F[root@xiaoluo etc]# iptables -LChain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

(2)将我们的SELinux设置成permissive

[root@xiaoluo etc]# getenforce Enforcing
[root@xiaoluo etc]# setenforce 0[root@xiaoluo etc]# getenforce Permissive

(3)修改一下主配置文件 named.conf

因为我们从服务器要通过网络来访问主服务器进行zone文件的抓取,所以我们要在 named.conf 主配置文件里面添加从服务器的IP地址进去,因为我们默认是指定了本机IP,这样就只能我们的本机使用BIND服务,所以我们需要将从服务器的IP地址也写进去,或者说不指定开放53、953端口的IP地址,这样其他主机也就能够通过网络访问到这台主机的DNS服务了

这是昨天配置的named.conf文件,我们这里就将 listen-on port 那两行代码删除即可

/*
 Sample named.conf BIND DNS server 'named' configuration file
 for the Red Hat BIND distribution.

 See the BIND Administrator's Reference Manual (ARM) for details, in:
   file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
 Also see the BIND Configuration GUI : /usr/bin/system-config-bind and 
 its manual.*/options
{    // Put files that named is allowed to write in the data/ directory:
    directory         "/var/named";        // "Working" directory    //listen-on port 53    { any; };
    listen-on port 53    { 127.0.0.1; };    //listen-on-v6 port 53    { any; };
    listen-on-v6 port 53    { ::1; };

};

zone "cnblogs.com" {
    type master;    file "cnblogs.com.zone";
};

 

修改后:

[root@xiaoluo etc]# vim named.conf/*
 Sample named.conf BIND DNS server 'named' configuration file
 for the Red Hat BIND distribution.

 See the BIND Administrator's Reference Manual (ARM) for details, in:
   file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
 Also see the BIND Configuration GUI : /usr/bin/system-config-bind and 
 its manual.*/options
{    // Put files that named is allowed to write in the data/ directory:
    directory         "/var/named";        // "Working" directory};

zone "cnblogs.com" {
    type master;    file "cnblogs.com.zone";
};

(4)开启我们的主DNS服务器的BIND服务

[root@xiaoluo etc]# service named start
Starting named: named: already running                     [  OK  ]

主DNS服务器的配置就基本这样子,接下来就是我们配置从DNS服务器的步骤了:

首先我们也需要在从服务器上安装BIND服务,这块就省略了,具体安装上一篇随笔有详细讲解 Linux学习之CentOS(三十四)--配置域主DNS服务器

在bind主配置文件中添加指定域的信息

我们只需要在named.conf配置文件下面添加如下信息就可:

zone

 

[root@slave etc]# ;        .

关闭从服务器上的SELinux

因为要通过网络来访问主服务器,所以这里也需要将我们的SELinux设置成 permissive

[root@slave etc]# getenforce Enforcing
[root@slave etc]# setenforce 0[root@slave etc]# getenforce Permissive

注意:】因为我们从主服务器上抓取文件到 slaves 这个目录下是由 named 这个系统用户来完成的,所以我们要保证slaves要有可写权限,同时slaves的所属用户、所属组都是 named 

[root@slave named]# ls -l
总用量 32drwxr-xr-x. 2 root root 4096 6月   6 22:52 data-rw-r--r--. 1 root root   56 6月   6 22:52 my.external.zone.db-rw-r--r--. 1 root root   56 6月   6 22:52 my.internal.zone.db-rw-r--r--. 1 root root 1892 6月   6 22:52 named.ca-rw-r--r--. 1 root root  152 6月   6 22:52 named.empty-rw-r--r--. 1 root root  152 6月   6 22:52 named.localhost-rw-r--r--. 1 root root  168 6月   6 22:52 named.loopback
drwxr-xr-x. 2 root root 4096 6月   6 22:52 slaves
[root@slave named]# chown named slaves/[root@slave named]# chgrp named slaves/[root@slave named]# ls -l
总用量 32drwxr-xr-x. 2 root  root  4096 6月   6 22:52 data-rw-r--r--. 1 root  root    56 6月   6 22:52 my.external.zone.db-rw-r--r--. 1 root  root    56 6月   6 22:52 my.internal.zone.db-rw-r--r--. 1 root  root  1892 6月   6 22:52 named.ca-rw-r--r--. 1 root  root   152 6月   6 22:52 named.empty-rw-r--r--. 1 root  root   152 6月   6 22:52 named.localhost-rw-r--r--. 1 root  root   168 6月   6 22:52 named.loopback
drwxr-xr-x. 2 named named 4096 6月   6 22:52 slaves

 

启动我们从服务器上的BIND服务,或刷新我们的BIND服务配置

[root@slave etc]# service named startGenerating /etc/rndc.key:                                  [确定]
启动 named:                                               [确定]

查看域的zone配置文件是否正常被抓取到了 /var/named/chroot/var/named/slaves/ 这个目录当中

[root@slave slaves]# ls -l
总用量 12-rw-r--r--. 1 named named 381 6月   6 23:20 cnblogs.com.zone-rw-r--r--. 1 root  root   56 6月   6 22:52 my.ddns.internal.zone.db-rw-r--r--. 1 root  root   56 6月   6 22:52 my.slave.internal.zone.db

我们看到,cnblogs.com.zone文件已经从主DNS服务器上抓取下来了

[root@slave slaves]# cat cnblogs.com.zone $ORIGIN .
$TTL 86400    ; 1 day
cnblogs.com        IN SOA    cnblogs.com. rname.invalid. (                0          ; serial                86400      ; refresh (1 day)                3600       ; retry (1 hour)                604800     ; expire (1 week)                10800      ; minimum (3 hours)
                )
            NS    cnblogs.com.
            A    127.0.0.1
            MX    10 mail.cnblogs.com.
            AAAA    ::1$ORIGIN cnblogs.com.
mail            A    192.168.1.222www            A    192.168.1.111

将从DNS服务器的指向当前主机

这个时候我们的从DNS服务器已经配置好了,我们这时修改 /etc/resolv.conf 文件然后将 nameserver 指向本机

[root@slave slaves]# vim /etc/resolv.confnameserver 127.0.0.1

通过 host 或者 dig 命令来验证我们的从DNS服务器是否能够正常解析

//    查询www.cnblogs.com的IP地址[root@slave slaves]# dig www.cnblogs.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> www.cnblogs.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61233;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2;; QUESTION SECTION:
;www.cnblogs.com.        IN    A

;; ANSWER SECTION:
www.cnblogs.com.    86400    IN    A    192.168.1.111;; AUTHORITY SECTION:
cnblogs.com.        86400    IN    NS    cnblogs.com.

;; ADDITIONAL SECTION:
cnblogs.com.        86400    IN    A    127.0.0.1cnblogs.com.        86400    IN    AAAA    ::1;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun  6 23:29:16 2013;; MSG SIZE  rcvd: 107//  查询cnblogs.com这个域的邮件记录[root@slave slaves]# dig -t mx cnblogs.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t mx cnblogs.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3328;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3;; QUESTION SECTION:
;cnblogs.com.            IN    MX

;; ANSWER SECTION:
cnblogs.com.        86400    IN    MX    10 mail.cnblogs.com.

;; AUTHORITY SECTION:
cnblogs.com.        86400    IN    NS    cnblogs.com.

;; ADDITIONAL SECTION:
mail.cnblogs.com.    86400    IN    A    192.168.1.222cnblogs.com.        86400    IN    A    127.0.0.1cnblogs.com.        86400    IN    AAAA    ::1;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun  6 23:30:04 2013;; MSG SIZE  rcvd: 124//  查询mail.cnblogs.com的IP地址[root@slave slaves]# dig mail.cnblogs.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> mail.cnblogs.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47353;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2;; QUESTION SECTION:
;mail.cnblogs.com.        IN    A

;; ANSWER SECTION:
mail.cnblogs.com.    86400    IN    A    192.168.1.222;; AUTHORITY SECTION:
cnblogs.com.        86400    IN    NS    cnblogs.com.

;; ADDITIONAL SECTION:
cnblogs.com.        86400    IN    A    127.0.0.1cnblogs.com.        86400    IN    AAAA    ::1;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jun  6 23:30:36 2013;; MSG SIZE  rcvd: 108

我们看到,我们的域名都能正常的解析成功,说明我们的从DNS服务器的配置就成功了

这个时候我们的客户端既可以指向我们的主服务器,也可以指向我们的从服务器了,当主服务器发生故障时,从服务器就会接替主服务器进行工作,提供DNS服务

三、配置缓存DNS服务器

在上面以及前一篇随笔中我们讲解了如何配置一个主DNS服务器,以及从DNS服务器,但是一个DNS服务器可以既不是某个域的master服务器,也可以不是某个域的slave服务器,一个DNS服务器可以不包含任何域的配置信息,它将接收到的所有DNS查询进行递归解析,将解析的结果返回给我们的查询客户端,并且将查询结果缓存下来,这样的服务器就称之为Caching DNS Server

通常我们在一个局域网中配置一个缓存DNS服务器是为了加速网络访问

我们也可以在缓存服务器上配置一个上游的DNS服务器地址,缓存服务器可以给客户提供一个上游DNS服务器的地址,只需通过加上以下一行语句在 named.conf 主配置文件即可:

forwarders { 218.30.19.40; };

[root@slave etc]# vim named.conf/*
 Sample named.conf BIND DNS server 'named' configuration file
 for the Red Hat BIND distribution.

 See the BIND Administrator's Reference Manual (ARM) for details, in:
   file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
 Also see the BIND Configuration GUI : /usr/bin/system-config-bind and 
 its manual.*/options
{
        directory               "/var/named";           // "Working" directory        forwarders      { 218.30.19.40; };  // 一般上游的DNS服务器要更稳定,性能更好  forwarders forward 选项都要写在 options 里面
};

zone "cnblogs.com"{
        type slave;
        masters { 192.168.198.129; };        file "slaves/cnblogs.com.zone";
};

我们还可以通过以下选项让缓存服务器将所有的DNS查询转发到forwarders服务器上:

forward only;

 

至此,本篇文章的编写就告一段落了,本篇随笔详细讲解了如何配置一台从DNS服务器,讲解了从服务器从主服务器上抓取zone配置文件的原理以及通过配置我们的缓存服务器来提高网络性能.......

本文转自sandshell博客51CTO博客,原文链接http://blog.51cto.com/sandshell/1947778如需转载请自行联系原作者


sandshell

相关文章
|
1月前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
1天前
|
负载均衡 JavaScript Linux
做网站如何选择云服务器?(一)配置篇
选择服务器需考虑网站规模、技术需求和地理位置。个人博客适合基础配置,企业官网需4核CPU、8GB内存,电商平台则需更高配置并配备负载均衡。技术上,展示型网站用PHP+MySQL,互动社区需Node.js/Python环境,视频类网站要大带宽。地理位置影响服务器选择,国内用户选腾讯云/阿里云,海外用户选AWS等。主流服务器类型包括虚拟主机(入门级)、云服务器(推荐)和物理服务器(高端需求)。云服务商普遍提供免费试用,便于评估性能。
15 1
|
6天前
|
弹性计算
【已解决】Matomo本地SMTP配置可以发邮件,但部署到阿里云ECS就发不了邮件
在阿里云ECS上使用Matomo和PHPMailer发送邮件时遇到问题,邮件无法发出且接口调用Pending。经过排查,发现是ECS安全组未开放25/465端口,导致SMTP请求无法正常通信。解决方法为在安全组中配置并开放25/465端口,从而恢复邮件发送功能。
|
8天前
|
弹性计算 运维 Ubuntu
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
152 4
|
1月前
|
存储 人工智能 缓存
怎么根据自己的业务选择阿里云服务器配置大小?
本文指导如何根据业务需求精准选择阿里云服务器配置,涵盖个人轻量级至企业级、计算密集型等场景,推荐不同实例类型、存储与带宽方案,并提供成本优化策略,如包年包月节省成本、按需升级配置及选用性价比高的自研ARM架构实例。帮助用户在数字化转型中实现性能与成本的平衡。 注:以上配置与价格基于阿里云2025年官方数据,实际信息可能有所调整,请以官网实时页面为准。
|
3月前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
310 78
|
1月前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
22天前
|
存储 安全 网络安全
阿里云国际站:阿里云服务器端口配置
悟空云@CloudWuKong阿里云是全球领先的云计算服务提供商,为用户提供弹性计算、数据库、存储、网络安全等一系列云计算服务。在使用阿里云服务器时,合理配置端口非常重要,可以提高服务器安全性和稳定性。
|
1月前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
1月前
|
存储 人工智能 监控
新手小白购买阿里云服务器省钱策略、配置选型与注意事项
针对初次使用阿里云服务器的用户,本文提供系统化的指导方案以优化成本并满足业务需求。首先介绍配置选型,包括实例类型(通用型、计算型、内存型)与基础配置建议;其次阐述省钱策略,如企业认证、合理选择计费模式及批量购买;最后提醒注意事项,涵盖带宽存储规划、地域网络优化及安全管理。新手可通过明确需求、选择配置、优化购买和持续监控四步快速上手,实现高效稳定的云端部署。 注:推荐配置基于2025年阿里云产品体系,具体信息请参考官网。

相关产品

  • 云解析DNS