在Linux系统中配置DNS服务器是管理网络基础设施的关键步骤,确保域名解析的准确性和效率,以下为详细操作指南,基于广泛应用的BIND(Berkeley Internet Name Domain) 软件,适用于Ubuntu/CentOS等主流发行版。
准备工作
-
环境要求
- 操作系统:Ubuntu 20.04+/CentOS 7+
- 权限:
root
或sudo
权限 - 网络:静态IP地址(例:
168.1.10
) - 域名:准备管理的域名(例:
example.com
)
-
更新系统
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y
安装BIND
# CentOS/RHEL sudo yum install bind bind-utils -y
配置主DNS服务器
主配置文件:named.conf
编辑/etc/bind/named.conf
(Ubuntu)或/etc/named.conf
(CentOS):
options { directory "/var/cache/bind"; listen-on port 53 { any; }; # 允许所有IP访问 allow-query { any; }; # 允许所有查询 recursion no; # 关闭递归查询(增强安全) }; # 正向解析文件声明 zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; }; # 反向解析文件声明(针对IP段192.168.1.0/24) zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/zones/db.192.168.1"; };
创建正向解析文件
新建/etc/bind/zones/db.example.com
:
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025081501 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL ; 名称服务器记录 @ IN NS ns1.example.com. @ IN NS ns2.example.com. ; A记录(域名→IP) ns1 IN A 192.168.1.10 ns2 IN A 192.168.1.11 www IN A 192.168.1.100 mail IN A 192.168.1.200 ; CNAME记录(别名) web IN CNAME www.example.com.
创建反向解析文件
新建/etc/bind/zones/db.192.168.1
:
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025081501 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL ; 名称服务器记录 @ IN NS ns1.example.com. @ IN NS ns2.example.com. ; PTR记录(IP→域名) 10 IN PTR ns1.example.com. 11 IN PTR ns2.example.com. 100 IN PTR www.example.com. 200 IN PTR mail.example.com.
启动服务与验证
-
检查配置语法
sudo named-checkconf sudo named-checkzone example.com /etc/bind/zones/db.example.com
-
启动BIND并设置开机自启
# Ubuntu sudo systemctl restart bind9 sudo systemctl enable bind9 # CentOS sudo systemctl restart named sudo systemctl enable named
-
配置本地DNS解析
修改/etc/resolv.conf
:nameserver 192.168.1.10 # 指向本机DNS服务器
测试DNS解析
# 正向解析测试 nslookup www.example.com 192.168.1.10 # 反向解析测试 nslookup 192.168.1.100 192.168.1.10 # 使用dig工具 dig @192.168.1.10 example.com ANY
防火墙与安全加固
-
开放53端口
# Ubuntu (UFW) sudo ufw allow 53/tcp sudo ufw allow 53/udp # CentOS (firewalld) sudo firewall-cmd --add-service=dns --permanent sudo firewall-cmd --reload
-
关键安全措施
- 限制区域传输:在
named.conf
中添加:zone "example.com" { ... allow-transfer { 192.168.1.11; }; # 仅允许从服务器IP传输 };
- 禁用递归查询:
options
中设置recursion no;
- 定期更新BIND:
sudo apt upgrade bind9
或sudo yum update bind
- 限制区域传输:在
故障排除
- 服务启动失败:检查
/var/log/syslog
(Ubuntu)或/var/log/messages
(CentOS)。 - 解析超时:确认防火墙规则和
listen-on
配置允许客户端IP。 - 记录不生效:确保序列号(Serial)递增后重启BIND。
通过以上步骤,您已成功部署了一个具备正向/反向解析能力的DNS服务器,定期监控日志、更新软件并遵循最小权限原则,可保障服务稳定与安全,实际生产环境中建议部署至少两台DNS服务器实现冗余。
引用说明:本文配置基于BIND 9.16官方文档,参考资源包括:
- ISC BIND Administrator Reference Manual
- Ubuntu Server Guide: DNS Configuration
- CentOS Wiki: BIND Setup
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5940.html