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

Linux系统DNS服务

一、DNS 服务概述

DNS(Domain Name Service)是一套分布式的域名服务系统,由遍布全球的多个 DNS 服务器组成。每个服务器存储大量域名与 IP 地址的映射关系,并实现动态更新。几乎所有网络客户端程序都依赖 DNS 协议查询目标主机的 IP 地址。

DNS 的核心作用

  • 正向解析:将域名转换为 IP 地址
  • 反向解析:将 IP 地址转换为域名

技术基础

  • 监听端口:53/udp(主要)和 53/TCP(用于区域传输等)
  • 默认运行用户:named

二、完全限定域名(FQDN)

FQDN 是完整的域名格式,结构为:主机名.三级域.二级域名.顶级域名.

例如:www.baidu.com.

域名层次结构

  • 根域.(最顶层)
  • 顶级域:如 cn、hk、uk、org、edu、com 等
  • 二级域:如 baidu、163、sina 等
  • 子域:二级域下可以创建的各级域名

三、DNS 解析过程

客户端解析域名的流程(必须掌握):

  1. 本地 DNS 缓存:首先检查本地缓存记录
  2. hosts 文件:检查本地 hosts 文件中的映射
  3. DNS 服务器查询:向配置的 DNS 服务器发起查询

查询类型:

  • 递归查询:客户端与本地 DNS 服务器之间,服务器直接返回结果
  • 迭代查询:本地 DNS 服务器与其他 DNS 服务器之间,服务器返回下一步查询的服务器地址

四、域名服务器分类

按作用分类

  1. 根域名服务器:最高层次,存储所有顶级域名服务器的信息
  2. 顶级域名服务器:管理顶级域名下的二级域名
  3. 权限域名服务器:负责特定 "区" 的域名解析
  4. 本地域名服务器:直接接收客户端查询请求的服务器

按应用场景分类

  1. 主服务器 (Primary Name server):提供主要解析服务,是区域数据的权威来源
  2. 辅助服务器 (Second Name Server):主服务器的备份,通过区域传输同步数据
  3. 高速缓存服务器 (Cache-only server):不维护域名数据,仅缓存解析结果提升效率

五、DNS 服务器部署(基于 BIND)

BIND 是最常用的 DNS 服务器软件,以下是部署步骤:

安装 BIND

bash

# 在线安装
yum install -y bind

核心文件解析

bash

# 查看BIND相关文件
rpm -ql bind

主要文件说明:

  • /etc/named.conf:服务主配置文件
  • /etc/named.rfc1912.zones:区域配置文件
  • /var/named:区域数据文件目录
  • /var/named/named.ca:根域名服务器信息
  • /var/named/slaves:从服务器的区域数据存储目录

核心命令

  • /usr/sbin/named:主服务运行程序
  • named-checkconf:配置文件语法检查
  • named-checkzone:区域文件语法检查
  • named-journalprint:打印运行日志

六、配置主服务器单点架构

1. 配置主配置文件(/etc/named.conf)

bash

options {listen-on port 53 { 192.168.115.128; };  # 监听指定IPdirectory  "/var/named";allow-query     { any; };  # 允许所有主机查询recursion yes;# 其他配置保持默认
};zone "." IN {type hint;file "named.ca";
};include "/etc/named.rfc1912.zones";

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

bash

# 添加正向区域
zone "jx.com" IN {type master;file "jx.com.zone";allow-update { none; };
};# 添加反向区域
zone "115.168.192.in-addr.arpa" IN {type master;file "192.168.115.zone";allow-update { none; };
};

3. 创建正向解析文件(/var/named/jx.com.zone)

bash

$TTL 3H
@   IN SOA   jx.com. root.jx.com. (0   ; serial1D  ; refresh1H  ; retry1W  ; expire3H )    ; minimum
@       NS      dns1.jx.com.
dns1    A       192.168.115.128
www     A       192.168.115.129
mail    A       192.168.115.130
ftp     A       192.168.115.131
ww      CNAME   www.jx.com.
mail    MX 10   mail.jx.com.

4. 创建反向解析文件(/var/named/192.168.115.zone)

bash

$TTL 3H
@   IN SOA   jx.com. root.jx.com. (0   ; serial1D  ; refresh1H  ; retry1W  ; expire3H )    ; minimum
@   NS      dns1.jx.com.
128 PTR     dns1.jx.com.
129 PTR     www.jx.com.
130 PTR     mail.jx.com.
131 PTR     ftp.jx.com.

5. 启动服务并测试

bash

# 启动服务
systemctl start named# 配置DNS服务器地址
echo "nameserver 192.168.115.128" > /etc/resolv.conf# 安装测试工具
yum install -y bind-utils# 测试解析
nslookup www.jx.com
dig mail.jx.com

七、配置 DNS 主从架构

主从架构提高 DNS 服务的可用性,主服务器数据变更会同步到从服务器。

