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