目 录CONTENT

文章目录

DNS域名解析服务

简中仙
2020-02-12 / 0 评论 / 0 点赞 / 37 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-02-07,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

DNS(Domain Name System,域名系统)是互联网上最核心的带层级的分布式系统,它负责把域名转换到IP地址、反查从IP到域名的解析以及宣告邮件路由等信息,使得基于域名提供服务成为可能,例
如网站访问、邮件服务等。

BIND(Berkeley Internet Name Domain,伯克利互联网名称域)是Linux、UNIX系统上部署最广泛的域名服务器,是域名解析协议的事实标准。可以通过BIND构建各种满足不同业务需求的DNS。

一、BIND域名服务基础

1、DNS系统组成

  • 域名服务器(Name Server)。提供域名解析服务的软件,一般监听UDP、TCP的53端口。例如Linux系统中常见的BIND、Windows Server中集成的DNS服务器组件等。
  • 解析器(Resolver)。访问域名服务器的客户端,它负责解析从域名服务器获取的响应,向调用它的应用返回IP地址或者别名等信息,例如Linux系统中的gethostbyname()函数、Windows系统中的nslookup等。

2、DNS系统的作用及类型

  • 正向解析:根据域名查旧地址,即将指定的域名解析为相对应的旧地址。
  • 反向解析:根据IP地址查域名,即将指定的旧地址解析为相对应的域名。

常见的几种类型

  • 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。
  • 主域名服务器:维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。
  • 从域名服务器:与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。

二、BIND的安装和控制

1、安装BIND软件

# yum -y install bind bind-chroot

2、BIND服务的配置文件

1、配置主配置文件

对于权威域名服务器,打开了递归查询功能,相当于把它配置成了开放的DNS服务器,会造成大量的数据流量,影响正常业务提供。因此,在权威域名服
务器上,需要禁用递归查询。

