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

Linux DNS服务解析原理与搭建

一、什么是DNS

DNS 是域名服务 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。
域名服务器是指保存有该网络中所有主机的域名和对应IP地址,
并具有将域名转换为IP地址功能的服务器。
域名必须对应一个IP地址,而IP地址不一定有域名。
域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。
将域名映射为IP地址的过程就称为"域名解析"。
在Internet上域名与IP地址之间是一对一(或者多对一)的,
也可采用DNS轮循实现一对多,域名虽然便于人们记忆,
但机器之间只认IP地址,它们之间的转换工作称为域名解析,
域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
DNS 命名用于 Internet等 TCP/IP网络中,通过用户友好的名称查找计算机和服务。
当用户在应用程序中输入 DNS 名称时,
DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。
因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,
这样才能上网。其实,域名的最终指向是IP

二、域名的规则

域名空间结构:【例:】www.baidu.com.
根域:com后面的用"."表示
顶级域:顶级域分为组织域和国家或地区域。
组织域采用3个字符代号,如.com .edu .gov
国家或地区域,采用两个字符代号。如.cn .jp
二级域:二级域注册到个人、组织或者公司名称,如baidu、taobao等
主机名称:主机名称处于域名空间的最底层,主机名与上述各级域名结合构成FQND(完全合格域名),如www。
注意:每个域用一个点号“.”分开

三、DNS服务的作用

1.核心作用:实现域名与 IP 地址的双向翻译

【例】用户在浏览器输入 www.baidu.com,DNS 服务器将其解析为百度服务器的 IP 地址(如 14.215.177.38),从而建立网络连接;网络设备(如防火墙、服务器)通过 IP 地址反查域名,用于日志记录、访问控制或故障排查(如判断某个 IP 是否属于可信域名)。
扩展作用:支撑网络服务的高效与稳定
【例】实现负载均衡与流量分配;提高服务冗余与高可用性;提高网络安全与访问控制
四、域名查询的过程
DNS查询类别:
递归查询:发生在客户端和DNS服务器之间
迭代查询:发送在DNS服务器和DNS服务器之间
DNS解析方式:
正向解析:将FQDN解析为对应的IP
反向解析:将IP解析为对应的FQDN

域名查询流程简化

  1. 用户输入域名 → 检查本地缓存(浏览器 / 系统 /hosts);
  2. 无结果 → 向本地 DNS 服务器查询;
  3. 本地 DNS 服务器无缓存 → 依次查询根服务器 → 顶级域名服务器 → 权威域名服务器;
  4. 获取 IP 地址 → 返回给用户并缓存 → 建立连接。

四.DNS重要的配置文件及目录解释

/etc/hosts 本地解析配置文件
/etc/resolv.conf 客户端的DNS指向
named DNS服务名称
bind,bind-chroot DNS安装软件包
/var/named DNS的家目录
/etc/named.conf 映射的DNS主配置文件
/var/named/chroot/etc/named.rfc1912.zones 记录DNS正向和反向的全局解析配置文件
/var/named/named.localhost 正向解析的配置文件模板
/var/named/named.empty 反向解析的配置文件模板
/etc/named.conf 映射的DNS主配置文件
/var/named/chroot/etc/named.rfc1912.zones全局解析配置文件

五,DNS 服务器类型(主 DNS 与辅助 DNS)

主 DNS 服务器(Primary/Authoritative DNS)
定义:负责维护特定域名区域(Zone)的原始数据,是该区域的权威数据源。
权限:可直接修改域名记录(如 A、MX、CNAME 等),并生成更新序列号(Serial)。
存储:区域文件存储在本地(如 /var/named/example.com.db)。
辅助 DNS 服务器(Secondary DNS)
定义:从主 DNS 服务器同步区域数据,提供冗余备份和负载分担。
权限:只读,无法直接修改记录,需通过主 DNS 更新。
同步机制:通过 AXFR/IXFR 协议定期检查主 DNS 的序列号,发现更新时拉取全量或增量数据
定义域和网段的映射关系分为:正向解析(FQDN → IP)和 反向解析(IP → FQDN)

六、使用bind方式搭建主DNS服务器

目标:通过配置我们可以将192.168.100.10和ycy2.example.com相互转换


1.配置本地yum仓库

挂载yum仓库
mount /dev/cdrom /mnt/
配置主DNS服务器
安装bind、bind-chroot软件
yum -y install bind bind-chroot

2.进入vim /etc/named.conf,编辑DNS服务器主配置文件

3. 配置区域文件(/etc/named.rfc1912.zones)

