菜鸟科技网

linux搭建dns服务器详细教程

Linux搭建DNS服务器详细教程

准备工作

在开始搭建之前,请确保已完成以下基础设置:

linux搭建dns服务器详细教程-图1
(图片来源网络,侵删)
  1. 静态IP地址配置:为服务器分配固定的内网或外网IP(如168.92.10),避免因DHCP动态分配导致服务中断;
  2. 关闭防火墙与SELinux:临时禁用防火墙和安全增强模块,防止干扰DNS端口通信;
  3. 更新软件源缓存:执行yum clean all并检查可用仓库,确保能正常下载安装包。

安装BIND软件包

BIND(Berkeley Internet Name Domain)是主流的开源DNS服务程序,以CentOS/RHEL系统为例:

yum -y install bind bind-chroot      # 安装主程序及安全加固模块

注意bind-chroot会将服务限制在虚拟根目录中运行,提升安全性,其他发行版如Ubuntu可使用apt-get install isc-dhcp-server等替代方案。

安装完成后,默认配置文件位于/etc/named.conf,区域文件存储路径为/var/named


配置主配置文件(named.conf)

  1. 备份原始文件
    cp /etc/named.conf /etc/named.conf.backup
  2. 编辑核心参数
    使用vim修改/etc/named.conf,关键项如下: | 参数 | 示例值 | 作用说明 | |---------------------|---------------------------------|------------------------------| | listen-on port 53 | { any; } | 监听所有网络接口的53号端口 | | allow-query | { any; } | 允许所有客户端发起递归查询 | | recursion yes | — | 启用递归解析功能 | | dnssec-enable yes | — | 支持DNSSEC安全扩展 | | directory | "/var/named" | 定义工作目录路径 |

保存后通过命令验证语法正确性:

linux搭建dns服务器详细教程-图2
(图片来源网络,侵删)
named-checkconf -z /etc/named.conf

若提示无错误则继续下一步。


定义正向与反向解析区域

声明区域(编辑/etc/named.rfc1912.zones

添加示例域名example.com及其对应的IP段:

zone "example.com" IN {
    type master;          # 主DNS模式
    file "example.com.zone"; # 关联的区域文件名
    allow-update { none; }; # 禁止动态更新
};
zone "1.168.192.in-addr.arpa" IN { # 反向解析网段192.168.1.0/24
    type master;
    file "192.168.1.arpa";
    allow-update { none; };
};
编写正向解析文件(创建/var/named/example.com.zone
$TTL 86400         # TTL设置为24小时
@ SOA example.com. admin.example.com. (
    2025080901     # 序列号(建议日期+当天修订次数)
    3H             # 刷新间隔3小时
    15M            # 重试间隔15分钟
    1W             # 过期时间1周
    1D             # 最小生存周期1天
)
@ NS ns1.example.com.   # 指定本机的NS记录
@ MX 10 mail.example.com. # 邮件交换记录优先级为10
www A 192.168.1.100      # www子域名指向IPv4地址
ftp CNAME www           # ftp别名指向www主机
配置反向解析文件(创建/var/named/192.168.1.arpa
$TTL 86400
@ SOA example.com. admin.example.com. (
    2025080901
    3H
    15M
    1W
    1D
)
@ NS ns1.example.com.
248 PTR ns1.example.com.   # IP反查主机名
249 PTR webserver.example.com.

权限设置:执行chmod 755 /var/named/并更改所有者为named:named


启动与测试服务

  1. 启动BIND服务
    systemctl start named         # 立即启动
    systemctl enable named        # 加入开机自启项
  2. 验证配置有效性
    分别检查正向/反向区域文件是否存在语法错误:
    named-checkzone example.com /var/named/example.com.zone
    named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.arpa
  3. 功能测试工具
    • nslookup: nslookup www.example.com应返回正确IP;
    • dig: dig +short example.com直接显示结果;
    • ping: ping www.example.com若能正常响应则说明解析成功。

高级优化与安全建议

功能需求 实现方式
负载均衡 在A记录中配置多个IP地址轮询
缓存加速 调整options中的statistics-file监控性能指标
访问控制 替换allow-query { any; }为特定网段(如allow-query { 192.168.1.0/24; }
日志分析 查看/var/log/messages或自定义日志路径
IPv6支持 新增AAAA记录类型并启用listen-on-v6参数

常见问题与解答

Q1: 为什么客户端无法解析新添加的域名?
A: 可能原因包括:①未重启named服务使配置生效;②防火墙阻止了UDP/TCP的53端口;③区域文件中存在语法错误导致加载失败,建议依次执行systemctl restart named, firewall-cmd --add-port=53/udp, named-checkzone进行排查。

linux搭建dns服务器详细教程-图3
(图片来源网络,侵删)

Q2: 如何实现主从DNS同步?
A: 在主服务器上修改named.conf添加also-notify指令通知从服务器更新数据;从服务器侧通过zone语句指向主服务器IP,并设置type slave; masters { IP地址; };完成同步配置,需确保两台机器时间

分享:
扫描分享到社交APP
上一篇
下一篇