客服热线:00000000000

Linux如何搭建DNS服务器

后台-系统设置-扩展变量-手机广告位-内容广告位一

Linux如何搭建DNS服务器

一、DNS服务简介

1.DNS(Domain Name System)域名系统

在Internet中使用IP地址来确定计算机的地址,这种以数字表示的IP地址不容易记忆。为了便于对网络地址的管理和分配,人们采用了域名系统,引入了域名的概念。通过为每台主机建立IP地址与域名之间的映射关系,用户可以避开难记的IP地址,而使用域名来唯一标识网络中的计算机。域名和IP地址之间的关系,就像是某人的姓名和身份证号码之间的关系,显然,记住名字比记住身份证号码容易的多。

2.主机名和域名的区别:

主机名是内网的名字;域名是外网的名字。

主机名和域名其实是两个完全可以不同的名字,但是有很多软件(如邮件系统postfix)会默认认为它们一致。

在DNS中,域名包括根域、顶级域、二级域和主机名。如下图

Linux如何搭建DNS服务器

全世界共有13台DNS根域服务器。

顶级域:由Internet名称授权机构管理,有两种常见的类型。如下:

组织域:

.com(商业) 、 .org (组织) 、 .edu(教育) 、 .gov (政府) 、 .net(通讯) 、 .mil(军事) 、 .info(信息)

国家或地区顶级域:

Cn(中国) 、 hk(中国香港) 、 uk(英国) 等

FQDN=主机名.DNS后缀(FQDN,Fully Qualified Domain Name,完全合格的域名/全称域名)

3.域名解析过程

查询 www.benet.com过程

Linux如何搭建DNS服务器

从查询方式分类

  • 递归查询:

客户端得到结果只能是成功或失败

  • 迭代查询:

DNS服务器如有客户机请求数据则返回正确地址

DNS服务器没有请求数据则返回一个指针

从查询内容分类

  • 正向解析:根据主机名称(域名)查找对应的 IP 地址
  • 反向解析:根据 IP 地址查找对应的主机域名

二、Centos7搭建DNS服务器

接下来以著名的DNS服务器软件BIND(Berkeley Internet Name Domain,伯克利Internet名字域)为例,了解Linux中域名服务器的基本搭建过程。BIND是美国加利福尼亚大学伯克利分校开发的一个域名服务软件包,Linux使用这个软件包来提供域名服务,该软件实现了DNS协议。BIND的服务端软件是被称作named的守护进程。

1.了解一下

实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为"zone"(区域)。根据所管理的区域地址数据的来源不同,DNS系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下:

缓存域名服务器

  • 也称为 唯高速缓存服务器
  • 通过向其他域名服务器查询获得域名 -> IP 地址记录
  • 将域名查询结果缓存到本地,提高重复查询时的速度

主域名服务器

  • 特定 DNS 区域的官方服务器,具有唯一性
  • 负责维护该区域内所有域名 -> IP 地址的映射记录

从域名服务器

  • 也称为 辅助域名服务器
  • 其维护的 域名 -> IP 地址记录 来源于主域名服务器

2.BIND的安装和控制

BIND不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中。

1)安装bind软件,如下图:

Linux如何搭建DNS服务器

2)相关软件包

安装好后查看软件包:rpm -qa | grep "^bind"

bind-9.9.4-37.el7.x86_64.rpm:提供了域名服务的主要程序及相关文件

bind-chroot-9.9.4-37.el7.x86_64.rpm:为BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND的根目录),以提高安全性。

bind-libs-9.9.4-37.el7.x86_64.rpm:提供了bind、bind-utils需要使用的函数

bind-utils-9.9.4-37.el7.x86_64.rpm:提供了对DNS服务器的测试工具程序,如nslookup等

3)BIND服务控制

BIND软件包安装完毕以后,会自动增加一个名为named的系统服务,通过脚本文件/etc/init.d/named或systemctl、service(centos6以前)工具都可以控制DNS域名服务的运行。如:systemctl start named,启动named服务。

其他:

  • 主要执行程序:/usr/sbin/named
  • 服务脚本:/etc/init.d/named
  • 默认监听端口:53

3.BIND服务的配置文件

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

1)主配置文件

/etc/name.conf(安装的是bind-xxx软件包)

/var/named/chroot/etc/named.conf(安装的是bind-chroot-xxx软件包)

主配置文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号";"表示结束,以"#"号或"//"开始的部分表示注释文字(大段注释可以使用"/*......*/的格式")。

a.全局配置部分

Linux如何搭建DNS服务器

如上图所示:

  • 设置 DNS 服务器的全局参数
  • 包括监听地址/端口、数据文件的默认位置等
  • 使用 options { …… }; 的配置段

b.区域配置部分

Linux如何搭建DNS服务器

如上图所示:

  • 设置本服务器提供域名解析的特定 DNS 区域
  • 包括域名、服务器角色、数据文件名等
  • 使用 zone "区域名" IN { …… }; 的配置段

2)区域数据配置文件(保存 DNS 解析记录的数据文件)