主服务器配置

修改区域配置文件(/etc/named.rfc1912.zones),添加允许从服务器传输:

bash

zone "jx.com" IN {type master;file "jx.com.zone";allow-update { none; };allow-transfer { 192.168.115.132; };  # 从服务器IP
};zone "115.168.192.in-addr.arpa" IN {type master;file "192.168.115.zone";allow-update { none; };allow-transfer { 192.168.115.132; };
};

从服务器配置

  1. 安装 BIND 软件(同主服务器)

  2. 配置主配置文件(/etc/named.conf):

bash

options {listen-on port 53 { 192.168.115.132; };  # 从服务器IP# 其他配置同主服务器
};

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

bash

zone "jx.com" IN {type slave;file "slaves/jx.com.zone";  # 区域文件存储路径masters { 192.168.115.128; };  # 主服务器IP
};zone "115.168.192.in-addr.arpa" IN {type slave;file "slaves/192.168.115.zone";masters { 192.168.115.128; };
};

  1. 启动服务:

bash

systemctl start named

  1. 客户端测试:

bash

# 配置客户端使用两个DNS服务器
echo "nameserver 192.168.115.128" > /etc/resolv.conf
echo "nameserver 192.168.115.132" >> /etc/resolv.conf# 测试解析
dig www.jx.com

实验:

各个主机下载相关服务

DHCP服务器配置

防火墙配置

内网DNS主服务器配置

配置文件配置

反向解释

正向解释

内外从服务器

配置文件

获取主服务器生成的文件


文章转载自:

http://yjE1NQ6p.pypqf.cn
http://bbExsEaW.pypqf.cn
http://epd1lwtA.pypqf.cn
http://jS3B29Gu.pypqf.cn
http://a4XUKUop.pypqf.cn
http://gX1HBlle.pypqf.cn
http://K45aCCKO.pypqf.cn
http://qZwKnIQy.pypqf.cn
http://mxI7Jk8d.pypqf.cn
http://0nM6nRGB.pypqf.cn
http://4BLpp34G.pypqf.cn
http://19l8iXoU.pypqf.cn
http://Ak2RmXG6.pypqf.cn
http://joSRGnTh.pypqf.cn
http://HaAEkO0e.pypqf.cn
http://vJdwg3ZX.pypqf.cn
http://b1N3FQkV.pypqf.cn
http://0XxaY1GN.pypqf.cn
http://RYBBGGfe.pypqf.cn
http://q06Au6cj.pypqf.cn
http://sCK8zn6t.pypqf.cn
http://nYidHFlV.pypqf.cn
http://HPAcwAkC.pypqf.cn
http://QxzDwglm.pypqf.cn
http://RoHnWPRm.pypqf.cn
http://u10aN7bl.pypqf.cn
http://qRKaFDBA.pypqf.cn
http://iUmf8FmT.pypqf.cn
http://0fOp80nr.pypqf.cn
http://ssZnjJFk.pypqf.cn
http://www.dtcms.com/a/388104.html

相关文章:

  • 如何通过跳板机访问内网 Mysql 服务器
  • SSH 远程连接内网 Linux 服务器
  • Spring Cloud - 微服务监控
  • Flutter-[1]入门指导
  • Linux服务器运维自动化巡检工具
  • Java 大视界 -- Java 大数据在智能家居设备联动与场景化节能中的应用拓展(413)
  • Node.js 部署:PM2 的 Fork 与集群模式
  • 【C++上岸】C++常见面试题目--网络篇(第二十五期)
  • LangChain使用方法以OpenAI 的聊天模型GPT-4o为例
  • CephFS存储文件系统介绍
  • Java Swagger2 能显示页面但看不到一个接口
  • SSL证书有效期缩短:自动化解决方案
  • C# 多线程编程 (.NET Framework 4.0)
  • 一个手艺活 - 跨语言编程
  • docker安装ollama、下载模型详细步骤
  • 微服务和分布式的基础学识
  • 自动化测试框架pytest---Json Schema
  • 阿里云PolarDB MySQL版与MCP集成方案:数据处理分析全流程的效能革命
  • Python实现霸王龙优化算法(Tyrannosaurus Optimization Algorithm, TROA)(附完整代码)
  • 弥合安全分析与故障仿真之间差距的方法
  • JavaEE---9.网络原理TCP/IP
  • @Value
  • 安装es、kibana、logstash
  • Leetcode-148.排序链表
  • 基于ETF底仓的网格交易系统实现动态参数优化与动量因子融合
  • C++底层刨析章节三: 函数对象与适配器:STL中的智能操作单元
  • MySQL多表联合查询与数据备份恢复全解析
  • 说说对React的理解?有哪些特性?
  • 深入理解 C 语言指针(二):数组与指针的深度绑定
  • 算法能力提升之树形结构-(线段树)