CentOS系统下DNS服务器搭建完整指南
DNS服务器
DNS(Domain Name System)是互联网的核心服务之一,负责将域名解析为IP地址,在CentOS系统上搭建DNS服务器可满足内网环境、私有网络或测试场景需求,本文以CentOS 8为例,使用BIND(Berkeley Internet Name Domain)软件实现DNS服务搭建。
准备工作:检查系统环境
检查项 | 要求 |
---|---|
操作系统 | CentOS 7或以上版本(推荐CentOS 8) |
网络配置 | 静态IP地址,关闭NetworkManager服务(可选) |
防火墙规则 | 开放TCP/UDP 53端口 |
SELinux | 设置为宽松模式或禁用(建议保持启用但允许BIND访问) |
执行命令
# 查看BIND是否已安装 rpm qa | grep bind # 更新系统(确保软件包最新) dnf update y
安装BIND DNS服务
安装软件包
dnf install y bind bindutils bindchroot
bind
: 核心DNS服务程序bindutils
: 包含dig
、nslookup
等工具bindchroot
: 提供Chroot隔离环境提升安全性
启动与自启设置
# 启动BIND服务 systemctl start named # 设置开机自启 systemctl enable named
配置BIND主配置文件named.conf
主配置文件位于/etc/named.conf
,需修改以下关键部分:
基础配置
options { listenon port 53 { any; }; # 监听所有接口53端口 directory "/var/named"; # 区域文件存储目录 dumpfile "/var/named/data/cache_dump.db"; statisticsfile "/var/named/data/named_stats.txt"; recursion yes; # 启用递归查询 allowquery { any; }; # 允许所有客户端查询 };
安全加固(可选)
// 限制非可信网络的递归查询 allowquerycache { 192.168.0.0/16; }
创建正向解析区域
正向解析将域名转换为IP地址,例如example.com → 192.168.1.10
。
定义区域
在named.conf
中添加:
zone "example.com" IN { type master; file "example.com.zone"; # 对应区域文件 allowupdate { none; }; # 禁止动态更新 };
创建区域文件
cd /var/named vim example.com.zone ```示例: ```plaintext $TTL 86400 # 默认生存时间(秒) @ IN SOA ns1.example.com. admin.example.com. ( 2025070901 ; Serial Number 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL IN NS ns1.example.com. IN NS ns2.example.com. ns1 IN A 192.168.1.10 ns2 IN A 192.168.1.11 www IN A 192.168.1.100
创建反向解析区域
反向解析将IP地址转换为域名,例如168.1.10 → ns1.example.com
。
定义区域
在named.conf
中添加:
zone "1.168.192.inaddr.arpa" IN { type master; file "1.168.192.zone"; };
创建区域文件
cd /var/named vim 1.168.192.zone ```示例: ```plaintext $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025070901 3600 1800 604800 86400 ) IN NS ns1.example.com. IN NS ns2.example.com. 10 IN PTR ns1.example.com. 11 IN PTR ns2.example.com. 100 IN PTR www.example.com.
防火墙与SELinux配置
防火墙放行53端口
firewallcmd permanent addport=53/tcp firewallcmd permanent addport=53/udp firewallcmd reload
SELinux策略
若SELinux处于enforcing
模式:
setsebool P named_write_master_zones on # 允许修改区域文件
测试与验证
检查配置文件语法
namedcheckconf /etc/named.conf namedcheckzone example.com.zone /var/named/example.com.zone
使用工具验证
# 正向解析测试 dig @localhost www.example.com # 反向解析测试 dig @localhost x 192.168.1.100 # 使用nslookup交互式测试 nslookup www.example.com localhost
常见问题与解答
Q1: 防火墙已开放53端口但仍无法访问怎么办?
A1:检查SELinux策略是否限制BIND服务,执行getsebool a | grep named
查看相关布尔值,必要时设置named_write_master_zones
为on
,确认BIND服务状态(systemctl status named
)。
Q2: 如何新增一个子域名(如mail.example.com
)?
A2:在example.com.zone
文件中添加记录:
mail IN A 192.168.1.200
保存后重启BIND服务(systemctl restart named
),即可通过dig mail.example.com
验证。
通过以上步骤,您已在CentOS系统成功搭建基础DNS服务器,根据实际需求,可进一步配置DHCPD集成、负载均衡或高可用