zoukankan      html  css  js  c++  java
  • 安装和控制DNS服务器

    安装和控制DNS服务器

    BIND(Berkeley Internet Name Domain,伯克利Internet 域名服务 )是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,但不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中。其官方站点位于https://www.isc.org/

    1、安装BIND软件

    在CentOS7.x系统中,系统光盘自带了BIND服务的多个安装文件,各软件包的主要作用如下。

    • bind:提供了域名服务的主要程序及相关文件。
    • bind-utils:提供了对DNS服务器的测试工具程序,如nslookup等。
    • bind-1ibs:提供了bind、bind-utils需要使用的库函数。
    • bind-chroot:可选软件包,为BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND的根目录),以提高安全性。也称为jail(监牢)机制

    默认已安装bind-utils和bind-libs,所以只需要安装bind即可。

    [root@localhost ~]# rpm -q bind-utils bind-libs

    bind-utils-9.9.4-61.el7.x86_64

    bind-libs-9.9.4-61.el7.x86_64

    [root@localhost ~]# yum -y install bind

    查询是否已安装与BIND相关的软件包

    [root@localhost ~]# rpm -q bind bind-utils bind-libs

    bind-9.9.4-61.el7.x86_64

    bind-utils-9.9.4-61.el7.x86_64

    bind-libs-9.9.4-61.el7.x86_64

    2、BIND服务控制

    BIND软件包安装完毕以后,会自动增加一个名为named的系统服务,通过systemctl工具都可以控制DNS域名服务的运行。例如,执行以下操作可以查询named服务的运行状态。

    [root@localhost ~]# systemctl status named

    ● named.service - Berkeley Internet Name Domain (DNS)

       Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)

       Active: inactive (dead)

    3、BIND服务的配置文件

    使用BIND软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域数据文件。其中,主配置文件用于设置named服务的全局选项、注册区域及访问控制等各种运行参数;区数据文件用于存放某个DNS区域的地址解析记录(正向或反向记录)。

    ①. 主配置文件

    主配置文件named.conf通常位于/etc/目录下,在named.conf文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号“;”表示结束,以“#”号或者“//”开始的部分表示注释文字(大段注释可以使用“/* …… */”的格式)。

    1). 全局配置部分

    全局配置参数包括在形如“options { };”的大括号中,如可以设置监听的地址和端口、区数据文件存放的目录、允许哪些客户机查询等。

    [root@localhost ~]# cd /etc/

    [root@localhost etc]# vim named.conf

    ……                                                                                                               //省略部分参数

    options {

             listen-on port 53 { 192.168.200.111; };                                //监听地址和端口

             directory "/var/named";                                 //区域数据文件的默认存放位置

             allow-query { 192.168.100.0/24; 192.168.200.0/24;  };      //允许使用本DNS服务的网段

    };

    ……                                                                                                               //省略部分参数

    上述配置内容中,除了directory项通常会保留以外,其他的配置项都可以省略。若不指定listen-on配置项时,named默认在所有接口的UDP 53端口监听服务,不指定allow-query配置项时,默认会响应所有客户机的查询请求。

    2). 区域配置部分

    区域配置参数使用“zone …… {  };”的配置格式,一台DNS服务器可以为多个区域提供解析,因此在named.conf文件中也可以有很多个zone配置段。区域类型按照解析方向可分为正向区域、反向区域。

    [root@localhost etc]# vim named.conf

    ……                                                                                             //省略部分参数

    zone "crushlinux.com" IN {                                                  //正向"crushlinux.com"区域

             type master;                                                                    //类型为主区域

             file "crushlinux.zheng";                                      //区域数据文件为crushlinux. zheng

             allow-transfer { 192.168.200.112; };                     //允许下载的从服务器地址

    };

    zone "200.168.192.in-addr.arpa" IN {                              //反向"192.168.200.0/24"区域

             type master;

             file "crushlinux.fan";

    };

    ……                                                                                             //省略部分参数

    在上述配置内容中,有几个地方需要注意。

    ■ 每个zone区域都是可选的(包括根域、回环域、反向域),具体根据实际需要而定,zone配置部分的“IN”关键字也可以省略。

    ■ 反向区域的名称由倒序的网络地址和“in-addr.arpa”组合而成。例如,对于192.168.200.0/24网段,其反向区域名称表示为“200.168.192.in-addr.arpa”。

    ■ file配置项用于指定实际的区域数据文件,文件名称由管理员自行设置。

    ■ 区域配置中的部分参数(如allow-transfer)也可以放在全局配置里。

    修改完主配置文件以后,可以执行named-checkconf命令对named.conf文件进行语法检查。如果文件中没有语法错误,该命令将不给出任何提示,反之,则会给出相应的提示信息,只要根据出错提示修正文件中的错误即可。带“-z”选项的named-checkconf命令还可以尝试加载主配置文件中对应的区域数据库文件,并检查该文件是否存在问题。例如,当出现“…file not found”的错误时,表示找不到对应的文件。

    [root@localhost etc]# named-checkconf -z /etc/named.conf

    zone crushlinux.com/IN: loading from master file crushlinux.zheng failed: file not found

    zone crushlinux.com/IN: not loaded due to errors.

    _default/crushlinux.com/IN: file not found

    ……                                                                                             //省略部分参数

    关于named.conf文件中各种配置项的详细说明,可以执行"man named.conf,,查看手册页,也可参考配置样本文件/usr/share/doc/bind-9.8.2/sample/etc/named.conf。

    ②. 区域数据配置文件

    区域数据配置文件通常位于/var/named/目录下,每个区域数据文件对应一个DNS解析区域,文件名及内容由该域的管理员自行设置。

    根域“.”的区域数据文件比较特殊。Internet中所有的DNS服务器都使用同一份根区域数据文件,其中列出了所有根服务器的域名和IP地址。根区域数据文件可以从国际互联网络信息中心(InterNIC)的官方网站地址http://www.internic.net/下载。

    在区域数据文件中,主要包括TTL配置项、 SOA (Start of Authority,授权信息开始)记录、地址解析记录。文件中的注释信息以分号“;”开始。

    1). TTL配置及SOA记录部分

    第一行的TTL配置用于设置默认生存周期,即缓存解析结果的有效时问。 SOA记录部分用于设置区域名称、管理邮箱,以及为从域名服务指定更新参数。

    [root@localhost ~]# cd /var/named/

    [root@localhost named]# vim crushlinux.zheng

    $TTL          86400                                 ;有效解析记录的生存周期

    @     IN     SOA crushlinux.com. admin.crushlinux.com.  (      ;SOA标记、域名、管理邮箱

             2011030501                       ;更新序列号,可以是10位以内的整数

             3H                                         ;刷新时间,重新下载地址数据的间隔

             15M                                      ;重试延时,下载失败后的重试间隔

             1W                                        ;失效时间,超过该时间仍无法下载则放弃

             1D                                         ;无效解析记录的生存周期

    )

    上述配置内容中,时间单位默认为秒,也可以使用以下单位: M (分)、H (时)、W (周)、D(天)。文件中的“@”符号当于“crushlinux.com.”,“admin.crushlinux.com.”,表示域管理员的电子邮箱地址(由于“@”符号已有其他含义,因此将邮件地址中的“@”用代替)。SOA记录中的更新序列号用来同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。

    2).地址解析记录部分

    地址解析记录用来设置DNS区域内的域名、 IP地址映射关系,包括正向解析记录和反向解崭记录。反向解析记录只能用在反向区域数据文件中。

    [root@localhost named]# vim crushlinux.zheng

    ……                                                                                             //省略部分参数

    @                        IN              NS             ns1.crushlinux.com.

                                IN              MX   10     mail.crushlinux.com.

    ns1                     IN              A                192.168.200.111

    www                  IN              A                192.168.200.111

    mail                    IN              A                192.168.200.113

    map                   IN              A                192.168.200.114

    ftp                      IN              CNAME    www

    上述配置内容中,用到以下四种常见的地址解析记录。

    ■ NS域名服务器(Name Server):记录当前区域的DNS服务器的主机地址。

    ■ MX邮件交换(Mail Exchange):记录当前区域的邮件服务器的主机地址,数字10表示(当有多个MX记录时)选择邮件服务器的优先级,数字越大优先级越低。

    ■ A地址(Address):记录正向解析条目(IPV4)。例如,“WWW IN A 192.168.200.111”表示或名www.crushlinux.com对应的IP地址是192.168.200.111。

    ■ AAAA 地址(Address):记录正向解析条目(IPV6)。

    ■ CNAME别名(Canonical Name):记录某一个正向解析条目的其他名称。例如,“ftp IN CNAME www”表示域名ftp.crushlinux.com是www.crushlinux.com的别名。

    其中,NS、MX记录行首的“@”符号可以省略(默认继承SOA记录行首的@信息),但是必须保留一个空格或Tab制表位。

    在反向区域数据文件中,不会用到A地址记录,而是使用PTR指针(Point)记录。例如,对于反向区域crushlinux.fan,添加的反向解析记录可以是以下形式。

    [root@localhost named]# vim crushlinux.fan

    ……                                                                                             //省略部分参数

    @                        IN              NS             ns1.crushlinux.com.

                                IN              MX   10     mail.crushlinux.com.

    111                     IN              PTR           ns1.crushlinux.com.

    111                 IN             PTR           www.crushlinux.com.

    113                 IN             PTR           mai.crushlinux.com.

    114                     IN              PTR           map.crushlinux.com.

    使用PTR记录时,第一列中只需要指明对应IP地址的“主机地址”部分即可,如“111”、“113”等,系统在查找地址记录时会自动将当前反向域的网络地址作为前缀。例如,上述文件中的“4 IN PTR  mai1.crushlinux.com.”,表示IP地址为192.168.200.113的主机的域名是mail.crushlinux.com.。

    在区域数据配置文件中,凡是不以点号".″结尾的主机地址,系统在查找地址记录时都会自动将当前的域名作为后缀。例如,若当前的DNS域为“crushlinux.com”,则在文件中的主机地址“www”相当于“www.crushlinux.com”。因此,当使用完整的FQDN地址时,务必记得地址末尾的点号“.”不能省略。

    修改完区域数据文件以后,可以执行named-checkconf命令对该文件进行语法检查。依次指定区域名称、数据文件名作为参数。如果文件中没有语法错误,系统将给出“OK”的提示信息。例如,若要检查DNS区域crushlinux.com的区域数据文件crushlinux.zheng,可以执行以下操作。

    [root@localhost ~] # cd /var/named/

    [root@localhost named] # named-checkzone crushlinux.com crushlinux.zheng

    zone crushlinux.com/IN: loaded seria1 2011030501

    0K

    当一台服务器需要同时承载某个DNS区域内的许多个不同的域名时(如IDC的虚拟主机服务器、提供个人主页空问的网站服务器等),可以在区域数据文件的最后一行添加泛域名解析记录,即使用“*”以匹配任意主机名。

    *                   IN       A      192.168.200.111

    基于域名解析的负载均衡:同一个域名对应到多个IP地址

    www       IN       A      192.168.200.111

    www       IN       A      192.168.200.112

    www       IN       A      192.168.200.113

    5、构建缓存域名服务器

    学习了DNS服务器的相关基础知识、BIND软件包的安装,以及DNS服务器的配置文件组成、配置格式等。下面分别讲解构建缓存域名服务器、主域名服务器、从域名服务器的基本过程。

         缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对互联网访问的出口流量。例如,在一个小型企业的内部网络,如下图中,可单独建立一台(或集成在网关主机中)缓存域名服务器,为各部门的员工计算机提供DNS解析服务。

    参考上述网络结构,本小节案例使用的基本环境和要求如下所述。

    ■ 缓存域名服务器的IP地址为192.168.200.111,并能够正常访问互联网。

    ■ 缓存域名服务器代为处理客户端的DNS解析请求,并缓存查询结果。

    ■ 局域网内的各PC将首选DNS服务器地址设为192.168.200.111。

    下面讲解使用BIND构建此缓存域名服务器的基本步骤。

    ①. 建立主配置文件named.conf

    若使用范本文件创建named.conf,应注意修改或删除默认的监听设置、查询控制,以便能够为局域网段的客户机提供服务。另外,logging、view配置部分一般用不到,可以先注释以避免其干扰。

    [root@localhost ~]# vim /etc/named.conf

    options {

             listen-on port 53 { 192.168.200.111; };

             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     { 192.168.200.0/24; };

             recursion yes;

    };

    zone "." IN {                                                            //正向“.”根区域

            type hint;                                              //类型为根区域

            file "named.ca";                                  //区域数据文件为named.ca

    };

    上述配置内容中,dump-file、statistics-file、memstatistics-file等配置项用于指定缓存数据库文件、状态统计文件的位置。添加了“zone "." IN{ ……};”部分的根区域设置,尽管缓存服务器并没有自主控制的区域数据,但可以向根服务器进行迭代查询,并将最终获得的解析结果反馈给客户。

    有时候为了提高解析效率,也可以不向根区域查询,而是将来自客户端的查询请求转发给国内电信运营商的DNS服务器(如北京的202.106.0.20、 202.106.148.1),缓存服务器收到返回的查询结果后再传递给客户端。只要去掉“zone "." IN{ ……};”的设置,并在全局配置中正确设置forwarders参数即可实现该功能。

    [root@localhost etc]# vim named.conf

    options {

             ……                                                                                                               //省略部分内容

             forwarders{202.106.0.20;   202.106.148.1;};

    };

    ②. 确认根域的区域数据文件named.ca

    根区域的区域数据文件默认位于文件/var/named/named.ca中,该文件记录了Internet中13台根域服务器的域名和IP地址等相关信息。

    [root@localhost ~]# ls /var/named/

    data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

    ③. 启动named服务

    执行“systemctl start named”命令,启动named服务,并通过netstat命令确认named服务的端口监听状态。若服务启动失败或发现没有正常监听UDP53端口,可以根据错误提示信息(或者/var/log/messages文件中的日志记录)排除错误,然后再重启服务即可。

    [root@localhost ~]# systemctl start named

    [root@localhost ~]# systemctl enable named

    Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

    [root@localhost ~]# netstat -anpu | grep named

    udp        0      0 192.168.200.111:53      0.0.0.0:*                           63751/named

    ④. 验证缓存域名服务器

    在局域网内的客户机中,将首选DNS服务器的地址设为192.168.200.111.生效后,执行“nslookup www.baidu.com”命令对其进行解析,验证其是否能够获得该域名对应的IP地址信息。

    6、构建主域名服务器

    主域名服务器通常架设在Internet环境中,提供某一个域或某几个域内的主机名与IP地址的查询服务。为了分担域名查询的压力、提供区域数据的备份,有时还会另外架设一台从域名服务器,与主域名服务器同时提供服务,如下图所示。

    参考下图的网络结构,将分别介绍主域名服务器、从域名服务器的构建过程。案例使用的基本网络环境和要求如下所述。

    ■ 主、从域名服务器均位于Internet中,所负责的DNS区域为“crushlinux.com”。

    ■ 主服务器的IP地址为192.168.200.111,主机名为nsl.crushlinux.como

    ■ 从服务器的IP地址为192.168.200.112,主机名为ns2.crushlinux.como

    ■ 参考各服务器的地址映射关系,为192.168.200.0/24网段提供反向解析。

     

    ■ 在crushlinux.com区域中,除了NS记录以外,提供的解录还包括以下内容。

    ● 网站服务器www.crushlinux.com,IP地址为192.168.200.111。

    ● 邮件服务器mai1.crushlinux.com,IP地址为192.168.200.112。

    ● 在线培训服务器study.crushlinux.com,IP地址为192.168.200.113。

    ● 设置crushlinux.com域的泛域名解析,对应的IP地址为192.168.200.111。

    ■ 客户机将首选、备用DNS服务器分别设为192.168.200.111和192.168.200.112,使用其中的任何一个服务器.都能够正常查询crushlinux.com区域中的主机地址。

    下面首先讲解使用BIND构建主域名服务器的基本步骤。

    ①. 确认本机的网络地址、主机映射、默认DNS服务器地址。

    将主域名服务器的IP地址设为192.168.200.111、主机名设为ns1.crushlinux.com,通过修改网络配置文件的方式进行。另外,为了提高域名解析效率,建议将两个DNS服务器的地址映射直接写入到/etc/hosts文件中,并在/etc/resolv.conf文件中指定两个DNS服务器的地址。

    [root@localhost ~]# tail -2 /etc/hosts

    192.168.200.111               nsl.crushlinux.com        nsl

    192.168.200.112               ns2.crushlinux.com       ns2

    [root@localhost ~]# tail -2 /etc/resolv.conf

    nameserver   192.168.200.111

    nameserver   192.168.200.112

    ②. 建立主配置文件named.confo

    新创建的named.conf主配置文件,由于只需要提供crushlinux.com域的正向解析和192.168.200.0/24网段的反向解析,因此相应地添加这两个区域即可。根区域、回环域等其他配置内容可以省略。

    [root@localhost ~]# cd /etc/

    [root@localhost etc]# vim named.conf

    options {

             directory "/var/named";

    };

    zone "crushlinux.com" IN {                                                  //正向"crushlinux.com"区域

             type master;                                                                    //类型为主区域

             file "crushlinux.zheng";                                      //区域数据文件为crushlinux. com. zone

             allow-transfer { 192.168.200.112; };                     //允许从服务器地址下载正向域数据

    };

    zone "200.168.192.in-addr.arpa" IN {                              //反向"192.168.200.0/24"区域

             type master;

             file "crushlinux.fan";

             allow-transfer { 192.168.200.112; };                     //允许从服务器地址下载反向域数据

    };

    当不需要建立从域名服务器时,上述配置内容中的“allow-transfer ……”部分可以不添加,当不需要提供反向解析时,“zone "200.168.192.in-addr.arpa" IN { …… }”部分也可以去掉。

    ③. 建立正向、反向区域数据文件。

    根据named.conf中的zone区域设置,分别建立正向区域数据文件crushlinux.zheng.反向区域数据文件crushlinux.fan配置内容可以参考区域数据文件/var/named/named.localhost。

    [root@localhost ~]# cd /var/named/

    [root@localhost named]# vim crushlinux.zheng

    $TTL          86400                ;有效解析记录的生存周期

    @     IN     SOA crushlinux.com. admin.crushlinux.com. (          ;SOA标记、域名、管理邮箱

             2011030501     ;更新序列号,可以是10位以内的整数

             3H                       ;刷新时间,重新下载地址数据的间隔

             15M                   ;重试延时,下载失败后的重试间隔

             1W                     ;失效时间,超过该时间仍无法下载则放弃

             1D                       ;无效解析记录的生存周期

    )

    @              IN     NS             ns1.crushlinux.com.

                       IN     NS             ns2.crushlinux.com.

                       IN     MX   10     mail.crushlinux.com.

    ns1            IN     A                192.168.200.111

    ns2            IN     A                192.168.200.112

    mail          IN     A                192.168.200.112

    www         IN     A                192.168.200.111

    study       IN     A                192.168.200.113

    *                IN     A                192.168.200.111

     

    [root@localhost named]# vim crushlinux.fan

    $TTL          86400

    @     IN     SOA crushlinux.com. admin.crushlinux.com. (

             2011030501    

             3H

             15M

             1W

             1D

    )

    @              IN     NS             ns1.crushlinux.com.

                       IN     NS             ns2.crushlinux.com.

    111            IN     PTR           www.crushlinux.com.

    112            IN     PTR           mail.crushlinux.com.

    113            IN     PTR           study.crushlinux.com.

    111            IN     PTR           ns1.crushlinux.com.

    112            IN     PTR           ns2.crushlinux.com.

    ④. 启动named服务或重载配置。

    启动named服务,如果之前named服务已经在运行,也可以重启服务或重载配置。

    [root@localhost named]# chgrp named crushlinux.zhengcrushlinux.fan

    [root@localhost ~]# named-checkconf /etc/named.conf

    [root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.zheng

    zone crushlinux.com/IN: loaded serial 2019010801

    OK

    [root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.fan

    zone crushlinux.com/IN: NS 'ns1.crushlinux.com' has no address records (A or AAAA)

    zone crushlinux.com/IN: NS 'ns2.crushlinux.com' has no address records (A or AAAA)

    zone crushlinux.com/IN: not loaded due to errors.

     

    [root@localhost named]# systemctl reload named

    ⑤. 验证主域名服务器。

    客户端将DNS服务器指向192.168.200.111 (主域名服务器的IP地址) ,使用nslookup命令验证DNS查询结果。例如,以下操作使用Windows 7客户机分别验证了正向解析、泛域名解析、反向解析的查询结果。

    C:UsersAdministrator> nslookup study.crushlinux.com                    //验证正向域名解析

    服务器: nsl.crushlinux.com

    Address: 192.168.200.111

    名称: Study.crushlinux.com

    Address: 192.168.200.113

    C:UsersAdministrator>nslookup www.crushlinux.com

    服务器:  ns1.crushlinux.com

    Address:  192.168.200.111

     

    名称:    www.crushlinux.com

    Address:  192.168.200.111

     

    C: UsersAdministrator> nslookup xxyyzz.crushlinux.com                //验证泛域名解析

    服务器: nsl.crushlinux.com

    Address: 192.168.200.111.

    名称: xxyyzz.crushlinux.com

    Address: 192.168.200.111

    C:UsersAdministrator> nslookup192.168.200.112                  //验证反向域名解析

    服务器: nsl.crushlinux.com

    Address: 192.168.200.111

    名称: mai1.crushlinux.com

    Address: 192.168.200.112

    7、构建从域名服务器

    继续用上面的应用案例,在已经构建好主域名服务器192.168.200.111的基础之上,继续构建从域名服务器192.168.200.112。

    ①. 确认本机的网络地址、主机映射、默认DNS服务器地址

    将从域名服务器的IP地址设为192.168.200.112,主机名设为ns2.crushlinux.com,通过修改网络配置文件的方式进行。另外,主机映射文件/etc/hosts和DNS解析文件/etc/resolve.conf的内容与主服务器中的内容相同。

    ②. 建立主配置文件named.conf

    在从域名服务器中,named.conf文件的内容与主服务器的内容大部分相同,只是不需要再设置“allow-transfer ……”,更关键的一点是, zone部分的区域类型应设置为“slave”,并添加“masters {  };”语句来指定主域名服务器的地址。

    [root@localhost ~]# yum -y install bind

    [root@localhost ~]# cd /etc/

    [root@localhost etc]# vim named.conf

    options {

             directory  "/var/named";

    };

     

    zone "crushlinux.com" IN {                                         //正向"crushlinux.com"区域

             type slave;                                                               //类型为从区域

             masters { 192.168.200.111; };                           //指定主服务器的IP地址

             file "slaves/crushlinux.zheng";                        //下载的区域文件保存到slave/crushlinux. com. zone

    };

    zone "200.168.192.in-addr.arpa" IN {                     //反向"173.16.16.0/24"区域

             type slave;

             masters { 192.168.200.111; };        

             file " slave/Crushlinux.fan";

    };

    由于从服务器的区域数据文件是从主服务器中下载而来,因此该文件保存的名称可以自行定义,不用非得与主服务器中的一致。但需要注意的是,named服务默认以名为“named”的用户身份运行,因此要确认named用户对存放目录有写入权限。

    [root@localhost ~]# ls -l /var/named/slaves/

    总用量 0

    ③. 启动named服务,查看区域数据文件是否下载成功

    在从域名服务器中启动named服务,若配置无误,则named将会从主域名服务器中自动下载指定的区域数据文件,并保存到“slaves/”目录下。另外,通过系统日志文件/var/log/messages也可以观察到下载区域数据文件的过程。

    [root@localhost ~]# systemctl start named

    [root@localhost ~]# ls -l /var/named/slaves/

    总用量 8

    -rw-r--r-- 1 named named 483 1月   8 23:03 crushlinux.fan

    -rw-r--r-- 1 named named 538 1月   8 23:03 crushlinux.zheng

     

    ④. 验证从域名服务器

    对于客户端来说,从域名服务器与主域名服务器并没有什么区别,通过主服务器能够查询到的信息,通过从服务器也同样能够查询到。验证从域名服务器时,只需要将客户端的首选DNS服务器地址设为192.168.200.112(从域名服务器的IP地址),使用nslookup命令进行正常测试即可。例如,以下操作是使用Linux客户机的测试结果。

    [root@localhost etc]# nslookup study.crushlinux.com

    服务器:  mail.crushlinux.com

    Address:  192.168.200.112

     

    名称:    study.crushlinux.com

    Address:  192.168.200.113

     

    [root@localhost etc]# nslookup 192.168.200.112

    服务器:  mail.crushlinux.com

    Address:  192.168.200.112

     

    名称:    mail.crushlinux.com

    Address:  192.168.200.112

    8、DNS解析综合学习案例

    1、用户需把/dev/myvg/mylv逻辑卷以支持磁盘配额的方式挂载到网页目录下

    2、在网页目录下创建测试文件index.html,内容为用户名称,通过浏览器访问测试

    3、创建用户账户,对LVM配置磁盘配额限制用户磁盘容量为软限制80M;硬限制100M、文件数量软限制为80个;硬限制为100个。

    4、构建主从DNS域名解析环境

    5、主从DNS都可将www.crushlinux.com域名解析为192.168.200.113

    6、客户机可通过浏览器访问www.crushlinux.com得到WEB服务器相应内容

    7、主域名服务器要同时担任缓存域名服务器功能

    8、客户机通过nslookup域名测试工具可解析到www.jd.com等网站的域名解析结果

    9、DNS生产环境案例

    在域名运营商购买域名备案后,可将域名DNS更改为自己构建的DNS服务器。

    [root@localhost ~]# nslookup www.crushlinux.com 134.175.27.146

    Server:              134.175.27.146

    Address: 134.175.27.146#53

     

    Name:      www.crushlinux.com

    Address: 180.153.100.100

    10、构建DNS域名服务器的分离解析

    DNS分离解析域名服务器概述

             DNS分离解析域名服务器实际也是主域名DNS服务器,这里所说的分离解析(Split DNS),主要是指根据不同来源的客户端请求,提供不同的域名解析记录。来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果。

    分离解析案例:

    如下图所示:Crushlinux工作室的DNS域名服务器架设在公司网关服务器中,网关服务器拥有两个网卡,ens32(VMnet8)的IP地址为192.168.200.111属于公司的内网通信网络;网卡ens34(Vmnet2)的IP地址为172.16.1.1属于公司的公网通信网络。公司注册的域名有网站服务器:www.crushlinux.com和邮件服务器:mail.crushlinux.com。

    案例需求:

    • 来自Internet的客户机解析www.crushlinux.com和mail.crushlinux.com域名时考虑服务器的安全性,需解析为公司的公网地址172.16.1.1。使其通过公司的网关服务器转发后访问网站和邮件服务器。
    • 来自公司局域网中的客户机解析www.crushlinux.com和mail.crushlinux.com域名时考虑到用户访问速度分别解析为服务器局域网地址192.168.200.112和192.168.200.113。使其通过公司局域网直接访问相应服务器。
    • 客户机切换网络模式,模拟内网与公网地址进行解析测试。

    10.1、前期环境准备

    [root@localhost ~]# ip a | grep ens

    2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

        inet 192.168.200.111/24 brd 192.168.200.255 scope global ens32

    3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

        inet 172.16.1.1/24 brd 172.16.1.255 scope global ens34

    [root@localhost ~]# systemctl stop firewalld

    [root@localhost ~]# iptables -F

    [root@localhost ~]# setenforce 0

    setenforce: SELinux is disabled

    [root@localhost ~]# yum -y install bind

    10.2、修改/etc/named.conf主配置文件中为不同网络的客户机地址准备不同的zone区域设置,各自使用独立的数据文件

    [root@localhost ~]# vim /etc/named.conf

    options {

             directory         "/var/named";

    };

     

    view "LAN" {

    match-clients { 192.168.200.0/24; };     //匹配局域网的客户端

    zone "crushlinux.com" IN {

             type master;

             file "crushlinux.zheng.lan";

    };

    };

     

    view "WAN" {

    match-clients { any; };    //匹配互联网的客户端

    zone "crushlinux.com" IN {

            type master;

            file "crushlinux.zheng.wan";

    };

    };

    10.3、分别建立不同的区域数据文件

    [root@localhost ~]# cd /var/named/

    [root@localhost named]# vim crushlinux.zheng.lan

    $TTL 86400

    @     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                       2019011001

                       3H

                       15M

                       1W

                       1D

    )

             IN     NS    ns.crushlinux.com.

             IN     MX 10      mail.crushlinux.com.

    ns     IN     A      192.168.200.111

    www         IN     A      192.168.200.112

    mail IN     A      192.168.200.113

     

    [root@localhost named]# vim crushlinux.zheng.wan

    $TTL 86400

    @     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                       2019011001

                       3H

                       15M

                       1W

                       1D

    )

             IN     NS    ns.crushlinux.com.

             IN     MX 10      mail.crushlinux.com.

    ns     IN     A      172.16.1.1

    www         IN     A      172.16.1.1

    mail IN     A      172.16.1.1

    [root@localhost named]# chgrp named crushlinux.zheng.*

    [root@localhost named]# ls -l crushlinux.zheng.*

    -rw-r--r-- 1 root named 229 1月  10 23:51 crushlinux.zheng.lan

    -rw-r--r-- 1 root named 214 1月  10 23:52 crushlinux.zheng.wan

     

    [root@localhost named]# systemctl restart named

    10.4、客户机设置网络模式为VMnet8,DNS服务器指向为192.168.200.111,解析测试

    C:UsersCrushlinux>nslookup www.crushlinux.com

    服务器:  UnKnown

    Address:  192.168.200.111

     

    名称:    www.crushlinux.com

    Address:  192.168.200.112

     

    C:UsersCrushlinux>nslookup mail.crushlinux.com

    服务器:  UnKnown

    Address:  192.168.200.111

     

    名称:    mail.crushlinux.com

    Address:  192.168.200.113

     

    10.5、客户机设置网络模式为VMnet2,DNS服务器指向为172.16.1.1,解析测试

    C:UsersCrushlinux>nslookup www.crushlinux.com

    服务器:  UnKnown

    Address:  172.16.1.1

     

    名称:    www.crushlinux.com

    Address:  172.16.1.1

    C:UsersCrushlinux>nslookup mail.crushlinux.com

    服务器:  UnKnown

    Address:  172.16.1.1

     

    名称:    mail.crushlinux.com

    Address:  172.16.1.1

    11、DNS view的多种应用方式

    11.1、match-clients直接指定地址

    [root@localhost ~]# vim /etc/named.conf

    options {

             directory         "/var/named";

    };

     

    view "LAN" {

    match-clients { 192.168.200.0/24; };     //匹配局域网的客户端

    zone "crushlinux.com" IN {

             type master;

             file "crushlinux.zheng.lan";

    };

    };

     

    view "WAN" {

    match-clients { any; };    //匹配互联网的客户端

    zone "crushlinux.com" IN {

            type master;

            file "crushlinux.zheng.wan";

    };

    };

    11.2、基于acl访问控制列表

    [root@localhost ~]# vim /etc/named.conf

    options {

             directory         "/var/named";

    };

     

    acl lan { 192.168.200.0/24; };          //定义访问控制列表

    acl wan { any; };

     

    view "LAN" {

    match-clients { lan; };     //匹配局域网的客户端

    zone "crushlinux.com" IN {

             type master;

             file "crushlinux.zheng.lan";

    };

    };

     

    view "WAN" {

    match-clients { wan; };   //匹配互联网的客户端

    zone "crushlinux.com" IN {

            type master;

            file "crushlinux.zheng.wan";

    };

    };

    11.3、基于访问控制文件

    [root@localhost ~]# cat /var/named/lan.txt

    acl lan {

    192.168.200.0/24;

    };

    [root@localhost ~]# cat /var/named/wan.txt

    acl wan {

    any;

    };

    [root@localhost ~]# vim /etc/named.conf

    [root@localhost ~]# cat /etc/named.conf

    options {

             directory         "/var/named";

    };

     

    include "/var/named/lan.txt";

    include "/var/named/wan.txt";

     

    view "LAN" {

    match-clients { lan; };

    zone "crushlinux.com" IN {

             type master;

             file "crushlinux.zheng.lan";

    };

    };

     

    view "WAN" {

    match-clients { wan; };

    zone "crushlinux.com" IN {

            type master;

            file "crushlinux.zheng.wan";

    };

    };

    12、构建智能DNS域名解析服务器

    随着原中国电信集团按南北地域分家,新的中国电信和网通集团随即成立,互联网的骨干网也被一分为二了,北有网通、南有电信。从此,细心的网民可以发现,有些经常访问的网站速度一下子慢了下来,有时候还有访问不到的情况出现。例如北方地区的网络用户访问中国网通的服务器会非常快,而访问中国电信的服务器时,感觉非常慢。这种现象不仅影响了网站的访问量,更严重的是它直接影响了一些经营性网站的经济效益。据分析,产生这个问题的根本原因是中国电信分家之后,电信与网通之间的互连存在问题。虽然信息产业部已经在规划南北互通计划,但在今后相当长的一段时期内,南北方网互连的问题还会长期存在。

    智能DNS解析是针对电信和网通互联互通不畅的问题推出的一种DNS解决方案。

    智能DNS域名解析服务器能自动判断访问者的IP地址并根据IP地址所属的运营商不同可为其解析出对应运营商服务器的IP地址,使网通用户访问到网通服务器,电信用户访问到电信服务器,而不需要用户进行选择。避免用户访问跨运营商导致用户访问速度缓慢。

             例如一个企业网站站点带宽租用了三个运营商的带宽:电信、网通、移动,同样有三个来自不同运营商网络的访问用户,那电信用户访问企业网站时,智能DNS会进行自动判断,根据IP来源运营商,为其解析为电信运营商IP地址,使用户访问同运营商服务器;其他运营商的用户访问的也同理,如下图所示。

     

    智能DNS策略解析还可以实现就近访问机制。有些用户在国外和国内都放置了服务器,使用我们的DNS策略解析服务可以让国外的网络用户访问你国外的服务器,国内的用户访问国内的服务器,从而使国内外的用户都能迅速的访问到你的服务器。

    智能DNS作用

    • 双线路的机房:服务本身有两个IP,一个电信IP,一个网通IP或者其他线路。
    • 镜象网站:在网通及电信的机房放置多个相同的镜象站点, 让不同的地方客户访问不同的站点。
    • 负载均衡:对于流量比较大的网站,可以把流量分配到几台不同的服务器上,以提高网站速度。
    • 个性化站点服务:比如通过IP表的重新定义, 让国外的客户自动访问英文版的网站; 让国内的客户自动访问中文版的网站。
    • CDN(内容分发网络)加速器:通过与squid、Nginx、Varnish等WEB缓存软件结合实现CDN加速器。
    • 防止DDOS(分布式拒绝服务)攻击:通过多个线路分散攻击流量,从而达到抵挡DDOS攻击。

    CDN加速基础原理

    智能DNS域名服务器案例:

    如下图所示:Crushlinux工作室的DNS域名服务器架设在公司网关服务器中,网关服务器拥有两个网卡,ens32(VMnet8)的IP地址为192.168.200.111属于公司的内网通信网络;网卡ens34(Vmnet2)的IP地址为172.16.1.1(VMnet2)属于公司的公网通信网络。公司注册的域名有网站服务器:www.crushlinux.com和邮件服务器:mail.crushlinux.com。

    案例需求:

    12.1、前期环境准备

    [root@localhost ~]# ip a | grep ens

    2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

        inet 192.168.200.111/24 brd 192.168.200.255 scope global ens32

    3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

        inet 172.16.1.1/24 brd 172.16.1.255 scope global ens34

    [root@localhost ~]# systemctl stop firewalld

    [root@localhost ~]# iptables -F

    [root@localhost ~]# setenforce 0

    setenforce: SELinux is disabled

    [root@localhost ~]# yum -y install bind

    12.2、修改/etc/named.conf主配置文件中为不同运营商的客户机地址准备不同的zone区域设置,各自使用独立的数据文件

    [root@localhost ~]# cat /var/named/wangtong.txt

    acl wangtong {

    172.16.1.3;

    };

    [root@localhost ~]# cat /var/named/dianxin.txt

    acl dianxin {

    172.16.1.2;

    };

    [root@localhost ~]# cat /etc/named.conf

    options {

             directory         "/var/named";

    };

     

    include "/var/named/dianxin.txt";

    include "/var/named/wangtong.txt";

     

    view "dianxin" {

    match-clients { dianxin; };

    zone "crushlinux.com" IN {

             type master;

             file "crushlinux.zheng.dianxin";

    };

    };

     

    view "wangtong" {

    match-clients { wangtong; };

    zone "crushlinux.com" IN {

            type master;

            file "crushlinux.zheng.wangtong";

    };

    };

    12.3、分别建立不同的区域数据文件

    [root@localhost ~]# cd /var/named/

    [root@localhost ~]# cat /var/named/crushlinux.zheng.dianxin

    $TTL 86400

    @     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                       2019011001

                       3H

                       15M

                       1W

                       1D

    )

                      IN     NS    ns.crushlinux.com.

                      IN     MX 10      mail.crushlinux.com.

    ns              IN     A      172.16.1.1

    www         IN     A      172.16.1.12

    mail          IN     A      172.16.1.12

    [root@localhost ~]# cat /var/named/crushlinux.zheng.wangtong

    $TTL 86400

    @     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                       2019011001

                       3H

                       15M

                       1W

                       1D

    )

                      IN     NS    ns.crushlinux.com.

                      IN     MX 10      mail.crushlinux.com.

    ns              IN     A      172.16.1.1

    www         IN     A      172.16.1.13

    mail          IN     A      172.16.1.13

    [root@localhost named]# chgrp named crushlinux.zheng.*

    [root@localhost named]# ls -l crushlinux.zheng.*

    -rw-r--r-- 1 root named 229 1月  10 23:51 crushlinux.zheng.lan

    -rw-r--r-- 1 root named 214 1月  10 23:52 crushlinux.zheng.wan

     

    [root@localhost named]# systemctl restart named

    12.4、客户机设置网络模式为VMnet2,IP地址为172.16.1.2模拟电信用户,解析测试

    C:UsersCrushlinux>nslookup www.crushlinux.com

    服务器:  UnKnown

    Address:  172.16.1.1

     

    名称:    www.crushlinux.com

    Address:  172.16.1.12

    12.5、客户机设置网络模式为VMnet2,IP地址为172.16.1.3模拟网通用户,解析测试

    C:UsersCrushlinux>nslookup www.crushlinux.com

    服务器:  UnKnown

    Address:  172.16.1.1

     

    名称:    www.crushlinux.com

    Address:  172.16.1.13

    13、获取不同运营商的IP地址范围

    https://github.com/clangcn/everyday-update-cn-isp-ip

    根据APNIC的最新IP地址列表及whois信息,每日0点(北京时间)生成的各主要运营商IP地址段。

    中国电信 IP地址段:(http://ispip.clang.cn/chinatelecom.html)

    中国联通(网通)IP地址段:(http://ispip.clang.cn/unicom_cnc.html)

    中国移动 IP地址段:(http://ispip.clang.cn/cmcc.html)

    中国铁通 IP地址段:(http://ispip.clang.cn/crtc.html)

    中国教育网 IP地址段:(http://ispip.clang.cn/cernet.html)

    中国其他ISP IP地址段:(http://ispip.clang.cn/othernet.html)

    [root@localhost ~]# cat ispip.sh

    #!/bin/bash

     

    url="http://ispip.clang.cn/"

    for i in chinatelecom unicom_cnc cmcc crtc cernet othernet

    do

             wget $url$i.html -O /tmp/$i.txt

             sed -n '/^[0-9]/ s/<br>/;/gp' /tmp/$i.txt | sed "1iacl $i {" | sed '$a};' > /var/named/$i.txt

    done

    [root@localhost ~]# chmod +x ispip.sh

    [root@localhost ~]# crontab -e

    *       */5   *       *       *       /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1

    05     0       *       *       *       /bin/bash /root/ispip.sh

    [root@localhost ~]# systemctl restart crond

  • 相关阅读:
    Android开发 ViewConfiguration View的配置信息类
    Android 开发 倒计时功能 转载
    Android 开发 关于7.0 FileUriExposedException异常 详解
    Android 开发 实现文本搜索功能
    Android 开发 Activity里获取View的宽度和高度 转载
    Android 开发 存储目录的详解
    Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
    Android 开发 将window变暗
    Android 开发 DisplayMetrics获取Android设备的屏幕高宽与其他信息
    Android 开发 DP、PX、SP转换详解
  • 原文地址:https://www.cnblogs.com/2567xl/p/11398180.html
Copyright © 2011-2022 走看看