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

  • 相关阅读:
    ROS入门笔记(三):二进制包与源代码包
    zsh 使用通配符功能
    Linux显示行号设置
    Linux、Ubuntu、CentOS安装和配置zsh
    Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated UXXXXXXXX escape
    Python数据分析:pandas玩转Excel(三)
    【WP8】ScrollViewer滑动到底触发器(ListBox失效)
    【WP8】扩展CM的INavigationService方法
    【WP8】仿QQ提示消息
    【WP8】键盘弹出时控制Frame位置
  • 原文地址:https://www.cnblogs.com/2567xl/p/11398180.html
Copyright © 2011-2022 走看看