DNS服务实现主从之Bind

前言DNS理论基础

DNS域名结构图


DNS,或者说域名系统,通常是学习如何配置网站和服务器的一个非常困难的部分。了解 DNS 的工作原理将有助于诊断网络访问的问题,也有助于理解 DNS 系统背后的工作原理。

域名系统(Domain Name System)

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53[1]。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“XXX.中国”、“XXX.美国”的域名可以在地址栏直接输入并访问,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等。

记录类型

记录(Record)
在区域文件中,保存着记录。其中最简单的记录形式是,是资源和名称之间的单独映射。它们可以将域名映射到 IP 地址,定义域名的名称服务器,定义域名的邮件服务器等。
DNS系统中,常见的资源记录类型有:
主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
别名记录(CNAME记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
IPv6主机记录(AAAA记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
服务位置记录(SRV记录): RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
域名服务器记录(NS记录) :用来指定该域名由哪个DNS服务器来进行解析。 您注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以下的形式出现: ns1.domain.com、ns2.domain.com等。 简单的说,NS记录是指定由哪个DNS服务器解析你的域名。
NAPTR记录:RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询

域名(Domain Name)

域名是我们习惯于与互联网资源关联的人性化名称。例如,”baidu.com” 是一个域名。有些人会说 “baidu” 部分是域名部分,但我们通常可以将组合形式称为域名。

网址 “baidu.com” 与 baidu Inc. 拥有的服务器相关联。当我们在浏览器中键入 “baidu.com” 时,域名系统允许我们访问其相关联的 Google 服务器。

技术实现

DNS通过允许一个名称服务器把它的一部分名称服务(众所周知的zone)“委托”给子服务器而实现了一种层次结构的名称空间。此外,DNS还提供了一些额外的信息,例如系统别名、联系信息以及哪一个主机正在充当系统组或域的邮件枢纽。
任何一个使用IP的计算机网络可以使用DNS来实现它自己的私有名称系统。尽管如此,当提到在公共的Internet DNS系统上实现的域名时,术语“域名”是最常使用的。
这是基于984个全球范围的“根域名服务器”(分成13组,分别编号为A至M)[2]。从这984个根服务器开始,余下的Internet DNS名字空间被委托给其他的DNS服务器,这些服务器提供DNS名称空间中的特定部分。

顶级域名(Top Level Domain)

顶级域名,或者说 TLD,是域名的最基本部分。顶级域名是右侧的最远部分(由点分隔)。常见的顶级域名是 com、net、org、gov、edu 和 io。
顶级域名在域名术语层次结构的最上层。由 ICANN(互联网名称和号码分配公司)对顶级域名进行管理控制。然后,通过域名注册商来分发 TLD 下面的域名。

主机(Host)

你可以在一个域名下面定义其它主机。比如说,通过 api 主机(api.example.com) 允许 API 访问,通过 ftp 主机或者 files 主机(ftp.example.com 或者 files.example.com)允许 ftp 访问。主机名可以任意指定,只要它们在该域名下是唯一的。

子域名(Sub Domain Name)

一个和主机相关的主题就是子域名。
DNS 有层次结构,TLD 下面可以有多个域名。例如,com 下面有 google.com 和 ubuntu.com。”子域名” 是指作为较高层级域名的一部分。所以说,ubuntu.com 可以说是 com 的子域名,但是通常这被称为域名,或者 “ubuntu”部分是 SLD(Second Level Domain),所以这是一个二级域名。
同样,每个域名可以控制它下面的子域名。这通常就是我们所指的子域名。例如,你可以把 “www.history.school.edu” 作为你学校的历史部门的域名。 “history” 部分是一个子域名。
主机名和子域名之间的区别是主机定义计算机或资源,而子域名扩展父域。它是一种把域名本身细分的方法。
无论谈论子域名还是主机,你都可以开始看到域名的最左边部分是最具体的。这也是 DNS 的工作原理:从左到右阅读时,从最具体到最不具体。

完全限定域名(Fully Qualified Domain Name)

完全限定的域名,通常称为 FQDN,也就是我们所说的绝对域名。DNS 系统中的域名可以是相对的,所以可能是模糊的。FQDN 是一个绝对名称,表示了它相对于域名系统中绝对根目录的位置。

这表明它表示的每个域名都包括 TLD 部分。正确的 FQDN 以点结束,表示 DNS 层次结构的根。“mail.google.com.” 就是一个标准的 FQDN 的例子。有时候,一些软件使用的 FQDN 不需要末尾的点,但是要符合 ICANN 标准的话一定要加上末尾的点。

名称服务器(Name Server)

名称服务器(NS)是一种将域名翻译成 IP 地址的计算机。这些服务器完成了 DNS 系统中的大部分工作。由于域名翻译的数量对于任何一台服务器来说都太多了,因此每台服务器可以将请求转发给其他名称服务器或把它们负责的子域名的子集委派给其他名称服务器。
名称服务器可以是 “权威的”,表示它们自己可以提供所负责的域名的查询结果。否则,它们可能会转发到其他服务器,或者提供其他名称服务器数据的缓存副本。

区域文件(Zone Files)

区域文件是一个简单的文本文件,包含域名和 IP 地址之间的映射。这是当用户请求某个域名时,DNS 系统最终找出 IP 关联记录的地方。
区域文件放置在名称服务器中,通常定义了特定域名下可用的资源,或者可以去获取该信息的位置。
资源记录
资源记录定义的格式:
语法:name [TTL] IN rr_type value
name相当于 taobaocom 中间三项 过期时间,IN 类型很多种,如soa(权威其实授权记录)是正向解析 还是反向解析 value :200.10.100.10

软件

DNS系统是由各式各样的DNS软件所驱动的,例如:
BIND(Berkeley Internet Name Domain),使用最广的DNS软件
DJBDNS(Dan J Bernstein's DNS implementation)
MaraDNS
Name Server Daemon(Name Server Daemon)
PowerDNS
Dnsmasq

域名解析

举一个例子,zh.wikipedia.org 作为一个域名就和IP地址198.35.26.96 相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打198.35.26.96 的名字zh.wikipedia.org 来代替电话号码(IP地址)。DNS在我们直接调用网站的名字以后就会将像zh.wikipedia.org 一样便于人类使用的名字转化成像198.35.26.96 一样便于机器识别的IP地址。
DNS查询有两种方式:递归和迭代。DNS客户端设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。
以查询 zh.wikipedia.org 为例:
客户端发送查询报文"query zh.wikipedia.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
如果记录老化或不存在,则:
DNS服务器向根域名服务器发送查询报文"query zh.wikipedia.org",根域名服务器返回顶级域 .org 的权威域名服务器地址。
DNS服务器向 .org 域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到二级域 .wikipedia.org 的权威域名服务器地址。
DNS服务器向 .wikipedia.org 域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到主机 zh 的A记录,存入自身缓存并返回给客户端。

WHOIS(域名数据库查询)

一个域名的所有者可以通过查询WHOIS数据库[3]而被找到;对于大多数根域名服务器,基本的WHOIS由ICANN维护,而WHOIS的细节则由控制那个域的域注册机构维护。
对于240多个国家代码顶级域名(ccTLDs),通常由该域名权威注册机构负责维护WHOIS。例如中国互联网络信息中心(China Internet Network Information Center)负责.CN域名的WHOIS维护,香港互联网注册管理有限公司(Hong Kong Internet Registration Corporation Limited)负责.HK域名的WHOIS维护,台湾网络信息中心(Taiwan Network Information Center)负责.TW域名的WHOIS维护。
好了 ,理论介绍完毕后我们开始做实验,实验采用的软件主要是bind

1、只缓存服务实现

1.准备环境,并启动服务
63 yum install bind -y
64 rpm -ql bind
65 ss -ntl
66 systemctl start named
67 ss -ntl
2.修改网卡配置文件,重启服务



我们可以看到 此时 本机已经成为dns服务器,提供服务

2.准备另外一台机器 6,DNS只向156

测试发现链接不上

原因是 dns服务只监听在本机的ip,不对外服务

所以我们需要把服务配置文件改下
vim /etc/named.conf


再次测试 还是不行

再次修改配置文件,把访问权限放开

因为不能连接外网
用host测试

所以 dns只负责解析,至于地址通不通,跟路由有关系,随便给个网关再次测试


到此 只缓存dNS实现
测试把dns服务网线掐了 后,继续用6测试

2、搭建主DNS服务器。

1.进入数据库记录目录
cd /var/named
2. 修改配置模板
cp -a named.localhost jiapengchu.com.zone
3.添加数据库记录
vim jiapengchu.com.zone
原始记录

添加两条A记录






4.把数据库记录添加到配置文件中

也可以专门存放区域得地方

测试不成功www 发现写错了 配置

5检查语法上否有问题
named-checkzone jiapengchu.com /var/named/jiapengchu.com.zone
named-checkconf

6.重新加载服务
rndc reload
测试

3、反向解析。

应用场景 垃圾邮件得
对方收到邮件后,对收到邮件得服务器ip 进行反向解析,如果解析出来得名字 和预期一致,则认为上合法得 ,如果 不符合预期,就认为上垃圾邮件

首先了解下 解析原理

1.建立反向区域数据库

2.建立对应得 区域文件

3.重新加载服务
rndc reload
4.测试
dig -t ptr 27.111.168.192.in-addr.arpa @192.168.111.156

实现从服务器

1.找一台机器 129做从服务器
2.装包
yum install bind -y
3.修改主配置文件
vim /etc/named.cof

4.创建从节点得zone区域
vim /etc/named.rfc1912.zones

5.重启服务
systemctl start named
启动服务后自动生成文件 不需要手工维护

通过客户端6向从129发起dns解析

6.主从同步演练

  1. 在主服务器中加如邮箱解析

    主节点能查到

从节点查不到,说明没有同步

改主节点得版本号 和 把从服务器加入主中


再次测试 ,已经主动推送成功

继续添加


测试成功

安全加固
主服务器设置
主设置
vim /etc/namd.conf

从设置


dig -t axfr jiapengchu.com @192.168.111.129 测试成功

posted on 2020-09-19 14:18  jiapengchu  阅读(595)  评论(0编辑  收藏  举报

导航