安装和控制DNS服务器

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 07:13:39

安装和控制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:\Users\Administrator> nslookup study.crushlinux.com                    //验证正向域名解析

服务器: nsl.crushlinux.com

Address: 192.168.200.111

名称: Study.crushlinux.com

Address: 192.168.200.113

C:\Users\Administrator>nslookup www.crushlinux.com

服务器:  ns1.crushlinux.com

Address:  192.168.200.111

 

名称:    www.crushlinux.com

Address:  192.168.200.111

 

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

服务器: nsl.crushlinux.com

Address: 192.168.200.111.

名称: xxyyzz.crushlinux.com

Address: 192.168.200.111

C:\Users\Administrator> 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:\Users\Crushlinux>nslookup www.crushlinux.com

服务器:  UnKnown

Address:  192.168.200.111

 

名称:    www.crushlinux.com

Address:  192.168.200.112

 

C:\Users\Crushlinux>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:\Users\Crushlinux>nslookup www.crushlinux.com

服务器:  UnKnown

Address:  172.16.1.1

 

名称:    www.crushlinux.com

Address:  172.16.1.1

C:\Users\Crushlinux>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:\Users\Crushlinux>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:\Users\Crushlinux>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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!