/var/named/(安装的是bind-xxx软件包)

/var/named/chroot/var/named/(安装的是bind-chroot-xxx软件包)

每个区域数据文件对应一个DNS解析区域,文件名及内容由该域的管理员自行设置。(要与在全局配置中指定的文件名一样,不然会出错)

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

a.全局 TTL 配置项及 SOA 记录

Linux如何搭建DNS服务器

如上图所示:

  • "@"表示当前的DNS区域名,相当于"benet.com."
  • $TTL(Time To Live,生存时间)记录
  • SOA(Start Of Authority,授权信息开始)记录
  • 分号";" 开始的部分表示注释信息

b.域名解析记录

正向解析记录:(如下图)

Linux如何搭建DNS服务器

如上图所示:

  • NS 域名服务器(Name Server):记录当前区域的DNS服务器的主机地址
  • MX 邮件交换(Mail Exchange):记录当前区域的邮件服务器的主机地址,数字10表示优先级。
  • A 地址(Address):记录正向解析条目,只用在正向解析区域中
  • CNAME 别名(Canonical Name):记录某一个正向解析条目的其他名称

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

反向解析记录:(如下图)

Linux如何搭建DNS服务器

如上图所示:

  • PTR 指针(Point)记录,只用在反向解析区域中
  • 记录的第一列指定 IP 地址中的主机地址部分即可。如,上述中的"4 IN PTR mail.benet.com."表示IP地址为173.16.16.4的主机的域名时maiil.benet.com.。

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

3)对配置文件进行语法检查

a.named-checkconf 工具

Linux如何搭建DNS服务器

b.named-checkzone 工具

Linux如何搭建DNS服务器

三、示例

1.构建缓存域名服务器

案例环境(如下图)

缓存域名服务器的 IP 地址为 192.168.1.5

局域网内的 PC 机将首选 DNS 服务器设为 192.168.1.5

缓存域名服务器能够访问 Internet 中的其他 DNS 服务器

负责处理局域网 PC 机的 DNS 解析请求,并缓存查询结果

Linux如何搭建DNS服务器

基本步骤:(如下图)

Linux如何搭建DNS服务器

1)建立主配置文件 named.conf

Linux如何搭建DNS服务器

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

Linux如何搭建DNS服务器

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

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

如: grep -v "^;" /var/named/named.ca | grep -v ^$

3)启动named服务,并确定named服务的端口监听状态。若服务启动失败或发现没有正常监听UDP53端口,可以根据错误提示信息(或/var/log/messages文件中的日志记录)排除错误。

如:systemctl start named //启动named服务

netstat -anput | grep named //确认named服务的端口监听状态

4)验证缓存域名服务器

在客户机中将 DNS 服务器设为该缓存域名服务器

执行nslookup www.google.com命令对其进行解析,验证其是否能获得该域名对应的IP地址信息。(如下图)

Linux如何搭建DNS服务器

2.构建主域名服务器

案例环境(如下图)

主域名服务器:ns1.benet.com,173.16.16.5

从域名服务器:ns2.benet.com,173.16.16.6

两台服务器均能够提供 benet.com 区域的域名解析

主要解析记录

网站服务器"www.benet.com",IP地址为"173.16.16.1"

邮件服务器"mail.benet.com",IP地址为"173.16.16.1"

在线培训站点服务器"study.benet.com",IP地址为"173.16.16.2"

主域名服务器"ns1.benet.com",IP地址为"173.16.16.5"

从域名服务器"ns2.benet.com",IP地址为"173.16.16.6"

Linux如何搭建DNS服务器

基本步骤:(如下图)

Linux如何搭建DNS服务器

1)确认本机网络地址、主机映射、DNS 服务器地址

为了提高域名解析效率,建议将两个DNS服务器的地址映射直接写入到/etc/hosts文件中,并在/etc/resolv.conf文件中指定两个DNS服务器的地址。(如下图)

Linux如何搭建DNS服务器

2)建立主配置文件 named.conf(如下图)

Linux如何搭建DNS服务器

3)建立正、反向区域数据文件

根据named.conf中的zone区域设置,分别建立正向区域数据文件benet.com.zone,反向区域数据文件173.16.16.arpa。配置文件可以参考区域数据文件/var/named/named.localhost。(如下图)

Linux如何搭建DNS服务器

Linux如何搭建DNS服务器

4)启动或者重新加载 named 服务程序

如:systemctl reload named

5)验证主域名服务器

验证正向解析:nslookup study.benet.com

验证泛域名解析:nslookup xxyyzz.benet.com

验证反向解析: nslookup 173.16.16.2

3.构建从域名服务器

基本步骤:(如下图)

Linux如何搭建DNS服务器

建立主配置文件 named.conf(如下图)

Linux如何搭建DNS服务器

验证从服务器时,只需要将客户端的首选DNS服务器地址设为从域名服务器的IP地址,使用nslookup命令进行正常测试即可。

###### 本节完 ######

后台-系统设置-扩展变量-手机广告位-内容广告位二

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。