DNS(域名系统)是互联网的”电话簿”,将域名(如 www.example.com)转换为IP地址(如 0.2.1),在Linux上搭建DNS服务器可提升网络管理效率、增强内网安全性,并减少对公共DNS的依赖,本文以BIND9(Berkeley Internet Name Domain)为例,提供详细搭建指南,适用于Ubuntu/CentOS等主流发行版。
环境准备
-
系统要求
- Linux服务器(Ubuntu 20.04+/CentOS 7+)
- 静态IP地址(
168.1.10) sudo权限用户- 开放防火墙53端口(TCP/UDP)
-
更新系统
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y
安装BIND9
# CentOS/RHEL sudo yum install bind bind-utils -y
配置主DNS服务器
修改主配置文件 named.conf
编辑 /etc/bind/named.conf(Ubuntu)或 /etc/named.conf(CentOS):
sudo nano /etc/bind/named.conf
在文件末尾添加:
// 定义内网域名
zone "example.com" {
type master;
file "/etc/bind/zones/example.com.db"; // 正向解析文件路径
};
// 反向解析(将IP转域名)
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/rev.1.168.192.db"; // 反向解析文件路径
};
创建正向解析文件
新建目录并创建文件:
sudo mkdir /etc/bind/zones
sudo nano /etc/bind/zones/example.com.db
```根据需求修改):
```conf
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025010101 ; 序列号 (格式:年月日+版本)
3600 ; 刷新时间
1800 ; 重试时间
604800 ; 过期时间
86400 ; 缓存TTL
)
; 指定DNS服务器
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.10 ; DNS服务器IP
; 添加其他记录
www IN A 192.168.1.100
mail IN A 192.168.1.200
创建反向解析文件
sudo nano /etc/bind/zones/rev.1.168.192.db ```示例: ```conf $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. (2025010101 3600 1800 604800 86400) @ IN NS ns1.example.com. 10 IN PTR ns1.example.com. ; IP 192.168.1.10 指向ns1 100 IN PTR www.example.com. ; 192.168.1.100 指向www 200 IN PTR mail.example.com. ; 192.168.1.200 指向mail
启动服务并测试
检查配置语法
sudo named-checkconf # 检查主配置 sudo named-checkzone example.com /etc/bind/zones/example.com.db # 检查正向解析
启动BIND服务
# Ubuntu sudo systemctl restart bind9 # CentOS sudo systemctl restart named
使用dig测试解析
dig @192.168.1.10 www.example.com # 应返回192.168.1.100 dig -x 192.168.1.100 @192.168.1.10 # 反向解析应返回www.example.com
防火墙与安全加固
开放53端口
# Ubuntu (UFW) sudo ufw allow 53 # CentOS (firewalld) sudo firewall-cmd --add-port=53/tcp --permanent sudo firewall-cmd --add-port=53/udp --permanent sudo firewall-cmd --reload
安全建议
- 限制访问:在
named.conf的options部分添加:allow-query { 192.168.1.0/24; localhost; }; // 仅允许内网和本机查询 - 禁用递归查询(非必要场景):
recursion no;
- 定期更新BIND:
sudo apt upgrade bind9或sudo yum update bind
客户端配置
在局域网设备的网络设置中,将DNS服务器地址指向 168.1.10。
验证:
nslookup www.example.com # 应返回配置的IP
通过BIND9搭建的DNS服务器已可稳定运行,此方案适用于企业内网、开发测试环境或家庭实验室,定期备份配置文件(/etc/bind)并监控日志(/var/log/syslog 或 journalctl -u bind9)可确保服务可靠性。
引用说明:
- BIND官方文档:https://www.isc.org/bind/
- Linux man pages:
man named,man named.conf- 网络安全参考:NIST SP 800-81 (Secure DNS部署指南)
本文基于Ubuntu 22.04/CentOS 8验证,配置适用于大多数Linux发行版。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7840.html