linux dns 服务器配置方法(Linux如何搭建DNS服务器)
linux dns 服务器配置方法(Linux如何搭建DNS服务器)全世界共有13台DNS根域服务器。在DNS中,域名包括根域、顶级域、二级域和主机名。如下图2.主机名和域名的区别:主机名是内网的名字;域名是外网的名字。主机名和域名其实是两个完全可以不同的名字,但是有很多软件(如邮件系统postfix)会默认认为它们一致。
Linux如何搭建DNS服务器
一、DNS服务简介
1.DNS(Domain Name System)域名系统
在Internet中使用IP地址来确定计算机的地址,这种以数字表示的IP地址不容易记忆。为了便于对网络地址的管理和分配,人们采用了域名系统,引入了域名的概念。通过为每台主机建立IP地址与域名之间的映射关系,用户可以避开难记的IP地址,而使用域名来唯一标识网络中的计算机。域名和IP地址之间的关系,就像是某人的姓名和身份证号码之间的关系,显然,记住名字比记住身份证号码容易的多。
2.主机名和域名的区别:
主机名是内网的名字;域名是外网的名字。
主机名和域名其实是两个完全可以不同的名字,但是有很多软件(如邮件系统postfix)会默认认为它们一致。
在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过程
从查询方式分类
- 递归查询:
客户端得到结果只能是成功或失败
- 迭代查询:
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软件,如下图:
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.全局配置部分
如上图所示:
- 设置 DNS 服务器的全局参数
- 包括监听地址/端口、数据文件的默认位置等
- 使用 options { …… }; 的配置段
b.区域配置部分
如上图所示:
- 设置本服务器提供域名解析的特定 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 记录
如上图所示:
- "@"表示当前的DNS区域名,相当于"benet.com."
- $TTL(Time To Live,生存时间)记录
- SOA(Start Of Authority,授权信息开始)记录
- 分号";" 开始的部分表示注释信息
b.域名解析记录
正向解析记录:(如下图)
如上图所示:
- NS 域名服务器(Name Server):记录当前区域的DNS服务器的主机地址
- MX 邮件交换(Mail Exchange):记录当前区域的邮件服务器的主机地址,数字10表示优先级。
- A 地址(Address):记录正向解析条目,只用在正向解析区域中
- CNAME 别名(Canonical Name):记录某一个正向解析条目的其他名称
注:其中,NS、MX记录行首的"@"符号可以省略(默认继承SOA记录行首的@信息),但是必须保留一个空格或Tab制表位。
反向解析记录:(如下图)
如上图所示:
- 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 工具
b.named-checkzone 工具
三、示例
1.构建缓存域名服务器
案例环境(如下图)
缓存域名服务器的 IP 地址为 192.168.1.5
局域网内的 PC 机将首选 DNS 服务器设为 192.168.1.5
缓存域名服务器能够访问 Internet 中的其他 DNS 服务器
负责处理局域网 PC 机的 DNS 解析请求,并缓存查询结果
基本步骤:(如下图)
1)建立主配置文件 named.conf
有时候为了提高解析效率,也可以不向根区域查询,而是将来自客户端的查询请求转发给国内电信运营商的DNS服务器(如北京的202.106.0.20、202.106.148.1),缓存服务器收到返回的查询结果后再转给客户端。只要去掉"zone "." IN {....}" 的设置,并在全局配置中正确设置forwarders(转发)参数即可实现该功能。如下图
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地址信息。(如下图)
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"
基本步骤:(如下图)
1)确认本机网络地址、主机映射、DNS 服务器地址
为了提高域名解析效率,建议将两个DNS服务器的地址映射直接写入到/etc/hosts文件中,并在/etc/resolv.conf文件中指定两个DNS服务器的地址。(如下图)
2)建立主配置文件 named.conf(如下图)
3)建立正、反向区域数据文件
根据named.conf中的zone区域设置,分别建立正向区域数据文件benet.com.zone,反向区域数据文件173.16.16.arpa。配置文件可以参考区域数据文件/var/named/named.localhost。(如下图)
4)启动或者重新加载 named 服务程序
如:systemctl reload named
5)验证主域名服务器
验证正向解析:nslookup study.benet.com
验证泛域名解析:nslookup xxyyzz.benet.com
验证反向解析: nslookup 173.16.16.2
3.构建从域名服务器
基本步骤:(如下图)
建立主配置文件 named.conf(如下图)
验证从服务器时,只需要将客户端的首选DNS服务器地址设为从域名服务器的IP地址,使用nslookup命令进行正常测试即可。
###### 本节完 ######