Linux运维实战经验分享:搭建DNS服务器实现域名解析

全套学习资料移步至公众号【学神来啦】

本节所讲内容:

  5.1  DNS服务器常见概念

  5.2  DNS服务器安装及相关配置文件

  5.3  实战:为公司内网搭建一个DNS服务器

  5.4  实战:DNS递归查询和搭建DNS转发服务器

  5.5  实战:搭建DNS主从服务器

实验环境:

DNS服务端:xuegod63.cn   IP:192.168.1.63

DNS客户端:xuegod64.cn   IP:192.168.1.64

特别说明:

在以下的实验当中,配置文件中的内容说明或调整配置时,如书面上没有出现的内容并在实验主机中的配置文件中出现的内容,则不需要修改,仅需要修改书面上出的加粗字体部分的内容。

5.1  DNS服务概述

DNS(Domain Name System)域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息,如图 5-1 所示。

图 5-1 DNS树形结构示意图

5.1.1  域和域名

DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。

域名空间的每个域的名字,通过域名进行表示。

域名:通常由一个完全合格域名(FQDN)标识。FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google 来说,其完全正式域名(FQDN)为google.com。

例如,google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示。

注意:通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z

和减号(-)。点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用。

域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域。

Internet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织,“.”全球有13个根(root)服务器

DNS 根域下面是顶级域,也由Internet 域名注册授权机构管理。共有3 种类型的顶级域。

组织域:采用3个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组织,org 为非营利机构组织,int 为国际机构组织。

地址域:采用两个字符的国家或地区代号。如cn 为中国,kr 为韩国,us 为美国。

反向域:这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询)。

对于顶级域的下级域,Internet 域名注册授权机构授权给 Internet 的各种组织。当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机和其他设备,并管理分配的域中主机名与 IP 地址的映射信息。

5.1.2  区(Zone)

区是DNS 名称空间的一部分,其包含了一组存储在 DNS 服务器上的资源记录。

使用区的概念,DNS 服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器。

5.1.3  主域名服务器与辅助域名服务器

当本区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与区主控服务器通信,查看区数据是否改变。如果改变了,它就启动一次数据更新传输。

每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称。

辅助服务器的优点:

容错能力

配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主服务器和区的辅助服务器安装在不同子网上,这样如果到一个子网的连接中断,DNS 客户机还能直接查询另一个子网上的名称服务器。

减少广域链路的通信量

如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS 查询。

减轻主服务器的负载

辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。

5.1.4  DNS 相关概念

(1) DNS 服务器

运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在。

(2)DNS 缓存

DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。

(3) DNS查询方式: 递归查询和迭代查询

一个DNS查询过程,通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com这个域名,但实际应用中,通常这个过程是非常迅速的,如图 5-2 所示。

图 5-2 DNS查询过程示意图

<1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。

<2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。

<3> 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。

<4> 本地服务器再向返回的域名服务器发送请求。

<5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,否则通知客户机下级的域名服务器的地址。

<6> 本地域名服务器将查询请求发送给返回的DNS 服务器。

<7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应。

<8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。

5.1.5  两种查询方式

(1) 递归查询

递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

(2)迭代查询

DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。

5.1.6  正向解析与反向解析

正向解析:

正向解析是指域名到IP 地址的解析过程,如图 5-3所示。

图 5-3 正向解析域名

反向解析:

反向解析是从IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证,如图 5-4 所示。

http://dns.aizhan.com/

图 5-4 反向解析域名

5.1.7  DNS资源记录

1. SOA 资源记录

每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录。

SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。

2. NS 资源记录

NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。

3. A 资源记录

地址(A)资源记录把FQDN 映射到IP 地址。 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。

4. PTR 资源记录

相对于A 资源记录,指针(PTR)记录把IP地址映射到FQDN。 用于反向查询,通过IP地址,找到域名。

5. CNAME 资源记录

别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。

例:ping百度时,解析到了百度的别名服务器。百度cname=www.a.shifen.com的别名,如图 5-5 所示。

图 5-5 FQDN别名

6. MX 资源记录