# vim /etc/named.conf
options {
        listen-on-v6 port 53 { ::1; };                 # 监听地址和端口
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        
        recursion no;									# 禁用递归查询
......
zone "." IN {
        type hint;
        file "named.ca";
};
#正向"web1.com"区域
zone "web1.com" IN {
		#类型为主区域
        type master;
        #区域数据文件为web1.com.zone
        file "web1.com.zone";
};
#反向"192.168.1.0/24"区域
zone "1.168.192.in-addr.arpr" IN {
        type master;
        #区域数据文件为192.168.1.zone
        file "192.168.1.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

2、配置区域数据文件

正向数据文件

# vim /var/named/web1.com.zone
#有效解析记录的生存周期
$ttl    86400
#SOA标记、域名、管理邮箱
@       in      soa     web1.com.      admin.web1.com.        (
		#更新序列号,可以是10位以内的整数
        20200601
        #刷新时间,重新下载地址数据的间隔(H:时)
        3h
        #重试延时,下载失败后的重试间隔(M:分)
        15m
        #失效时间,超过该时间仍无法下载则放弃(W:周)
        1w
        #无效解析记录的生存周期(D:天)
        1d
)
        in      ns      ns1.web1.com.
ns1     in      a       192.168.1.10
www     in      a       192.168.1.10
ftp     in      cname   www
服务器名称说明
NS(Name Server,域名服务器),记录当前区域的DNS服务器的主机地址
MXMail Exchange,邮件交换),记录当前区域的邮件服务器的主机地址,数字10表示(当有多个MX记录时)选择邮件服务器的优先级,数字越大,优先级越低
A(Address,地址),记录正向解析条目
CNAME(Canonical Name,别名),记录某一个正向解析条目的其他名称

反向数据文件

# vim /var/named/192.168.1.zone
$ttl    86400
@       in      soa     web1.com.      admin.web1.com.        (
        20200601
        3h
        15m
        1w
        1d
)
        in      ns      ns1.web1.com.
10      in      ptr     ns1.web1.com.
10      in      ptr     www.web1.com.

3、从-DNS配置

配置主配置文件

# vim /etc/named.conf
options {
        listen-on-v6 port 53 { ::1; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
......
zone "." IN {
        type hint;
        file "named.ca";
};
zone "benet.com" {
	type slave;
	masters { 192.168.1.10; };
	file "slaves/benet.com.zone";
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

验证

在这里插入图片描述

在这里插入图片描述

4、相同IP不同域名

安装BIND软件

# yum -y install bind bind-chroot

配置主配置文件

# vim /etc/named.conf

添加正向区域

options {
        listen-on-v6 port 53 { ::1; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        
zone "." IN {
        type hint;
        file "named.ca";
};
zone "benet.com" IN {
        type master;
        file "benet.com.zone";
};
zone "accp.com" IN {
        type master;
        file "accp.com.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key"; 

添加benet.com正向区域数据文件

# vim /var/named/benet.com.zone
$ttl 	86400
@		in		soa 		benet.com.			admin.benet.com.		(
		20200212
		3h
		15m
		1W
		1d
)
		in		ns			ns1.benet.com
10		in		ptr			ns1.benet.com
10		in		ptr 		www.benet.com

添加accp.com正向区域数据文件

# vim /var/named/accp.com.zone
$ttl 	86400
@		in		soa 		accp.com.			admin.accp.com.		(
		20200212
		3h
		15m
		1W
		1d
)
		in		ns			ns1.accp.com
ns1		in		a			192.168.1.10
www		in		a 			192.168.1.10
ftp		in		cname		www

启动服务

systemctl restart named

验证

在这里插入图片描述

5、配置文件排错命令

# named-checkconf -z /etc/named.conf

三、域名解析缓存服务

在部署服务器时,很多应用程序需要调用域名解析服务,一般通过配置/etc/resolv.conf来指定DNS服务器的IP。但如果程序发起的请求量较大,那么服务器就容易被这些DNS服务器禁止访问;同时每次都去访问外部DNS服务器,会导致延时增大,遇到网络问题时,还会发生解析不成功的情况。在这种情况下,需要配置一个透明的DNS解析缓存服务。

NSCD(Name Service Caching Daemon,名称服务缓存进程)不需要对应用程序或者解析器做任何修改,/etc/resovl.conf也不需要做任何变化,对于系统部署的影响最小。因此,NSCD成为Linux环境中得到最广泛的使用的域名缓存软件。

1、安装NSCD软件

# yum -y install nscd
# systemctl start nscd
# systemctl enable nscd

2、NSCD服务的配置文件

# vim /etc/nscd.conf
        enable-cache            hosts           yes
        positive-time-to-live   hosts           3600
        negative-time-to-live   hosts           20
        suggested-size          hosts           211
        check-files             hosts           yes
        persistent              hosts           yes
        shared                  hosts           yes
        max-db-size             hosts           33554432
参数说明
enable-cache对DNS解析进行缓存
positive-time-to-live对解析成功的DNS结果进行缓存的时间
negative-time-to-live对解析失败的DNS结果进行缓存的时间
suggested-sizeNSCD内部的哈希表的大小,如果缓存条目数量远大于默认的211(如10倍以上),则修改此值
check-files是否检查/etc/hosts文件的变化
persistent是否在重启NSCD进程时保留已缓存的条目
shared是否允许客户端直接查询NSCD的内存镜像以获得结果
max-db-size指DNS的缓存大小,以字节为单位

3、清除DNS缓存

nscd -i hosts

四、chroot加固BIND服务

1、创建named用户

groupadd -g 25 named
useradd -g 25 -u 25 -d /chroot/named -s /sbin/nologin named

2、创建目录结构、修改权限

mkdir -p /chroot/named/{dev,etc,var}
chown named.named /chroot/named/var

3、创建设备

mknod /chroot/named/dev/null c 1 3
mknod /chroot/named/dev/zero c 1 5
mknod /chroot/named/dev/random c 1 8

4、复制需要的文件

# cp /etc/localtime /chroot/named/etc

5、修改配置文件

# vim /chroot/named/etc/named.conf
options {
        directory       "/etc";         					# 此处实际上对应系统的/chroot/named/etc         		
        dump-file       "/var/cache_dump.db";				# 此处实际上对应系统的/chroot/named/var/cache_dump.db
        statistics-file "/var/named_stats.txt";				# 此处实际上对应系统的/chroot/named/var/named_stats.txt     
        zone-statistics yes;
        allow-query     { any; };
        recursion yes;
};

logging {
        channel query_log {
                file "/var/query.log" versions 5 size 20m; 	# 此处实际上对应系统的/chroot/named/var/query.log
                severity info;
                print-time yes;
                print-category yes;
        };
        category queries{
        		query_log;
        };
};

6、启动named进程

named -t /chroot/named -u named -c /etc/named.conf

named以普通用户权限运行,运行环境被限定到/chroot/named目录下

0

评论区