实战指南:在CentOS 8上部署与配置BIND DNS权威服务器
1. 为什么要在CentOS 8上搭建DNS服务器想象一下这样的场景公司内部有几十台服务器每次新同事入职都要发一份IP地址对照表开发团队每次联调测试都要反复确认服务地址运维人员排查问题时要在记事本里翻找各种192.168.x.x的地址。这种时候一个私有DNS服务器就像给局域网装上了导航系统让所有设备都能通过像gitlab.corp.internal、jenkins.corp.internal这样易记的域名互相访问。BINDBerkeley Internet Name Domain作为最老牌的DNS软件至今仍占据着75%以上的权威DNS服务器市场份额。我在实际企业环境中部署过不下20次BIND服务发现它最突出的三个优势配置灵活度高支持各种复杂解析规则、日志系统完善便于排查解析问题、社区支持强大遇到问题基本都能找到解决方案。最新版的BIND 9.16还增加了响应策略区RPZ功能可以轻松实现内部域名黑名单。在CentOS 8上部署时要注意与CentOS 7相比有两个关键变化一是默认使用dnf替代yum作为包管理器二是防火墙工具firewalld的配置方式有所调整。不过别担心接下来我会用最直白的操作演示带你避开所有坑。2. 环境准备与BIND安装2.1 系统基础配置先来个必做的热身动作——更新系统。我遇到过三次因为没更新系统导致依赖冲突的情况所以请务必执行sudo dnf update -y sudo reboot接着检查SELinux状态很多配置失败都是因为它多管闲事sestatus如果显示Enforcing建议先切换为宽松模式sudo setenforce 0 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config2.2 安装BIND组件CentOS 8的AppStream仓库已经包含BIND 9.11运行这条命令安装全家桶sudo dnf install bind bind-utils -y这里解释下各包作用bind主服务程序bind-utils包含dig、nslookup等诊断工具bind-chroot可选安全沙箱环境安装完成后检查版本named -v # 预期输出BIND 9.11.26-RedHat-9.11.26-6.el83. 配置权威DNS区域3.1 主配置文件详解打开/etc/named.conf你会看到一个满屏都是符号的配置文件。别慌其实核心就三部分sudo vi /etc/named.conf找到options块修改为以下安全配置options { listen-on port 53 { any; }; 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 { 192.168.0.0/16; }; // 只允许内网查询 recursion no; // 关闭递归查询 dnssec-enable yes; dnssec-validation yes; };重点参数说明allow-query比旧教程中的any更安全限定只允许公司内网段查询recursion no防止服务器被当作开放解析器滥用dnssec开启DNS安全扩展3.2 创建正向解析区域在named.conf末尾添加你的私有域例如corp.internalzone corp.internal IN { type master; file db.corp.internal; allow-update { none; }; };然后创建区域文件sudo vi /var/named/db.corp.internal写入以下内容注意每行结尾的分号$TTL 1D IN SOA ns1.corp.internal. admin.corp.internal. ( 2024022001 ; serial 3H ; refresh 1H ; retry 1W ; expire 1D ) ; minimum IN NS ns1.corp.internal. IN MX 10 mail.corp.internal. ns1 IN A 192.168.1.100 mail IN A 192.168.1.200 gitlab IN A 192.168.1.50 jenkins IN A 192.168.1.51 wiki IN CNAME gitlab关键记录类型解释SOA起始授权记录包含序列号每次修改要1NS指明该域的DNS服务器MX邮件服务器地址数字10表示优先级A最基础的IP指向记录CNAME别名记录wiki指向gitlab4. 服务管理与排错4.1 启动与防火墙配置先检查配置文件语法sudo named-checkconf sudo named-checkzone corp.internal /var/named/db.corp.internal设置开机启动并立即运行sudo systemctl enable --now named开放防火墙端口CentOS 8需要同时放行TCP/UDPsudo firewall-cmd --permanent --add-servicedns sudo firewall-cmd --reload4.2 验证DNS解析在公司另一台电脑上测试将DNS服务器设为192.168.1.100nslookup gitlab.corp.internal 192.168.1.100 # 预期输出192.168.1.50 dig mx corp.internal 192.168.1.100 # 应看到mail.corp.internal的MX记录如果解析失败按这个顺序排查检查systemctl status named有无错误用journalctl -u named -f查看实时日志确认客户端/etc/resolv.conf是否配置正确5. 高级配置技巧5.1 配置DNS转发器当需要解析外部域名时可以设置转发到公共DNS。编辑/etc/named.confoptions { // ...原有配置... forwarders { 114.114.114.114; 223.5.5.5; }; forward only; };这会让BIND把非本地域名的查询转发给阿里云DNS。5.2 实现简单的负载均衡通过轮询机制分配请求webcluster IN A 192.168.1.101 webcluster IN A 192.168.1.102 webcluster IN A 192.168.1.103客户端查询时会随机返回其中一个IP实测能有效分散前端服务器压力。5.3 日志分析配置在named.conf中添加logging { channel query.log { file /var/named/log/query.log versions 5 size 20m; severity debug 3; }; category queries { query.log; }; };然后创建日志目录sudo mkdir /var/named/log sudo chown named:named /var/named/log通过分析日志可以清晰看到哪些客户端在频繁查询帮助识别异常行为。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467387.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!