邮件交换(MX)资源记录,为DNS 域名指定邮件交换服务器,邮件交换服务器是为DNS 域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。

DNS的模式: C/S 模式

NDS监听的端口号:

[root@xuegod63 ~]# vim /etc/services  #查看services文件。

端口:

tcp/53   udp/53    #用于客户端查询

tcp/953 udp/953   #用于DNS主从同步

5.2  DNS服务器安装及相关配置文件

5.2.1  安装DNS

BIND 简介:

BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统),BIND 主要有三个版本:BIND4、BIND8、BIND9。

BIND8版本:融合了许多提高效率、稳定性和安全性的技术,而BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等。

安装程序:

[root@xuegod63 ~]# yum –y install bind bind-chroot bind-utils

bind-9.9.4-50.el7.x86_64      #该包为DNS 服务的主程序包。

bind-chroot-9.9.4-50.el7.x86_64     #提高安全性。

#bind-chroot是bind的一个功能,使bind可以在一个chroot 的模式下运行,也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已,这样做的目的是为了提高安全性,因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。

bind-utils-9.9.4-50.el7.x86_64.rpm    #该包为客户端工具,系统默认已经安装的了,它用于搜索域名指令。

5.2.2  DNS服务器相关配置文件

[root@xuegod63 ~]# ls /etc/named.conf

/etc/named.conf

named.conf 是BIND 的核心配置文件,它包含了BIND 的基本配置,但其并不包括区域数据。

/var/named/ 目录为DNS数据库文件存放目录,每一个域文件都放在这里

5.2.3  启动服务

[root@xuegod63 ~]# systemctl start named#启动DNS服务。

[root@xuegod63 ~]# systemctl enable named#设置为开机自动启动。

[root@xuegod63 Packages]# netstat -antup | grep 53#查看53号端口是否监听。

tcp      0      0 127.0.0.1:53           0.0.0.0:*      LISTEN        11135/named         

tcp      0      0 ::1:53              :::*           LISTEN       11135/named         

udp      0     0 127.0.0.1:53       0.0.0.0:*                11135/named         

5.2.4  服务的使用方法

在客户端上配置好DNS服务器地址。

[root@xuegod64 ~]# vim /etc/resolv.conf #编辑resolv.conf文件,添加DNS,此文件的生效范围是全局的,即是所有网卡的可以有效。

# Generated by NetworkManager

nameserver 202.106.46.151

修改网卡配置文件添加DNS,此方式添加的DNS仅生效当前网卡。

