首先安装BIND服务,然后配置named.conf文件设置监听地址和区域,接着创建正向与反向区域文件定义解析记录,最后启动服务并用dig、nslookup等工具测试解析结果。

在Linux系统中配置DNS服务器,主要是通过安装和配置BIND(Berkeley Internet Name Domain)服务来实现。BIND是目前最广泛使用的DNS服务器软件,功能强大且稳定。以下是一份实用的配置指南,帮助你在CentOS或Ubuntu等主流Linux发行版中搭建基本的DNS服务器。
安装BIND服务
在开始配置前,先确保你的系统已安装BIND。不同发行版的安装命令略有差异:
- CentOS / RHEL / Rocky Linux: yum install bind bind-utils -y
- Ubuntu / Debian: apt-get install bind9 bind9utils dnsutils -y
安装完成后,主要配置文件位于:
– 主配置文件:/etc/named.conf(CentOS)或 /etc/bind/named.conf(Ubuntu)
– 区域文件通常存放在:/var/named/ 或 /etc/bind/zones/
修改主配置文件 named.conf
编辑主配置文件,定义DNS服务器的工作方式和区域信息。以CentOS为例:
打开 /etc/named.conf,修改监听地址和允许查询的客户端:
options { listen-on port 53 { any; }; // 监听所有IP的53端口 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 { any; }; // 允许所有客户端查询(生产环境建议限制IP) };
添加正向解析区域(例如:example.com):
zone "example.com" IN { type master; file "example.com.zone"; allow-update { none; }; };
添加反向解析区域(可选,用于IP转域名):
zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.rev"; allow-update { none; }; };
创建正向区域文件
在 /var/named/example.com.zone 中添加域名解析记录:
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025040501 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL <p>@ IN NS ns1.example.com. @ IN A 192.168.1.100 ns1 IN A 192.168.1.100 www IN A 192.168.1.101 mail IN A 192.168.1.102</p>
保存后设置正确权限:
- chown root:named /var/named/example.com.zone
- chmod 640 /var/named/example.com.zone
启动并测试DNS服务
启用并启动BIND服务:
- CentOS: systemctl enable named && systemctl start named
- Ubuntu: systemctl enable bind9 && systemctl start bind9
检查服务状态:
- systemctl status named
使用工具测试解析是否正常:
- dig www.example.com @localhost
- nslookup mail.example.com 192.168.1.100
- host ns1.example.com
如果返回正确的A记录,说明配置成功。
基本上就这些。只要注意配置文件语法、区域文件路径和SELinux/防火墙设置(如开启firewalld需放行dns服务),就能顺利运行一个基础DNS服务器。进阶配置可加入从服务器、DNSSEC或视图(view)等功能。
linux centos 防火墙 internet 端口 ubuntu 工具 ai dns 配置文件 linux系统 mail var linux ubuntu centos debian


