在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