DNS服务器

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.  (
                                                2023051002
                                                1M
                                                1M
                                                1M
                                                3M )
           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      ; Serial
                3600            ; Refresh
                1800            ; Retry
                604800          ; Expire
                86400 )         ; 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.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";
};

#反向解析
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.  (
                                                2023051002
                                                1M
                                                1M
                                                1M
                                                3M )
                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.conf

options {
        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.151

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 ~]# 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.100

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 ~]# systemctl restart named ##重启服务
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值