编辑
/etc/resolv.conf,添加 nameserver 行(如 8.8.8.Linux配置DNS详细教程
DNS服务基础概念
DNS(Domain Name System)是互联网的核心服务之一,负责将域名解析为IP地址,在Linux系统中配置DNS服务器需要理解以下核心概念:
| 术语 | 说明 |
|---|---|
| 正向解析 | 将域名转换为IP地址(如www.example.com → 192.168.1.100) |
| 反向解析 | 将IP地址转换为域名(如192.168.1.100 → www.example.com) |
| 区域文件 | 存储域名与IP映射关系的文件 |
| 递归查询 | DNS服务器逐级向上查询直到获取结果 |
| 迭代查询 | DNS服务器直接返回上级服务器地址,由客户端继续查询 |
选择DNS服务软件
Linux系统常用的DNS服务软件对比:
| 软件 | 特点 |
|---|---|
| BIND | 最主流的DNS服务器软件,功能强大,支持视图、TSIG等高级特性 |
| Dnsmasq | 轻量级DNS缓存服务器,适合小型网络,集成DHCP功能 |
| Unbound | 强调安全和性能的现代DNS解析器,配置简单 |
| pdns | 高性能DNS代理,支持多种后端,适合高并发环境 |
本教程以BIND 9为例进行讲解(CentOS/RHEL/Ubuntu通用)
安装BIND服务
1 不同系统的安装命令
# Ubuntu/Debian系统 sudo apt update sudo apt install bind9 bind9utils bind9doc y # CentOS/RHEL系统 sudo yum install bind bindutils y
2 检查安装状态
# 查看版本 named v # 预期输出示例:BIND 9.16.1 (Extended Support Version)
配置文件结构分析
BIND主要配置文件路径:

| 文件名 | 作用 |
|---|---|
| /etc/named.conf | 主配置文件 |
| /etc/named.rfc1912.zones | 默认区域声明文件(某些系统) |
| /var/named/ | 运行时数据目录(chroot环境) |
| /etc/rndc.conf | 远程管理配置文件 |
| /etc/rndc.key | 远程管理密钥文件 |
正向解析配置实战
1 编辑主配置文件
sudo vi /etc/named.conf
添加以下配置(示例):
options {
directory "/var/named"; // 数据文件存放目录
dumpfile "/var/named/data/cache_dump.db";
statisticsfile "/var/named/data/named_stats.txt";
recursion yes; // 启用递归查询
allowquery { any; } // 允许所有客户端查询
};
2 创建正向区域文件
sudo vi /var/named/example.com.zone
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
ns1 IN A 192.168.1.100
ns2 IN A 192.168.1.101
www IN A 192.168.1.100
@ IN A 192.168.1.100 ; @表示根域
3 声明区域文件
在named.conf中添加:
zone "example.com" {
type master;
file "example.com.zone";
allowtransfer { 192.168.1.101; } # 允许同步的辅助DNS服务器
};
反向解析配置方法
1 创建反向区域文件
sudo vi /var/named/1.168.192.zone
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
100 IN PTR ns1.example.com.
101 IN PTR ns2.example.com.
102 IN PTR www.example.com.
2 声明反向区域
在named.conf中添加:

zone "1.168.192.inaddr.arpa" {
type master;
file "1.168.192.zone";
allowtransfer { 192.168.1.101; }
};
安全加固配置
1 限制递归查询范围
修改named.conf中的options:
options {
...
allowrecursion { 192.168.0.0/16; } # 仅允许内网递归查询
...
}
2 配置访问控制列表(ACL)
acl "trusted" {
address 192.168.1.0/24;
port 53;
};
acl "untrusted" {
any;
};
zone "example.com" {
...
allowtransfer { trusted; );
allowquery { trusted; untrusted; );
};
3 启用TSIG签名(高级安全)
include "/etc/named/tsig.key";
创建密钥文件:
sudo namedcompilekey K /etc/named/tsig.key o /etc/named/tsig.key f KSK exampleksk. sudo namedcompilekey K /etc/named/tsig.key o /etc/named/tsig.key f ZSK examplezsk.
服务控制与验证
1 启动服务并设置开机自启
# 检查配置文件语法 sudo namedcheckconf /etc/named.conf sudo namedcheckzone example.com.zone /var/named/example.com.zone # 启动服务 sudo systemctl start named sudo systemctl enable named
2 验证配置有效性
# 检查服务状态 systemctl status named # 使用dig命令测试解析 dig @localhost example.com dig @localhost x 192.168.1.100 # 测试反向解析
3 日志分析(/var/log/messages)
典型错误提示:

file not found:区域文件路径错误permission denied:目录权限不正确(需chown named:named /var/named)signature verification failed:TSIG配置错误
辅助DNS服务器配置(从服务器)
1 主服务器配置调整
在主服务器的named.conf中添加:
zone "example.com" {
...
notify yes; # 启用通知机制
alsonotify { 192.168.1.101; ); # 从服务器地址
};
2 从服务器配置步骤
# 创建空区域文件框架
sudo vi /var/named/example.com.zone
# 添加如下内容:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial号需小于主服务器初始值+2以上 ) ; Minimum TTL)
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/199507.html