DNS服务器
一、DNS简介:
DNS(Domain Name System)是一种用于将域名解析为IP地址的系统。
在DNS中,正向解析将域名转换为IP地址,而反向解析将IP地址转换为域名。正向解析是DNS系统最常用的解析方式,它允许用户通过域名找到该域名对应的IP地址。例如,在浏览器中输入www.google.com时,DNS会将该域名解析为IP地址,然后将请求发送给该IP地址上的服务器。反向解析则是与正向解析相反的过程。它将IP地址转换为域名。这通常用于安全和网络管理目的,例如确定某个IP地址是否被黑名单或查找特定主机名的IP地址。需要注意的是,反向解析需要在DNS服务器上进行设置,并且仅适用于那些已经注册了域名的IP地址,因此,并不是所有IP地址都可以被反向解析。
二、DNS服务器部署
约定:本实验中使用过的机器为centos8.0_x86_64系统,IP地址192.168.11.16/24.请关闭防火墙和SELINUX。
1、DNS安装
DNS服务是由bind程序提供的,所以要实现DNS服务就需要安装bind程序包。
[root@zutuanxue ~]# dnf -y install bind
2、DNS启动
DNS的守护进程叫做named,DNS是以named用户身份来运行,named用户在安装包的时候会在系统中自动创建。CentOS8下安装了bind-chroot之后,若要使用named-chroot.service,则需要关闭named.service。两者只能运行一个
启动DNS服务
开机启动
[root@zutuanxue ~]# systemctl enable named-chroot.service
Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service.
启动服务
[root@zutuanxue ~]# mv /etc/named.conf /root/
[root@zutuanxue ~]# systemctl start named-chroot
3、DNS配置文件
默认情况下,如果不安装bind-chroot这个包,配置文件的路径如下:
配置文件:/etc/named.conf区域数据库文件:/var/named/
主配文件详解
options
{
#IPv4监听端口为53,只允许本机连接
listen-on port 53 { 127.0.0.1; };
#定义工作目录
directory "/var/named";
}logging
{
#开启DNS日志记录channel default_debug {file "data/named.run";severity dynamic;};
};#定义一个根域
zone "." IN {#域类型为hint,还有master(主服务器) slave (从服务器)forward等类型type hint;#区域数据库文件路径file "/var/named/named.ca";};
};#包含两个子配置文件include "/etc/named.rfc1912.zones";include "/etc/named.root.key";
b、区域数据库文件详解
三、DNS正向解析
1、安装DNS服务的软件
[root@localhost ~]# dnf install bind -y #安装dns的bind软件 [root@localhost ~]# systemctl stop firewalld ##关闭防火墙和Selinux
[root@localhost ~]# setenforce 0
2、更改主配置文件
/etc/name.conf
[root@localhost ~]# vim /etc/named.conf
options {#定义监听端口,如果所有地址都监听,则只写端口listen-on port 53 { 192.168.186.137; };#定义数据文件目录directory "/var/named";#只允许本地主机进行查询allow-query { any; };recursion yes;
};#定义区域
zone "openlab.com" IN {type master;file "named.openlab.com"; ##文件路径
};
3、编辑区域配置文件
/var/named/文件名
更改/var/named/named.openlab.com文件:用于定义特定域名(在本例中是 openlab.com)的 DNS 资源记录,如 A 记录(将域名映射到 IPv4 地址)、AAAA 记录(将域名映射到 IPv6 地址)、CNAME 记录(别名)、MX 记录(邮件交换服务器)等。通过配置这个文件,可以实现对特定域名的正向解析(将域名转换为 IP 地址)和反向解析(将 IP 地址转换为域名)。和/etc/resolv.conf文件这个文件用于指定 DNS 客户端(即您的系统)在进行域名解析时所使用的 DNS 服务器的地址。当您的系统需要将某个域名转换为 IP 地址时,会按照这个文件中指定的 DNS 服务器顺序进行查询。
[root@localhost ~]# vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA ns.openlab.com.(@) admin.qq.com. (20230510021M1M1M3M )IN NS ns.openlab.com.
ns IN A 192.168.186.137
ftp IN A 192.168.186.100
www IN A 192.168.186.111
http IN CNAME www[root@localhost ~]# vim /etc/resolv.conf
Generated by NetworkManager
search localdomain
nameserver 192.168.186.138
区域配置文件中的主要内容及含义如下:
$TTL 86400 #生存时间
@ IN SOA ns1.example.com. admin.example.com. (2024070601 ; Serial3600 ; Refresh1800 ; Retry604800 ; Expire86400 ) ; Negative Cache TTL- `$TTL 86400`:指定默认的生存时间(Time To Live),表示资源记录在缓存中的有效时长,单位为秒。86400 秒即 1 天。- `@`:代表当前区域(在本例中是 `example.com`)。
- `IN`:表示 Internet 类。
- `SOA`:起始授权记录(Start of Authority)。- `ns1.example.com.`:主名称服务器的名称。- `admin.example.com.`:管理员的邮箱,将 `@` 替换为 `.` 。- `2024070601`:序列号,用于主从服务器之间数据同步,每次修改配置时应递增。- `3600`:刷新间隔,从服务器检查主服务器更新的时间间隔,单位为秒。- `1800`:重试间隔,如果刷新失败,再次尝试的时间间隔,单位为秒。- `604800`:过期时间,如果从服务器无法联系主服务器,多长时间后认为数据失效,单位为秒。- `86400`:否定缓存的生存时间,对于不存在的记录在缓存中的保存时间。; Name servers
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.- `NS`:名称服务器记录,指定了该区域的权威名称服务器。; A records
www IN A 192.168.1.100
mail IN A 192.168.1.200
- `A`:地址记录,将域名(如 `www`、`mail`)映射到 IPv4 地址(如 `192.168.1.100`、`192.168.1.200`)。
还可以根据需要添加其他类型的记录,比如 `CNAME`(别名记录)、`MX`(邮件交换记录)等。
4、重启服务
[root@localhost ~]#systemctl restart named
5、客户端测试
正向测试结果如下(三种方法):
[root@localhost ~]# host www.openlab.com
www.openlab.com has address 192.168.186.111[root@localhost ~]# dig www.openlab.com
;; ANSWER SECTION:
www.openlab.com. 86400 IN A 192.168.84.120[root@localhost ~]# nslookup www.openlab.com
Server: ::1
Address: ::1#53
Name: www.openlab.com
Address: 192.168.84.120
四、DNS的反向解析
1、安装DNS服务器软件
[root@localhost ~]# yum install bind -y #下载bind [root@localhost ~]# systemctl stop firewalld #并关闭防火墙和Selinux
[root@localhost ~]# setenforce 0
2、更改主配置文件
/etc/name.conf
[root@localhost ~]# vim /etc/named.confoptions {listen-on port 53 { 192.168.186.137; };directory "/var/named";allow-query { any; };recursion yes;
};#正向解析
zone "openlab.com" IN {type master;file "named.openlab.com";
};#反向解析
zone "186.168.192.in-addr.arpa" IN {type master;file "named.openlab.com";
};
3、编辑区域配置文件
更改/var/named/named.openlab.com文件和/etc/resolv.conf文件
root@localhost ~]# vim /var/named/named.openlab.com $TTL 1D
@ IN SOA ns.openlab.com. admin.qq.com. (20230510021M1M1M3M )NS ns.openlab.com.
ns A 192.168.186.137
ftp A 192.168.186.100
www A 192.168.186.111
http CNAME www
137 PTR ns.hash.com.
100 PTR www.hash.com.
111 PTR ftp.hash.com.[root@localhost ~]# vim /etc/resolv.conf # Generated by NetworkManager
search localdomain
nameserver 192.168.186.138
4、重启服务
[root@localhost ~]#systemctl restart named
5、客户端测试
dig -x ip地址
nslookup ip地址
[root@localhost ~]# dig -x 192.168.84.110
;; ANSWER SECTION:
110.84.168.192.in-addr.arpa. 86400 IN PTR www.hash.com.
110.84.168.192.in-addr.arpa. 86400 IN PTR ftp.hash.com.[root@localhost ~]# nslookup 192.168.84.100
100.84.168.192.in-addr.arpa name = ns.hash.com.[root@localhost ~]# nslookup 192.168.84.110
110.84.168.192.in-addr.arpa name = www.hash.com.
110.84.168.192.in-addr.arpa name = ftp.hash.com.
五、DNS转发服务器
DNS 转发服务器(DNS Forwarder)是一种特殊的 DNS 服务器配置,它的主要作用是接收客户端的 DNS 查询请求,并将这些请求转发到其他指定的 DNS 服务器进行解析,而不是自己直接进行完整的域名解析过程。
优点:1. 提高解析效率:如果本地 DNS 服务器无法直接解析某些域名,通过转发到更权威或性能更好的 DNS 服务器,可以更快地获取准确的解析结果。
2. 减少网络流量:避免每个本地 DNS 查询都直接访问外部 DNS 服务器,降低网络流量和潜在的延迟。
3. 集中管理和控制:可以对 DNS 查询进行统一的管理和策略控制,例如过滤特定的域名或限制查询频率。
常见配置方式(以 Bind 为例):
在主配置文件 /etc/named.conf
中添加 forwarders
选项:
[root@localhost ~]# vim /etc/named.confoptions {listen-on port 53 { 192.168.186.137; };directory "/var/named";forward only; ##只进行本地转发forwarders {114.114.114.114; 8.8.8.8};
};
检测配置是否成功
[root@localhost ~]# nmcli device show | grep DNS[root@localhost ~]# dig -t A www.baidu.com
六、主从DNS服务器
1、完全区域传送
主DNS服务器配置:(192.168.84.160)
[root@localhost ~]# vim /etc/named.conf
options {listen-on port 53 { any; };directory "/var/named";allow-transfer { 172.168.84.151 } ; ##次dns服务器IP
};#定义区域
zone "openlab.com" IN {type master;file "named.openlab.com"; ##文件路径
};
[root@localhost ~]# vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA ns.openlab.com.(@) admin.qq.com. ( 2023051002 1M 1M 1M 3M )IN NS ns.openlab.com.IN NS slave.openlab.com.slave IN A 172.168.84.151ns IN A 192.168.186.137
ftp IN A 192.168.186.100
www IN A 192.168.186.111
http IN CNAME www
[root@localhost ~]# systemctl restart named
从DNS服务器配置:(192.168.84.151)
[root@localhost ~]# vim /etc/named.conf
options {listen-on port 53 { any; };directory "/var/named";
};#定义区域
zone "openlab.com" IN {type slave;file "slaves/named.openlab.com"; ##文件路径masters { 192.168.84.100; }; ##主dns服务器的某一ip地址
};
[root@localhost ~]# systemctl restart named
测试:
[root@localhost ~]# host www.openlab.com 192.168.84.100
2、增量区域传递
仅复制区域内变化的文件
#修改主服务器内区域配置文件,序号需要变大
主服务器配置
[root@localhost ~]# vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA ns.openlab.com.(@) admin.qq.com. ( 2023051222 1M 1M 1M 3M )IN NS ns.openlab.com.IN NS slave.openlab.com.slave IN A 172.168.84.100ns IN A 192.168.186.137
ftp IN A 192.168.186.100
www IN A 192.168.186.111
http IN CNAME www[root@localhost ~]# systemctl restart named ##重启服务