在 CentOS 7 上安装 DNS 服务器通常是指安装BIND (Berkeley Internet Name Domain),即named 服务,以下是完整步骤:
sudo yum update -y sudo yum install -y bind bind-utils
bind:主程序包
bind-utils:提供dig、nslookup 等测试工具
可选安装bind-chroot 以增强安全性:
sudo yum install -y bind-chroot
若使用 chroot,配置文件路径会变为/var/named/chroot/etc/named.conf 等。
2. 配置主配置文件/etc/named.conf
备份原文件,然后编辑:
sudo cp /etc/named.conf /etc/named.conf.bak sudo vi /etc/named.conf
一个基本示例(仅监听本地局域网,允许局域网查询):
options {
listen-on port 53 { 127.0.0.1; 192.168.1.0/24; }; # 监听本机IP
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { 127.0.0.1; 192.168.1.0/24; }; # 允许查询的网段
recursion yes;
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";在/etc/named.rfc1912.zones 中新增区域声明,或直接写入named.conf。
添加一个正向区域example.com:
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};创建区域文件/var/named/example.com.zone:
sudo vi /var/named/example.com.zone示例:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025010101 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.10
www IN A 192.168.1.20修改属组:
sudo chgrp named /var/named/example.com.zone
sudo systemctl start named sudo systemctl enable named
放行 DNS 端口(TCP/UDP 53):
sudo firewall-cmd --permanent --add-service=dns sudo firewall-cmd --reload
在本地或客户端使用dig 测试:
dig @127.0.0.1 www.example.com dig -x 192.168.1.10 # 反向查询
7. 调整 SELinux(如遇到权限问题)
若区域文件无法读取,检查 SELinux 上下文:
sudo restorecon -Rv /var/named
或临时关闭 SELinux(不推荐生产环境):
sudo setenforce 0
端口被占用:检查是否有其他 DNS 服务(如 dnsmasq)运行:sudo netstat -tulnp | grep :53
日志查看:journalctl -u named -f 或/var/log/messages
chroot 环境:若安装了bind-chroot,所有路径需对应/var/named/chroot/ 下。
完成后,你的 CentOS 7 就拥有了基本的 DNS 服务器,根据需要进一步配置主从复制、DDNS 等功能。
文章摘自:https://idc.huochengrm.cn/dns/25799.html
评论