编辑/etc/sysconfig/network/ifcfgeth0,添加DNS=servers,或改/etc/resol
SUSE 配置 DNS 服务器详细指南
前置准备
系统环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | SUSE Linux Enterprise Server(如 SLES 15)或 openSUSE(如 Leap 15.4) |
| 软件依赖 | BIND(Berkeley Internet Name Domain)DNS 服务器软件包 |
| 网络配置 | 静态 IP 地址(建议使用内网专用 IP 段,如 168.1.x/24) |
| 主机角色 | 专用 DNS 服务器或兼具其他服务的节点(需保证资源隔离) |
安装前检查
- 网络连通性:确保服务器能访问外网(用于下载软件包)或内网通信正常。
- 主机名配置:通过
hostnamectl设置合理的主机名(如dns1.example.com)。 - 防火墙策略:暂时关闭防火墙或允许 TCP/UDP 53 端口(后续会重新配置)。
安装 BIND DNS 服务
更新软件仓库
sudo zypper refresh
安装 BIND
sudo zypper install bind bindutils
验证安装
%ignore_pre_3%配置文件结构解析
BIND 的核心配置文件为 /etc/named.conf,其典型结构如下:
| 文件路径 | 用途说明 |
|---|---|
/etc/named.conf |
主配置文件,定义全局参数和区域文件引用 |
/var/lib/named/ |
存储区域文件(Zone Files) |
/etc/sysconfig/named |
启动参数配置(如 STARTUP_OPTIONS) |
/var/log/named/ |
日志文件(如 named.run) |
配置主配置文件 /etc/named.conf
基础配置示例
// 全局配置
options {
directory "/var/lib/named"; // 区域文件存放路径
dumpfile "/var/log/named/dump.db"; // 运行状态转储文件
statisticsfile "/var/log/named/stats.txt"; // 统计信息文件
recursion yes; // 启用递归查询
allowquerycache { any; }; // 允许所有客户端查询缓存
forwarders { // 转发器(可选)
8.8.8.8;
8.8.4.4;
};
};
// 日志配置
logging {
channel default_log {
file "/var/log/named/named.run" versions 3 size 5m;
severity info;
printtime yes;
printseverity yes;
printcategory yes;
};
category default { default_log; };
};
关键参数说明
| 参数 | 作用描述 |
|---|---|
recursion |
是否启用递归查询(客户端直接请求时触发) |
allowquerycache |
允许哪些客户端使用查询缓存 |
forwarders |
指定上游 DNS 服务器(转发模式) |
listenon |
监听网络接口(如 { any; } 或 { 192.168.1.1; }) |
配置正向解析区域
定义区域文件
在 /etc/named.conf 中添加以下内容:
zone "example.com" IN {
type master;
file "example.com.zone"; // 对应区域文件路径
allowupdate { none; }; // 禁止动态更新
};
创建区域文件 /var/lib/named/example.com.zone
$TTL 86400 ; 默认生存时间(秒)
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial Number
3600 ; Refresh(辅助 DNS 刷新间隔)
1800 ; Retry(辅助 DNS 重试间隔)
1209600 ; Expire(数据过期时间)
86400 ) ; Minimum TTL
@ IN NS ns1.example.com. ; 命名服务器
@ IN NS ns2.example.com. ; 冗余命名服务器
ns1 IN A 192.168.1.1 ; 主 DNS IP
ns2 IN A 192.168.1.2 ; 备用 DNS IP
www IN A 192.168.1.100 ; Web 服务器 IP
mail IN A 192.168.1.200 ; 邮件服务器 IP
关键记录说明
| 记录类型 | 作用描述 |
|---|---|
SOA |
起始授权记录,包含区域管理信息 |
NS |
命名服务器记录 |
A |
主机名到 IP 的映射 |
MX |
邮件交换记录(未在示例中,需手动添加) |
配置反向解析区域(可选)
定义反向区域
在 /etc/named.conf 中添加:

