Rocky Linux 9.5 BIND 9.16 部署:3步配置主从DNS与防火墙放行53端口 Rocky Linux 9.5 企业级BIND 9.16主从DNS架构部署指南1. 企业级DNS架构设计考量在现代化IT基础设施中DNS服务作为网络基础架构的核心组件其高可用性和安全性直接影响整个业务的连续性。Rocky Linux 9.5作为RHEL兼容的企业级操作系统配合BIND 9.16这一久经考验的DNS服务软件能够构建出满足企业严苛要求的域名解析系统。典型企业DNS架构应具备以下特征主从同步机制确保数据冗余完善的防火墙策略控制访问详细的日志记录和监控规范的域名管理流程定期备份和灾难恢复方案主从架构相比单节点部署具有明显优势故障自动转移当主节点不可用时从节点可继续提供服务负载分担查询请求可在主从服务器间分配数据安全多副本存储防止单点数据丢失2. 基础环境准备2.1 系统要求部署前需确保两台Rocky Linux 9.5服务器满足以下条件项目主DNS服务器从DNS服务器主机名ns1.example.comns2.example.comIP地址192.168.100.10192.168.100.20最小内存2GB2GB存储空间10GB10GB网络连接稳定局域网稳定局域网2.2 软件包安装在两台服务器上执行以下命令安装BIND及相关工具# 更新系统并安装必要软件 sudo dnf update -y sudo dnf install bind bind-utils -y验证安装版本named -v # 应显示类似BIND 9.16.23-RedHat-9.16.23-11.el93. 主DNS服务器配置3.1 基础配置文件调整编辑主配置文件/etc/named.confsudo vim /etc/named.conf关键配置修改点options { listen-on port 53 { any; }; // 监听所有接口 listen-on-v6 port 53 { ::1; }; // IPv6本地环回 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; recursing-file /var/named/data/named.recursing; allow-query { any; }; // 允许所有查询 allow-transfer { 192.168.100.20; }; // 仅允许从服务器传输 recursion no; // 禁用递归查询(公共DNS应开启) // DNSSEC配置 dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; // 日志配置 logging { channel default_debug { file data/named.run; severity dynamic; }; }; };3.2 区域文件定义在/etc/named.rfc1912.zones末尾添加正向和反向解析区域sudo vim /etc/named.rfc1912.zones添加内容示例// 正向解析区域 zone example.com IN { type master; file example.com.zone; allow-update { none; }; allow-transfer { 192.168.100.20; }; notify yes; // 启用区域变更通知 }; // 反向解析区域 zone 100.168.192.in-addr.arpa IN { type master; file 192.168.100.zone; allow-update { none; }; allow-transfer { 192.168.100.20; }; };3.3 创建区域数据文件正向解析文件sudo cp -p /var/named/named.localhost /var/named/example.com.zone sudo vim /var/named/example.com.zone示例内容$TTL 1D IN SOA ns1.example.com. admin.example.com. ( 2024060101 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns1.example.com. IN NS ns2.example.com. IN MX 10 mail.example.com. ns1 IN A 192.168.100.10 ns2 IN A 192.168.100.20 www IN A 192.168.100.100 mail IN A 192.168.100.101反向解析文件sudo cp -p /var/named/named.loopback /var/named/192.168.100.zone sudo vim /var/named/192.168.100.zone示例内容$TTL 1D IN SOA ns1.example.com. admin.example.com. ( 2024060101 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns1.example.com. IN NS ns2.example.com. 10 IN PTR ns1.example.com. 20 IN PTR ns2.example.com. 100 IN PTR www.example.com. 101 IN PTR mail.example.com.3.4 权限与SELinux配置# 修改文件属组 sudo chgrp named /var/named/example.com.zone sudo chgrp named /var/named/192.168.100.zone # 设置SELinux上下文 sudo restorecon -Rv /var/named4. 从DNS服务器配置4.1 基础配置文件调整编辑/etc/named.conf内容与主服务器类似但需修改以下参数options { allow-transfer { none; }; // 从服务器不允许区域传输 }; // 区域定义改为slave类型 zone example.com IN { type slave; file slaves/example.com.zone; masters { 192.168.100.10; }; }; zone 100.168.192.in-addr.arpa IN { type slave; file slaves/192.168.100.zone; masters { 192.168.100.10; }; };4.2 创建slaves目录sudo mkdir /var/named/slaves sudo chown named:named /var/named/slaves sudo restorecon -Rv /var/named/slaves5. 防火墙与SELinux配置5.1 firewalld规则配置在两台服务器上执行# 放行DNS服务 sudo firewall-cmd --permanent --add-servicedns sudo firewall-cmd --reload # 验证规则 sudo firewall-cmd --list-services | grep dns5.2 SELinux策略调整# 允许named写入slaves目录 sudo setsebool -P named_write_master_zones 16. 服务启动与验证6.1 启动BIND服务在主从服务器上分别执行sudo systemctl enable --now named sudo systemctl status named6.2 主从同步验证在主服务器上修改serial号后观察从服务器日志# 主服务器上修改serial后重启服务 sudo systemctl restart named # 从服务器上查看日志 sudo journalctl -u named -f # 应看到类似transfer of example.com/IN from 192.168.100.10#53: Transfer completed6.3 解析测试使用dig和nslookup工具测试# 正向解析测试 dig 192.168.100.10 www.example.com dig 192.168.100.20 www.example.com # 反向解析测试 dig 192.168.100.10 -x 192.168.100.100 dig 192.168.100.20 -x 192.168.100.100 # 主从切换测试(模拟主节点故障) sudo systemctl stop named # 在主服务器上执行 dig 192.168.100.20 www.example.com # 应仍能解析7. 高级配置与优化7.1 日志增强配置在/etc/named.conf中添加详细日志logging { channel query_log { file /var/named/log/query.log versions 5 size 10m; severity info; print-time yes; }; category queries { query_log; }; };创建日志目录并设置权限sudo mkdir /var/named/log sudo chown named:named /var/named/log sudo restorecon -Rv /var/named/log7.2 性能调优参数在options部分添加options { // ...其他配置... max-cache-size 256M; // 缓存大小 max-cache-ttl 3600; // 最大缓存时间 min-cache-ttl 300; // 最小缓存时间 max-ncache-ttl 3600; // 否定缓存TTL cleaning-interval 60; // 缓存清理间隔(分钟) lame-ttl 600; // 无效服务器缓存时间 max-clients-per-query 10; // 每查询最大客户端数 recursive-clients 1000; // 递归客户端数限制 };7.3 自动化监控方案配置systemd服务监控sudo vim /etc/systemd/system/named-monitor.service添加内容[Unit] DescriptionBIND DNS Server Monitor Afternamed.service [Service] Typesimple ExecStart/usr/bin/bash -c while true; do if ! systemctl is-active --quiet named; then systemctl restart named; logger -t named-monitor Restarted BIND service; fi; sleep 60; done Restartalways [Install] WantedBymulti-user.target启用监控服务sudo systemctl enable --now named-monitor8. 日常维护与故障排查8.1 关键维护命令命令用途rndc status查看服务状态rndc reload重载配置不重启rndc flush清空缓存named-checkconf检查主配置named-checkzone检查区域文件8.2 常见问题解决问题1主从同步失败检查主服务器allow-transfer设置验证防火墙是否放行TCP 53端口查看/var/log/messages中的错误信息问题2解析超时# 检查网络连通性 ping 192.168.100.10 telnet 192.168.100.10 53 # 验证服务监听状态 sudo ss -tulnp | grep named问题3SELinux阻止操作# 查看SELinux日志 sudo ausearch -m avc -c named # 临时设置为permissive模式 sudo setenforce 08.3 备份策略示例创建每日自动备份脚本sudo vim /usr/local/bin/named-backup.sh脚本内容#!/bin/bash BACKUP_DIR/backup/dns/$(date %Y%m%d) mkdir -p $BACKUP_DIR # 备份配置文件 cp -a /etc/named.* $BACKUP_DIR/ # 备份区域文件 cp -a /var/named/* $BACKUP_DIR/ # 打包并删除7天前备份 tar czf /backup/dns-$(date %Y%m%d).tar.gz $BACKUP_DIR find /backup -name dns-*.tar.gz -mtime 7 -delete设置定时任务sudo crontab -e # 添加以下内容 0 2 * * * /usr/local/bin/named-backup.sh

