当前位置: 首页 > news >正文

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.  (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 ##重启服务

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用maven搭建一个SpingBoot项目
  • C++:构造函数是什么东西
  • 科普文:构建可扩展的微服务架构设计方案
  • 强技能 展风采 促提升——北京市大兴区餐饮行业职工技能竞赛精彩呈现
  • C++与C#创建位图,是否需要区分RGB和BGR模式
  • 树型结构数据存储实践
  • 第32讲:K8S集群与Cephfs文件系统集成
  • Interpretability 与 Explainability 机器学习
  • 2024阿里国际春招笔试
  • 在Linux环境下搭建Redis服务结合内网穿透实现通过GUI工具远程管理数据库
  • ubuntu 网络常用命令
  • 类与对像(1)
  • 【vuejs】vue-router 之 addRoute 动态路由的应用总结
  • 【海贼王的数据航海】ST表——RMQ问题
  • 2025届秋招提前批信息汇总(计算机类)
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【译】理解JavaScript:new 关键字
  • 2017 年终总结 —— 在路上
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Bytom交易说明(账户管理模式)
  • ES10 特性的完整指南
  • ES6--对象的扩展
  • gitlab-ci配置详解(一)
  • HTML中设置input等文本框为不可操作
  • Java到底能干嘛?
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • rabbitmq延迟消息示例
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 关于使用markdown的方法(引自CSDN教程)
  • ------- 计算机网络基础
  • 解析带emoji和链接的聊天系统消息
  • 主流的CSS水平和垂直居中技术大全
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 仓管云——企业云erp功能有哪些?
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #QT(一种朴素的计算器实现方法)
  • #微信小程序:微信小程序常见的配置传值
  • (07)Hive——窗口函数详解
  • (12)Linux 常见的三种进程状态
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (7)摄像机和云台
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (ZT)一个美国文科博士的YardLife
  • (八)Flask之app.route装饰器函数的参数
  • (每日一问)基础知识:堆与栈的区别
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • ..回顾17,展望18
  • ./和../以及/和~之间的区别
  • .net Application的目录
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core 实现 Redis 批量查询指定格式的Key