一、DNS系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析和反向解析
1.解析的类型

  • 正向解析:将域名解析为IP地址,也是最长用的功能
  • 反向解析:将IP地址解析为域名,不是很常用,一些特殊场合会用到
    2.DNS系统的类型
    1)高速缓存服务器
    缓存用户解析过的数据,加快访问速度,节约带宽资源
    2)主名称服务器
    保存DNS区域的正本数据,可以添加删除修改区域中的数据
    3)从名称服务器
    也被称为辅助DNS服务器,保存的DNS区域的副本数据,不能添加修改删除区域数据只能读取,主DNS故障辅助DNS接替工作
    二、安装配置DNS
    1.安装DNS配置主配置文件 dnf install bind bind-utils
    1)yum安装DNS.
[root@localhost ~]# dnf install bind bind-utils
[root@localhost ~]# rpm -qa | grep bind
bind-license-9.11.20-5.el8.noarch
bind-export-libs-9.11.20-5.el8.x86_64
bind-libs-lite-9.11.20-5.el8.x86_64
bind-9.11.20-5.el8.x86_64
python3-bind-9.11.20-5.el8.noarch
bind-libs-9.11.20-5.el8.x86_64
bind-utils-9.11.20-5.el8.x86_64
[root@localhost ~]#

2)修改主配置文件

[root@localhost ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
	listen-on port 53 { any; };  #修改any
	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";
	secroots-file	"/var/named/data/named.secroots";
	recursing-file	"/var/named/data/named.recursing";
	allow-query     { any; };  #修改any,允许所有网段使用dns,192.168.100.0.24:只允许100网段使用

	/* 
	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
	   recursion. 
	 - If your recursive DNS server has a public IP address, you MUST enable access 
	   control to limit queries to your legitimate users. Failing to do so will
	   cause your server to become part of large scale DNS amplification 
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;

	managed-keys-directory "/var/named/dynamic";

	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";

	/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
	include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.superred.zones";  #添加自己的zones文件
include "/etc/named.root.key";

3)添加zone文件

[root@localhost ~]# cat /etc/named.superred.zones 
zone "superred.org" IN {      #正向解析区域名为superred.org
	type master;              #主DNS服务器
	file "superred.org.zone"; #正向解析区域配置文件名
	allow-update { none; };
};
zone "3.10.10.in-addr.arpa" IN {  #反向解析区域名
	type master;
	file "10.10.3.arpa";          #反向解析区域配置文件名
	allow-update { none; };      
};

4)检查DNS主配置文件时候又错误

[root@localhost ~]# named-checkconf -z /etc/named.conf
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
zone superred.org/IN: loaded serial 0
zone 3.10.10.in-addr.arpa/IN: loaded serial 0

2.配置正向解析区域配置文件

       1)编辑正向解析区域配置文件

[root@localhost ~]# cat /var/named/superred.org.zone 
$TTL 1D                                               解析资源记录有效时间24小时 86400=1D 一天一夜
@	IN SOA	superred.org. root.superred.org. (# 域名为superred.org
					0	; serial
					1D	; refresh            #更新序列号     
					1H	; retry              #刷新时间24小时
                    15M ;                    #重试时间15分钟
					1W	; expire             #失效时间1周
					3H ); minimum        #无效解析记录保存时间3小时   
	    NS	dns1.superred.org.           #权威服务器是DNS的完全格式域名
dns1	A	10.10.3.193                  #记录正向条目
koji	A	10.10.3.157                  #记录正向条目
ftp	    CNAME	koji                     #记录某(koji)正向条目的其他名称
	AAAA	::1

2)添加执行权限,修改属主和属组,检查配置是否有误

[root@localhost ~]# cd /var/named
[root@localhost ~]# chmod 755 superred.org.zone 10.10.3.arpa
[root@localhost ~]# chown -R named.named .
[root@localhost named]# named-checkzone superred.org superred.org.zone 
zone superred.org/IN: loaded serial 0
OK

3.配置反向解析区域配置文件

  • 1)通过正向解析文件生成反向解析文件
[root@localhost named]# cat 10.10.3.arpa 
$TTL 1D
@	IN SOA	superred.org. root.superred.org. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	dns1.superred.org.
193	PTR	dns1.superred.org.
157	PTR	koji.superred.org.

3)检查反向DNS解析文件是否错误 

[root@localhost named]# named-checkzone 3.10.10.in-addr.arpa 10.10.3.arpa 
zone 3.10.10.in-addr.arpa/IN: loaded serial 0
OK

4)启动DNS服务器,设置开机自动启动

[root@localhost named]# systemctl enable named --now

5)使用客户端验证是否可以解析

[root@koji ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search superred.org
nameserver 10.10.3.193
nameserver 180.76.76.76
nameserver 119.29.29.29
nameserver 223.5.5.5


[root@koji ~]# nslookup koji.superred.org
Server:		10.10.3.193
Address:	10.10.3.193#53

Name:	koji.superred.org
Address: 10.10.3.157
Name:	koji.superred.org
Address: ::