zone "1.168.192.inaddr.arpa" IN {
type master;
file "1.168.192.zone";
allowupdate { none; };
};
创建反向区域文件 /var/lib/named/1.168.192.zone
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial Number
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
1 IN PTR ns1.example.com. ; 反向解析记录
2 IN PTR ns2.example.com.
100 IN PTR www.example.com.
200 IN PTR mail.example.com.
启动与测试服务
检查配置文件语法
sudo namedcheckconf /etc/named.conf # 检查主配置文件 sudo namedcheckzone example.com.zone /var/lib/named/example.com.zone # 检查正向区域文件
启动 BIND 服务
sudo systemctl enable now named # 设置开机自启并立即启动 sudo systemctl status named # 查看服务状态
测试解析功能
正向解析测试
dig @192.168.1.1 www.example.com # 查询 www.example.com 的 A 记录 # 示例输出: # ;; ANSWER SECTION: # www.example.com. 86400 IN A 192.168.1.100
反向解析测试
dig x 192.168.1.100 @192.168.1.1 # 查询 IP 对应的 PTR 记录 # 示例输出: # ;; ANSWER SECTION: # 100.1.168.192.inaddr.arpa. 86400 IN PTR www.example.com.
安全加固与优化
限制递归查询
编辑 /etc/named.conf,修改或添加:
options {
...
allowrecursion { 192.168.1.0/24; }; # 仅允许内网递归查询
};
配置访问控制列表(ACL)
acl "internal" { 192.168.1.0/24; }; # 定义内网 ACL
acl "external" { any; }; # 定义外网 ACL
zone "example.com" IN {
...
allowtransfer { internal; external; }; # 允许内网和外网同步区域文件
};
启用 DNSSEC(可选)
在区域文件中添加签名密钥:
$INCLUDE /var/lib/named/keys.conf # 引用密钥文件
创建 /var/lib/named/keys.conf:

key "examplekey" {
algorithm hmacmd5;
secret "mysecretkey1234567890"; # 需保持机密性
};
在区域配置中启用签名:
zone "example.com" IN {
...
inlinesigning yes; # 启用实时签名
keys { "examplekey"; }; # 引用密钥名称
};
日志监控与故障排查
查看日志文件
tail f /var/log/named/named.run # 实时查看日志输出
常见错误及解决方案
| 问题描述 | 解决方法 |
|---|---|
no NS records for domain |
检查区域文件中是否定义了 NS 记录 |
refused: not authoritative |
确保客户端查询的域名与区域文件中的 $ORIGIN 匹配 |
server failure |
检查 SOA 记录的序列号(Serial Number)是否递增 |
connection refused |
确保防火墙已开放 UDP/TCP 53 端口,且 listenon 配置正确 |
相关问题与解答
问题1:如何验证 DNS 服务器是否已生效?
解答:
- 本地测试:在 DNS 服务器上使用
dig或nslookup查询自身管理的域名。dig @127.0.0.1 www.example.com # 查询本机 DNS 服务
- 客户端测试:在其他设备上修改
/etc/resolv.conf,将nameserver指向 DNS 服务器 IP,然后执行查询。nslookup www.example.com 192.168.1.1 # 指定 DNS 服务器查询
- 外部验证:使用在线工具(如
https://dnschecker.org/)检查公网解析状态。
问题2:如何配置辅助(从)DNS 服务器?
解答:

- 主服务器配置:在主 DNS 的
named.conf中允许区域传输。zone "example.com" IN { ... allowtransfer { 192.168.1.2; }; # 允许辅助服务器 IP 同步数据 }; - 辅助服务器配置:在辅助服务器的
named.conf中定义区域为slave类型。zone "example.com" IN { type slave; # 声明为从服务器 masters { 192.168.1.1; }; # 主服务器 IP file "slaves/example.com.zone"; # 本地存储路径(可自动同步) }; - 启动同步:辅助服务器启动后会自动从主服务器下载区域数据,可通过日志确认
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/204966.html