Linux中的DNS服务(二)

489 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

上篇文章介绍了域名系统、域名服务器分类、域名查询机制,这篇文章我们就来介绍怎么部署DNS服务器。

安装DNS

在Linux系统中,常用BIND软件包来配置DNS服务器。BIND支持各种Linux平台,同时也支持UNIX和windos平台。

BIND主要包含的软件包:

  • bind:主程序

  • bind-libs:提供库文件

  • bind-utils:DNS工具集合

  • bind-chroot:更改服务器根路径到DNS目录

apt-get install bind9 -y                # Debian系统下载安装BIND软件包
yum -y install bind bind-chroot	bind-utils bind-libs		# CentOS安装BIND包

BIND文件配置(CentOS)

主配置文件

主配置文件named.conf中只包含BIND的基本配置,不包含任何DNS的区域数据。DNS服务进程named启动时,该进程首先会读取主配置文件。主配置文件路径:

/etc/bind/named.conf.default-zones		# Debian系统
/etc/named.conf		# CentOS系统

主配置文件named.conf中内容主要分为以下三项:

  • options {...}”形式定义的全局配置信息
  • loggong {...}”形式定义的日志配置信息
  • zone {...}”形式定义的区域配置信息

named.conf文件还可以使用include引入其他文件。

区域配置文件

区域配置文件named.rfc1912.zones用于配置DNS服务域的相关信息,文件中有多个zone语句,该语句有两个主要选项:

  • type:设置域类型,有以下几种取值:
    • hint:本地解析,查询不到本地解析时可查询根域名服务器
    • master:定义权威域名服务器
    • slave:定义辅助域名服务器
    • forward:定义转发域名服务器
  • file:定义区域数据文件,这里定义的文件保存路径为主配置文件中option选项中定义的目录下。

typefile之外,zone语句常用的选项如下:

选项说明
allow-update允许哪些主机动态更新域数据信息
allow-trandfer哪些从服务器可以从主服务器下载数据文件
notify当域数据资料更新后是否主动通知其他域名服务器
masters定义主域名服务IP地址,仅当type取值为slave时此选项生效

BIND软件安装成功后,会自动生成保存了全球的根域名服务器的文件:

/var/named/named.ca

区域数据文件

区域数据文件保存位置由named.conf文件中option语句的directory选项指定,默认位置是/var/named/目录。

正向解析数据文件

/var/named/named.localhost
$TTL 1D
@ IN SOA @rname.invalid. (
	0 	; serial
	1D 	; refresh
	1H	; retry
	1W	; expire
	3H) ; minimum
NS	@
A	127.0.0.1
AAAAA	::1

该文件中使用“;”添加注释,文件包含以下几项内容:

  • TTL:生命周期
  • SOA记录:区域起始授权记录。SOA选项第一行中的第一个@表示域名,其值为named.conf文件中相应区域名称;第二个@表示主域名服务器的FQDN,之后的“rname.invalid.”表示管理员的邮箱,实际为“ranme@invalid@”,因为该文件中用@表示了FQDN,所以使用“.”代替@;SOA选项小括号中内容依次表示为区域数据库序列号、域名服务器刷新间隔、辅域名服务器重试间隔、辅域名服务器本地数据的过期间隔、TTL最小值。
  • NS记录:区域的授权服务器
  • A记录:主机IPv4地址
  • AAAA记录:主机IPv6地址

反向解析数据文件

/var/named/named.loopback
$TTL 1D
@ IN SOA @rname.invalid. (
	0 	; serial
	1D 	; refresh
	1H	; retry
	1W	; expire
	3H) ; minimum
NS	@
A	127.0.0.1
AAAAA	::1
PTR	localhost

反向解析数据文件与正向解析数据文件区别在于文件最后有一条PTR记录,用于记录IP地址到域名的映射。

部署主从DNS服务器

  • 主DNS服务器:域名数据存储、域名解析等
  • 从DNS服务器:可复制主DNS服务器数据,在主服务器故障时实现域名解析等工作

例如现有域名itcast.com,网络地址为192.168.255.0/16,则DNS主、从服务器IP地址与域名如图所示:

IP地址域名功能
192.168.255.254dns.itcast.com主域名服务器
192.168.255.253dnsc.itcast.com从域名服务器
192.168.255.254www.itcast.com文件传输服务器

部署主DNS服务器

修改主配置文件

使用bind-chroot软件包更换服务器根路径,执行以下命令:

cp /etc/named.conf /var/named/chroot/etc/named.conf

然后进行编辑刚复制过来的文件,修改内容如下:

设置监听对象
listen-on port 53 { 127.0.0.1; };		# 127.0.0.1改为any,表示监听所有主机的53端口
listen-on-v6 port 53 { ::1; };		# ::1改为any,表示监听所有主机的53端口

注意: any之后的分号不可少,大括号中的语句与括号之间有空格。

设置客户端查询范围
allow-query     { localhost; };		# localhost改为any,也可设置为网段,表示客户端可查询所有域名
引用区域配置文件

该项无需修改,主配置文件默认存在

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

编辑区域配置文件

vim /etc/named.rfc1912.zones
zone "itcast.com" IN {						# 正向区域解析文件
	type master;							# 服务器类型为master,即主服务器
	file "itcast.com.zone";					# 文件名为itcast .com. zone
	allow-transfer { 192.168.255.253; };	# 允许完全传送的地址,即从服务器地址
};

zone "255.168.192.in-addr.apra" IN {		# 反向区域解析文件
	type master;
	file "255.168.192.zone";
	allow-tranfer { 192.168.255.253; };
};

编辑区域数据文件

区域配置文件编辑保存好后,在/var/named/路径下创建itcast.com.zone文件和255.168.192.zone文件用来正向解析和反向解析

正向解析数据文件
vim /var/named/itcast.com.zone
$TTL 1D
@	IN SOA	dns.itcast.com admin.itcast.com.(
	1.0		;版本号
	1D		;更新时间
	1H		;重试时间
	1W		;超时时间
	2H		;否定回答缓存时间喝
)

		IN NS	dnsl
		IN NS	dnsc
		IN MX	5 mail		;邮件服务器名称
dns		IN A	192.168.0.254
dnsc 	IN A	192.168.0.253
www		IN A	192.168.0.254
ftp		IN CNAME www
反向解析数据文件
vim /var/named/255.168.192.zone
$TTL 1D
@	IN SOA	dns.itcast.com admin.itcast.com.(
	1.0		;版本号
	1D		;更新时间
	1H		;重试时间
	1W		;超时时间
	2H		;否定回答缓存时间喝
)

		IN NS	dns.itcast.com.
		IN NS	dnsc.itcast.com.
254		IN PTR	dns.itcast.com.
253 	IN PTR	dnsC.itcast.com.
254		IN PTR	www.itcast.com.
254		IN PTR  ftp.itcast.com.

至此,主DNS服务器基本配置完毕,重启主DNS服务器中的DNS服务:

systemctl restart named

部署从DNS服务器

重复部署主DNS服务器步骤,但从服务器主机中区域配置文件修改为以下内容:

zone "itcast.com" IN {						# 正向区域解析文件
	type slave;								# 服务器类型为slave,即从服务器
	file "/slaves/itcast.com.zone";			# 文件名为itcast .com. zone
	allow-transfer { none; };				# 允许完全传送的地址,即从服务器地址
};

zone "255.168.192.in-addr.apra" IN {		# 反向区域解析文件
	type slave;
	file "/slaves/255.168.192.zone";
	masers { 192.168.255.254; }				# 指定主服务器的IP地址
	allow-tranfer { none; };
};

区域配置文件中在配置反向区域数据时,可以通过masters选项指定主服务器IP地址,此处可设置多个主服务器,使用“;”分开。为保障服务器安全,设置allow-transfer选项值为none,表示不允许其他主机查看当前主机。

编辑配置结束后,重启从DNS服务器中的DNS服务:

systemctl restart named

从服务器应能复制主DNS服务器内容,但此操作可能不会立即执行,可使用以下命令进行同步:

rndc reload

到此DNS服务配置基本完成,可以根据个人需要和环境需求灵活进行修改。