使用systemctl启动DNS服务:
systemctl start named,并设置如何在服务上启动DNS服务详细指南
前期准备与环境要求
系统要求
| 操作系统版本 | 推荐DNS软件 | 最低硬件要求 |
|---|---|---|
| CentOS 7+/RHEL 7+ | BIND 9.x+ | 512MB内存,1核CPU |
| Ubuntu 18.04+ | BIND 9.x+ | 512MB内存,1核CPU |
| Debian 10+ | BIND 9.x+ | 512MB内存,1核CPU |
网络环境要求
- 公网/内网固定IP地址
- 开放UDP 53端口(可选TCP 53)
- 建议关闭防火墙测试阶段(后续可配置规则)
安装DNS服务软件
CentOS/RHEL系安装
# 更新软件源 yum update y # 安装BIND DNS服务器 yum install y bind bindutils # 安装调试工具(可选) yum install y vim nettools
Ubuntu/Debian系安装
# 更新软件源 apt update y # 安装BIND DNS服务器 apt install y bind9 bind9utils bind9doc # 安装调试工具(可选) apt install y vim nettools
配置文件结构解析
核心配置文件路径
| 文件名 | 作用描述 |
|---|---|
/etc/named.conf |
主配置文件 |
/etc/named/ |
区域文件存放目录(CentOS默认) |
/etc/bind/ |
区域文件存放目录(Ubuntu默认) |
/var/named/ |
运行时数据目录(CentOS默认) |
关键配置参数说明
// named.conf示例片段
options {
listenon port 53 { 127.0.0.1; any; }; // 监听地址
directory "/var/named"; // 数据目录
dumpfile "/var/named/data/cache_dump.db";
statisticsfile "/var/named/data/named_stats.txt";
memstatisticsfile "/var/named/data/named_mem_stats.txt";
allowquery { any; }; // 允许查询范围
recursion yes; // 启用递归查询
};
配置正向解析区域
创建区域文件
# CentOS示例 cp /usr/share/doc/bind*/sample/db.local /etc/named/db.example.com # Ubuntu示例 cp /etc/bind/db.local /etc/bind/db.example.com
编辑区域文件
// db.example.com示例内容
$TTL 86400 ; 默认生存时间(1天)
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; 序列号
3600 ; 刷新时间
1800 ; 重试间隔
1209600 ; 过期时间
86400 ) ; 最小TTL
;
@ IN NS ns1.example.com.
@ IN A 192.168.1.100
ns1 IN A 192.168.1.100
www IN A 192.168.1.100
关联区域文件到主配置
// named.conf添加内容
zone "example.com" {
type master;
file "db.example.com";
allowupdate { none; };
};
防火墙与SELinux配置
防火墙端口放行
# CentOS防火墙配置 firewallcmd permanent addservice=dns firewallcmd reload # Ubuntu防火墙配置(UFW) ufw allow 53/udp ufw allow 53/tcp
SELinux配置(CentOS)
# 查看当前模式 getenforce # 临时关闭(仅测试) setenforce 0 # 永久关闭 sed i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
启动与验证服务
启动DNS服务
# CentOS启动命令 systemctl start named systemctl enable named # Ubuntu启动命令 systemctl start bind9 systemctl enable bind9
验证服务状态
# 查看服务状态 systemctl status named # CentOS systemctl status bind9 # Ubuntu # 检查监听端口 netstat nupl | grep :53
客户端测试验证
使用dig命令测试
# 测试A记录解析 dig www.example.com +short # 测试NS记录解析 dig @127.0.0.1 t NS example.com # 测试递归查询 dig @8.8.8.8 www.example.com
使用nslookup测试
# 交互式测试 nslookup www.example.com # 指定DNS服务器测试 nslookup type=MX example.com 192.168.1.100
常见问题排查
典型错误及解决方案
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 服务无法启动 | 配置文件语法错误/权限不足 | 检查named.conf语法,chown named:named /var/named/ |
| 无法解析查询 | 区域文件未加载/防火墙未放行 | 检查zone配置,firewallcmd listall |
| 出现”connection refused” | DNS服务未监听对应接口 | 检查listenon配置,netstat anu |
日志文件分析
| 日志文件路径 | 作用描述 |
|---|---|
/var/log/messages |
系统日志(CentOS) |
/var/log/syslog |
系统日志(Ubuntu) |
/var/named/data/named.log |
BIND专属日志文件 |
相关问题与解答
Q1:如何配置DNS服务支持多个区域?
A1:

- 为每个区域创建独立的区域文件(如
db.example.com、db.test.com) - 在
named.conf中添加多个zone块配置 - 确保所有区域文件存放在
options指定的目录下 - 重启服务使配置生效:
systemctl restart named
Q2:为什么配置了DNS服务但客户端无法解析?
A2:
可能原因及排查步骤:

- 防火墙问题:检查53端口是否放行(
firewallcmd listall) - SELinux限制:临时关闭SELinux测试(
setenforce 0) - 区域文件错误:检查
$TTL、SOA记录格式是否正确 - 服务未监听:使用
netstat anu确认服务监听状态 - 缓存问题:清除客户端DNS缓存(Windows:
ipconfig /flushdns)
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/197918.html