[root@xuegod64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 

DNS1=202.106.46.151

5.2.5  配置文件详解

配置DNS服务器解析:xuegod.cn

[root@xuegod63 ~]# cp /etc/named.conf  /etc/named.conf.bak  #备份DNS原有的配置文件,便于后期恢复。

[root@xuegod63 named]# vim /etc/named.conf  #编辑DNS配置。

DNS配置中,整体分3段,如图 5-6 所示。

options:对全局生效。

zone:针对某个区域生效。

图 5-6 DNS配置

重点讲解type参数,如图 5-7 所示。

图 5-7 file参数

type 字段指定区域的类型,对于区域的管理至关重要,一共分为六种:

Master:主DNS 服务器:拥有区域数据文件,并对此区域提供管理数据

Slave:辅助DNS 服务器:拥有主DNS 服务器的区域数据文件的副本,辅助DNS 服务器会从主DNS服务器同步所有区域数据。

Stub:stub 区域和slave 类似,但其只复制主DNS 服务器上的NS 记录而不像辅助DNS 服务器会复制所有区域数据。

Forward:一个forward zone 是每个域的配置转发的主要部分。一个zone 语句中的type forward可以包括一个forward 和/或forwarders 子句,它会在区域名称给定的域中查询。如果没有forwarders 语句或者forwarders 是空表,那么这个域就不会有转发,消除了options 语句中有关转发的配置。

Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。

5.3  实战:为公司内网搭建一个DNS服务器

5.3.1  配置正向解析区域

修改配置文件,授权DNS服务器管理xuegod.cn 区域,并把该区域的区域文件命名为xuegod.cn

[root@xuegod63 ~]# vim /etc/named.conf#编辑DNS配置文件,修改如下配置文件区域的内容,其他区域不需要做修改,保持默认。

options {

        listen-on port 53 { any; };  #把原来的127.0.0.1改为any。

        listen-on-v6 port 53 { any; };  #把原来的::1,改为any。

        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     { any; };  #把原来的localhost,改为any。

        recursion yes;

        dnssec-enable yes;

        dnssec-validation yes;

        dnssec-lookaside auto;  #加入此项。

zone "xuegod.cn" IN {  #把原来的 . 改为xuegod.cn。

        type master;    #把原来的hint,改为master。

        file "xuegod.cn.zone";  #把原来的named.ca,改为xuegod.cn.zone。

};

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

创建zone文件

[root@xuegod63 ~]# cd /var/named  #切换工作目录至/var/named目录下。

[root@xuegod63 named]# cp -a named.localhost  xuegod.cn.zone  #复制named.localhost文件为xuegod.cn.zone文件,在复制过程中需要加-a选项,保持原有的权限。

[root@xuegod63 named]# vim xuegod.cn.zone  #编辑该文件中的内容,如图 5-8 所示。

图 5-8 xuegod.cn.zone文件

$TTL 1D

xuegod.cn. IN SOA dns.xuegod.cn.  root.xuegod.cn. (

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

xuegod.cn.       NS      dns.xuegod.cn.

dns.xuegod.cn.   A       192.168.1.63

www.xuegod.cn.    A       192.168.1.63

www1.xeugod.cn.   CNAMEwww.xuegod.cn.

配置文件参数说明:

$TTL 1D:设置有效地址解析记录的默认缓存时间,默认为1天也就是1D。

xuegod.cn.   IN SOA dns. xuegod.cn. root. xuegod.cn.

#原来的@表示当前的域xuegod.cn.,为方便大家记忆,在此直接写成xuegod.cn.

#设置SOA记录为:dns.xuegod.cn.  

#在此配置文件中写域名时,都把根 . 也需要写上。

#域管理邮箱root.xuegod.cn. 由于@有其他含义,所以用“.”代替@。

0 :更新序列号,用于标示数据库的变换,可以在10位以内,如果存在辅助DNS区域,建议每次更新完数据库,手动加1。

1D :刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天。

1H :重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为1小时。

1W :到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周。

3H :设置无效地址解析记录(该数据库中不存在的地址)默认缓存时间。设置无效记录,最少缓存时间为3小时。

NS @ :域名服务器记录,用于设置当前域的DNS服务器的域名地址,

A 127.0.0.1: 设置域名服务器的A记录,地址为ipv4的地址127.0.0.1,可以设置成192.168.100.102

AAAA ::1:设置域名服务器的A记录,地址为ipv6的地址。

资源记录参数详解:

CNAME 资源记录

别名(CNAME)资源记录用于为某个主机指定一个别名

CNAME 资源记录语法格式:

别名 CNAME 主机名

www1.xuegod.cn.  CNAMEwww.xuegod.cn.

MX 资源记录

MX(邮件交换器)资源记录提供邮件传递信息。该记录会指定区域内的邮件服务器名称。

MX 资源记录语法格式:

mail  A 192.168.1.63

 MX 192.168.1.63

PTR 资源记录

指针(PTR)资源记录。该记录与A 记录相反,用于查询IP 地址与主机名的对应关系。

5.3.2  根区域设置及对应区域文件

根区域是一个较为特殊的区域,记录列出了全球根域名服务器的信息,域名通常用“.”表示,如表 5-1 所示。

表 5-1 根区域设置及对应区域文件

重启DNS服务器:

[root@xuegod63 named]# systemctl restart named

修改DNS地址:

[root@xuegod64 ~]# vim /etc/resolv.conf

nameserver 192.168.1.63  #DNS修改为xuegod63主机IP。

[root@xuegod64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  #配置网卡。

DEVICE="ens33"

HWADDR="00:0C:29:A7:3D:8D"

NM_CONTROLLED="yes"

BOOTPROTO=static

ONBOOT="yes"

IPADDR=192.168.1.64

NETMASK=255.255.255.0

[root@xuegod64 ~]# systemctl restart network  #重启动网络服务。

测试:

[[root@xuegod63 ~]# pingwww.xuegod.cn#ping 域名测试。

PING www.xuegod.cn (192.168.1.63) 56(84) bytes of data.

64 bytes from xuegod63.cn (192.168.1.63): icmp_seq=1 ttl=64 time=0.196 ms

64 bytes from xuegod63.cn (192.168.1.63): icmp_seq=2 ttl=64 time=0.160 ms

5.4  实战:DNS递归查询和搭建DNS转发服务器

5.4.1  使用DNS支持递归查询

[root@xuegod63 etc]# vim /etc/named.conf  #修改DNS配置文件,修改如下内容。

options {

        listen-on port 53 { any ; };  #把原来的127.0.0.1改为any。

        listen-on-v6 port 53 { any; };  #把原来的::1,改为any。

        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     { any; };  #把原来的localhost,改为any。

        recursion yes;      #默认是支持递归查询。

        #dnssec-enable yes;   

        #dnssec-validation yes;

        #dnssec-lookaside auto;

只需要把以上三条内容注释了,其它内容不用改,这样客户端才能通过这个DNS进行递归查询,把dns加密通讯功能关闭,才可以和根服务器时行迭代查询。

重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

在xuegod64主机上进行测试:

[root@localhost network-scripts]# ping www.baidu.com

PING www.a.shifen.com (61.135.169.105) 56(84) bytes of data.

64 bytes from 61.135.169.105: icmp_seq=1 ttl=55 time=318 ms

64 bytes from 61.135.169.105: icmp_seq=3 ttl=55 time=147 ms

5.4.2  搭建DNS转发服务器

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

options {

        listen-on port 53 { any; };  #把原来的127.0.0.1改为any。

        listen-on-v6 port 53 { any; };  #把原来的::1,改为any。

        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     { any; };  #把原来的localhost,改为any。

        recursion yes;      #允许递归查询

        #dnssec-enable yes;    #注释以下三行。

        #dnssec-validation yes;

        #dnssec-lookaside auto;

zone "xuegod.cn" IN {

#       type master;  #注释此项

        type forward;  #添加此项,类型为转发。

#       file "xuegod.cn.zone"; #注释此项

forward  only ;     #仅执行转发操作,only:仅转发,first:先查找本地zone,再转发。

forwarders  { 8.8.8.8; };     #指定转发查询请求的DNS服务器列表。

};

重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

在xuegod64主机上进行测试:

[root@localhost network-scripts]# ping www.baidu.com

PING www.a.shifen.com (61.135.169.105) 56(84) bytes of data.

64 bytes from 61.135.169.105: icmp_seq=1 ttl=55 time=318 ms

64 bytes from 61.135.169.105: icmp_seq=3 ttl=55 time=147 ms

5.5  实战:搭建DNS主从服务器

5.5.1  搭建DNS主从服务器

1. 搭建一个主DNS服务器A,配置内容如下

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

options {

        listen-on port 53 { any; };  #把原来的127.0.0.1改为any。

        listen-on-v6 port 53 { any; };  #把原来的::1,改为any。

        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     { any; };  #把原来的localhost,改为any。

        recursion yes;

        #dnssec-enable yes;

        #dnssec-validation yes;

        #dnssec-lookaside auto;

zone "xuegod.cn" IN {

        type master;      #指定类型为master。

        file "xuegod.cn.zone";    #指定为xuegod.cn.zone。

        allow-transfer { 192.168.1.0/24; };  #指定允许哪个网段的从DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有。

};

include "/etc/named.rfc1912.zones";

重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

2. 从DNS服务器的配置

要求:主从系统时间一定要保持一致。

安装程序:

[root@xuegod64 ~]# yum install bind bind-chroot bind-utils -y

[root@xuegod64 ~]# systemctl start named

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

options {

        listen-on port 53 { any; };

        listen-on-v6 port 53 { any; };

        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     { any; };

        recursion yes;

        #dnssec-enable yes;

        #dnssec-validation yes;

   

zone "xuegod.cn" IN {

        type slave;

        file "slaves/xuegod.cn.zone.file";

        masters { 192.168.1.63; };

};

include "/etc/named.rfc1912.zones";

注:这样从DNS服务器就可以从主DNS服务器上获取DNS解析记录信息了。写时注意slave slaves  master  单词的书写,有的加s有的不加

重启从DNS服务器会在:/var/named/slaves文件夹下自动创建一个文件xuegod.cn.zone.file 这个文件是从DNS服务器从主DNS服务器上获取的数据

这样随便一个DNS就可以获取主DNS服务器的解析记录,不安全,文章的后面会讲如何进行主从认证。

注:主DNS记录中应该有两NS记录,一条是主DNS的NS记录,一条是从DNS服务器的域名记录。

测试:

[root@xuegod64 etc]# systemctl restart named  #重启DNS服务。

[root@xuegod64 etc]# ls /var/named/slaves/   #看到这个文件,说明成功了

xuegod.cn.zone.file

5.5.2  zone文件中的其它记录信息。 通过DNS做负载均衡

编辑主DNS服务器上/var/name/ xuegod.cn.zone的配置文件:

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

[root@xuegod63 named]# vim xuegod.cn.zone

$TTL 1D

xuegod.cn. IN SOA dns.xuegod.cn. root.xuegod.cn. (

1 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

xuegod.cn.  NS dns.xuegod.cn.

dns.xuegod.cn.  A   192.168.1.63

www.xuegod.cn. 1  A      192.168.1.63 #DNS做简单的负载均衡,1表示此记录在客户端保存1秒。

www.xuegod.cn. 1  A       192.168.1.64

www.xuegod.cn. 1  A       192.168.1.1

#DNS做简单的负载均衡,1表示此记录在客户端保存1秒。这样客户访问www.xuegod.cn时,可以解析成192.168.1.63或192.168.1.64或192.168.1.1 从而实现负载均衡

www1.xeugod.cn.  CNAME   www.xuegod.cn.

xuegod.cn.        MX  10  mail.xuegod.cn.     #添加邮件记录

mail.xuegod.cn.    A    192.168.1.63

bbs.xuegod.cn.    CNAME  www.xuegod.cn.

5.5.3 DNS主从密钥认证

主服务器重启时,会主动给从服务器发送信息,让从服务器更新自己的记录,通讯端口采用TCP 的53端口。

注:TSIG (主从DNS的时间必须一样)

1. 同步时间

[root@xuegod63 ~]# yum -y install ntp  #安装ntp工具。

[root@xuegod63 named]# vim /etc/ntp.conf    #查看ntp服务器。

[root@xuegod63 named]# ntpdate 0.rhel.pool.ntp.org   #同步时间。

2. 生成密钥,进行主从认证(在主DNS服务器上操作)

[root@xuegod63 chroot]# rpm -qf `which dnssec-keygen `

bind-9.9.4-50.el7.x86_64

dnssec-keygen命令使用格式:dnssec-keygen -a hmac-md5 -b 128 -n HOST 名字

[root@xuegod63 etc]# cd /var/named/chroot/  #切换工作目录。

[root@xuegod63 chroot]# dnssec-keygen -a hmac-md5 -b 128 -n HOST abc  #生成一对对称钥匙

选项说明:

 -a hmac-md5  #-a选项指定加密算法,采用hmac-md5加密算法。

-b 128  #-b选项指定密钥长度,生成的密钥长度为128位。

-n     #密钥类型。我们选择主机类型:HOST 。

-n <nametype>: ZONE | HOST | ENTITY | USER | OTHER

abc    #为生成密钥的名字

在生成的过程中需要的时间比较长,因为生成密钥需要一些随机事件,因此可以通过移动鼠标或执行find / 来产生一些随机事件,整个过程等待大约2分钟。

[root@xuegod63 chroot]# find /    

3. 查看生成的密钥对

[root@xuegod63 chroot]# ls

dev  etc  Kabc.+157+36589.key  Kabc.+157+36589.private  usr  var

 

[root@xuegod63 chroot]# cat Kabc.+157+54214.private    

Private-key-format: v1.2

Algorithm: 157 (HMAC_MD5)

Key: nVk1s0B6XVB4BFfkr+vdfQ==   #这是密钥

[root@xuegod63 chroot]# cat Kabc.+157+54214.key

abc. IN KEY 512 3 157 nVk1s0B6XVB4BFfkr+vdfQ==

4. 修改主DNS配置

[root@xuegod63 chroot]# vim /etc/named.conf

options {

listen-on port 53 { any; };

listen-on-v6 port 53 { any; };

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     { any; };

recursion yes;

dnssec-enable yes;     #取原来注释

dnssec-validation yes;    #取原来注释

dnssec-lookaside auto;  #取原来注释

key abckey {           #先定义密钥的名字

        algorithm hmac-md5;

        secret "nVk1s0B6XVB4BFfkr+vdfQ==";

 };

zone "xuegod.cn." IN {

type master;

file "xuegod.cn.zone";

allow-transfer { key abckey; };       #采用密钥进行同步

};

include "/etc/named.rfc1912.zones";

5. 重启服务:

[root@xuegod63 chroot]# systemctl restart named

6. 从DNS 服务器:192.168.1.64

步骤:首先定义密钥 ---》而后采用密钥进行同步。

[root@xuegod64 chroot]# vim /etc/named.conf

options {

listen-on port 53 { any; };

listen-on-v6 port 53 { any; };

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     { any; };

recursion yes;

dnssec-enable yes;

dnssec-validation yes;

dnssec-lookaside auto;

key abckey {      #先定义密钥名

        algorithm hmac-md5;

        secret "nVk1s0B6XVB4BFfkr+vdfQ==";

        

};

zone "xuegod.cn." IN {

type slave;

file "slaves/xuegod.cn.zone.file";

masters { 192.168.1.63 key abckey; };    #采用密钥进行同步。

};

include "/etc/named.rfc1912.zones";

7. 重启服务进行测试:

[root@xuegod63 chroot]# cd

[root@xuegod63 ~]# systemctl restart named

8. 从DNS服务器上测试:

[root@xuegod64 ~]# rm -rf /var/named/slaves/xuegod.cn.zone.file

[root@xuegod64 ~]# systemctl restart named

[root@xuegod64 ~]# ls /var/named/slaves/

xuegod.cn.zone.file

5.5.4  测试工具

nslookup 测试域名解析

非交互式模式

语法: nslookup 域名或IP地址

例:

[root@xuegod63 chroot]# nslookup www.xuegod.cn

Server:  114.114.114.114

Address: 114.114.114.114#53

Non-authoritative answer:

Name: www.xuegod.cn

Address: 101.200.128.35

交互模式

[root@xuegod63 ~]# nslookup  #直接输入命令,并回车,而后输入需要解析的域名

> www.g.cn

Server:  114.114.114.114

Address: 114.114.114.114#53

Non-authoritative answer:

Name: www.g.cn

Address: 203.208.40.95

Name: www.g.cn

Address: 203.208.40.79

Name: www.g.cn

Address: 203.208.40.88

Name: www.g.cn

Address: 203.208.40.87

>

5.5.5  命令dig

Linux下使用dig命令来查询域名信息,当然也可以使用nslookup,但dig比nslookup更方便更强大一些。

安装:

[root@xuegod63 ~]# rpm -qf `which dig`

bind-utils-9.7.3-8.P3.el6.x86_64

例:使用114.114.114.114 DNS服务器解析www.xuegod.cn

[root@xuegod63 ~]# dig @114.114.114.114 www.xuegod.cn

; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> @114.114.114.114 www.suegod.cn

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 58632

;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:

;www.suegod.cn.  IN A

;; AUTHORITY SECTION:

cn.  3600 IN SOA a.dns.cn. root.cnnic.cn. 2023818223 7200 3600 2419200 21600

;; Query time: 40 msec

;; SERVER: 114.114.114.114#53(114.114.114.114)

;; WHEN: 三 10月 17 19:40:01 CST 2018

;; MSG SIZE  rcvd: 84

更多学习资料请移步至公众号【学神来啦】

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容