区域文件定义正向和反向解析的 “区域” 规则,指定解析文件路径:
##反向解析全局配置文件
zone "localhost.localdomain" IN {type master;file "named.localhost";allow-update { none; };
};zone "localhost" IN {             ##将这五行复制粘贴到末尾type master;file "named.localhost";allow-update { none; };
};
##反向解析全局配置文件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 {type master;file "named.loopback";allow-update { none; };
};zone "1.0.0.127.in-addr.arpa" IN {type master;file "named.loopback";allow-update { none; };
};zone "0.in-addr.arpa" IN {       ##以及这五行粘贴到文件末尾type master;file "named.empty";allow-update { none; };
};##粘贴在文件末尾再去修改,因为我们一般不去修改源文件的配置zone "localhost" IN {  ##localhost修改为域名:example.com           type master;   ##表示主DNS服务器类型file "named.localhost";   ##文件名allow-update { none; };
};zone "0.in-addr.arpa" IN {       type master;file "named.empty";allow-update { none; };
};

4.编辑正向和反向解析全局配置文件

将存放正向和反向解析的配置文件模板复制一份,且保持源文件的属性
/var/named/named.localhost 正向解析的配置文件模板
/var/named/named.empty 反向解析的配置文件模板
cd /var/named
cp -p named.localhost ycy.com
cp -p named.empty com.ycy

(1)编辑正向解析文件

vim /var/named/ycy.com

(2)编辑反向解析文件

vim /var/named/com.ycy

**$TTL 1D:**缓存周期为1天
**SOA:**起始授权记录,就是由谁让你做解析的,即DNS服务器
**serial:**序列号,可以随便写
**refresh:**定义辅助DNS刷新的时间,也就是说辅助DNS会隔多久同步主dns解析数据。
**retry:**表示重试延迟,也就是说辅助dns第一次同步数据失败,那么就需要隔多久(就是retry来定义)来同步
**expire:**表示失效的时间,超过这个时间,辅助DNS一直同步数据失败,那么该辅助DNS服务器将失效,则不会再去同步主DNS数据。
**minimum:**表示定义无效解析的缓存时间。
一个FQDN只能对应一个IP,但是一个IP可以对应多个FQDN。

4,重启服务

systemctl  restart  named
systemctl  enable  named

5.配置关闭防火墙,关闭SELinux

systemctl stop firewalld		#关闭防火墙
systemctl disable firewalld		#设置开启自启
setenforce 0		#设置SElinux状态为全部允许访问模式
getenforce		#查看SWlinux状态

6.在另一台设备网卡配置文件中配置DNS为服务器的IP:192.168.100.10

vim /etc/sysconfig/network-scripts/ifcfg-ens33

7.验证

nslookup

七、搭建DNS辅助服务器

除了编辑正向和反向解析全局配置文件不一样其他都一样

http://www.xdnf.cn/news/1283221.html

相关文章:

  • OrbStack 入门教程:macOS 上的轻量级容器与虚拟机管理工具
  • C#高级语法_泛型
  • Vue 中的 Class 与 Style 绑定详解2
  • 基于 Spring Boot 的登录功能实现详解
  • 企业高性能 Web 服务部署实践(基于 RHEL 9)
  • sqli-labs通关笔记-第42关 POST字符型堆叠注入(单引号闭合 手工注入+脚本注入两种方法)
  • Rust学习笔记(一)|Rust初体验 猜数游戏
  • 从 GPT-2 到 gpt-oss:架构进步分析
  • 【lucene】文档id docid
  • 算法基础 1
  • 基于飞算JavaAI的日志监测系统开发实践:从智能生成到全链路落地
  • Spring-Security-5.7.11升级6.5.2
  • 机器学习-决策树(DecisionTree)
  • YOLOv6深度解析:实时目标检测的新突破
  • GESP2023年9月认证C++一级( 第三部分编程题(1)买文具)
  • vue3-pinia
  • 在 Ubuntu 中docker容器化操作来使用新建的 glibc-2.32
  • SQL 基础查询语句详解
  • Pytest项目_day12(yield、fixture的优先顺序)
  • 论文学习22:UNETR: Transformers for 3D Medical Image Segmentation
  • MFC C++ 使用ODBC方式调用Oracle数据库的详细步骤
  • 北京朝阳区中小学生信息学竞赛选拔赛C++真题
  • 电子电气架构 --- 软件定义汽车的驱动和挑战
  • [Element-plus]动态设置组件的语言
  • Oracle数据库中的Library cache lock和pin介绍
  • Redis 数据结构及特点
  • VMD例程(Matlab 2021b可直接使用)
  • C++方向知识汇总(三)
  • 【MySQL基础篇】:MySQL索引——提升数据库查询性能的关键
  • 【华为机试】648. 单词替换