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 解析过程
客户端解析域名的流程(必须掌握):
- 本地 DNS 缓存:首先检查本地缓存记录
- hosts 文件:检查本地 hosts 文件中的映射
- DNS 服务器查询:向配置的 DNS 服务器发起查询
查询类型:
- 递归查询:客户端与本地 DNS 服务器之间,服务器直接返回结果
- 迭代查询:本地 DNS 服务器与其他 DNS 服务器之间,服务器返回下一步查询的服务器地址
四、域名服务器分类
按作用分类
- 根域名服务器:最高层次,存储所有顶级域名服务器的信息
- 顶级域名服务器:管理顶级域名下的二级域名
- 权限域名服务器:负责特定 "区" 的域名解析
- 本地域名服务器:直接接收客户端查询请求的服务器
按应用场景分类
- 主服务器 (Primary Name server):提供主要解析服务,是区域数据的权威来源
- 辅助服务器 (Second Name Server):主服务器的备份,通过区域传输同步数据
- 高速缓存服务器 (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; };
};
从服务器配置
-
安装 BIND 软件(同主服务器)
-
配置主配置文件(/etc/named.conf):
bash
options {listen-on port 53 { 192.168.115.132; }; # 从服务器IP# 其他配置同主服务器
};
- 配置区域文件(/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; };
};
- 启动服务:
bash
systemctl start named
- 客户端测试:
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主服务器配置
配置文件配置
反向解释
正向解释
内外从服务器
配置文件
获取主服务器生成的文件