相关新闻

最新新闻

地道Pandas代码的5个核心实践:向量化、方法链与索引思维

地道Pandas代码的5个核心实践:向量化、方法链与索引思维

1. 项目概述:为什么“地道的Pandas代码”不是玄学,而是可训练的职业习惯 你有没有写过这样的代码:用 for 循环遍历DataFrame的每一行,再手动拼接新列;或者为了筛选数据,先 reset_index() 、再 loc[] …

2026/7/7 21:48:31
5个地道Pandas技巧:提升性能、可维护性与工程健壮性

5个地道Pandas技巧:提升性能、可维护性与工程健壮性

1. 项目概述:为什么“地道的Pandas代码”不是风格问题,而是工程性命题你写完一段Pandas代码,跑通了,结果输出正确——这只能叫“能用”,离“好用”还差三道关:别人读不懂、自己三个月后改不动、数据量翻十倍…

2026/7/7 21:48:31
Seaborn统计可视化协议:从数据思维重构图表表达

Seaborn统计可视化协议:从数据思维重构图表表达

1. 这不是又一篇“Hello World”式图表教程——为什么Seaborn值得你花完整一个下午认真学我带过三届数据科学方向的实习生,每届第一周都会布置同一项任务:用Python画出鸢尾花(Iris)数据集的散点图矩阵。结果总有一半人卡在Matplot…

2026/7/7 21:48:31
AI裁员潮来了:大厂一边晒增长一边挥刀砍岗位

AI裁员潮来了:大厂一边晒增长一边挥刀砍岗位

“最残酷的变化,不是AI突然抢走了饭碗,而是公司终于发现:过去需要一排人完成的流程,现在可以被一个人带着一堆工具压缩掉。” 一、这波裁员,最刺眼的不是“裁”,而是“赚着钱也裁” 2026年的科技圈&#xf…

2026/7/7 21:48:31
Seaborn可视化思维:从画图工具到数据对话界面

Seaborn可视化思维:从画图工具到数据对话界面

1. 项目概述:这不是又一个“画图教程”,而是帮你把数据真正看懂的起点 你打开Jupyter Notebook,import seaborn as sns,照着文档跑通了第一个distplot,心里却隐隐发虚:图是出来了,可这堆峰、这根…

2026/7/7 21:48:31
Kindle Comic Converter终极指南:5分钟让你的漫画在电子阅读器上完美显示

Kindle Comic Converter终极指南:5分钟让你的漫画在电子阅读器上完美显示

Kindle Comic Converter终极指南:5分钟让你的漫画在电子阅读器上完美显示 【免费下载链接】kcc KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers. 项目地址: https://gitcode.com/gh_mirrors/kc/kcc 还在为漫画在Kin…

2026/7/7 21:43:31

月新闻