在银河麒麟与Ubuntu上构建企业级DNS服务:Bind9实战与Apache集成
1. 为什么企业需要自建DNS服务在日常办公环境中我们经常遇到这样的场景开发团队需要访问测试环境的web服务运维人员要管理大量服务器普通员工要记住各种内部系统的IP地址。这些IP地址不仅难记一旦服务器迁移还需要全员通知。自建DNS服务就像给企业内部网络装上了导航系统通过简单的域名就能访问复杂的基础设施。我在实际部署中发现使用Bind9搭建的DNS服务器特别适合混合Linux环境。比如某次客户要求同时在银河麒麟v10服务器和Ubuntu客户端上部署Bind9展现出完美的兼容性。相比商业解决方案开源方案不仅零成本还能根据企业需求深度定制。2. 银河麒麟与Ubuntu环境准备2.1 系统基础配置检查在开始前建议先在两台机器上执行以下命令确保环境干净# 银河麒麟服务器端 sudo kylin-verify -a sudo systemctl stop firewalld # Ubuntu客户端 sudo apt update sudo ufw disable特别注意银河麒麟的SELinux状态建议临时设置为permissive模式sudo setenforce 0 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config2.2 网络拓扑规划建议根据我的踩坑经验推荐采用这种网络结构DNS服务器银河麒麟v10 (192.168.1.10)Web服务器同一台银河麒麟节省资源客户端Ubuntu 20.04 (192.168.1.20-192.168.1.100)测试域名internal.company.com避免使用.test等保留域名提示实际部署时建议先在虚拟机环境测试完整流程再迁移到生产环境3. Bind9核心配置详解3.1 安装与基础配置在银河麒麟上安装Bind9需要特别注意软件源配置sudo apt install bind9 bind9utils -y关键配置文件作用说明named.conf.options全局参数监听端口、访问控制等named.conf.local域名区域声明文件db.domain具体的域名解析记录我习惯的配置目录结构/etc/bind/ ├── named.conf ├── named.conf.options ├── named.conf.local ├── zones/ │ ├── db.internal.company.com │ └── db.192.168.13.2 生产级配置优化这是经过多个项目验证的优化配置模板# named.conf.options options { directory /var/cache/bind; listen-on port 53 { 192.168.1.10; }; allow-query { 192.168.1.0/24; }; recursion yes; allow-recursion { 192.168.1.0/24; }; dnssec-validation auto; auth-nxdomain no; version Not Available; rate-limit { responses-per-second 10; }; };安全加固建议sudo chown -R root:bind /etc/bind sudo find /etc/bind -type f -exec chmod 640 {} \; sudo find /etc/bind -type d -exec chmod 750 {} \;4. 深度解决systemd-resolved冲突4.1 问题本质分析Ubuntu客户端常见的解析失败90%是因为systemd-resolved服务与Bind9抢占53端口。通过这个命令可以直观看到冲突sudo netstat -tulnp | grep 534.2 永久解决方案不同于简单的服务停止我推荐更彻底的处置方式完全卸载systemd-resolved客户端sudo apt purge systemd-resolved -y sudo rm /etc/resolv.conf创建静态resolv.confecho nameserver 192.168.1.10 | sudo tee /etc/resolv.conf echo search internal.company.com | sudo tee -a /etc/resolv.conf sudo chattr i /etc/resolv.conf # 防止被覆盖5. Apache与DNS的深度集成5.1 虚拟主机高级配置这是我的生产环境虚拟主机配置模板VirtualHost *:80 ServerName hr.internal.company.com ServerAdmin webmastercompany.com DocumentRoot /var/www/hr/public Directory /var/www/hr Options -Indexes FollowSymLinks AllowOverride All Require all granted Header always set X-Content-Type-Options nosniff /Directory ErrorLog /var/log/apache2/hr_error.log CustomLog /var/log/apache2/hr_access.log combined /VirtualHost5.2 自动化部署技巧使用脚本批量创建站点目录和权限#!/bin/bash DOMAIN$1 sudo mkdir -p /var/www/${DOMAIN}/{public,logs,backup} sudo chown -R www-data:www-data /var/www/${DOMAIN} sudo chmod -R 750 /var/www/${DOMAIN}6. 企业级运维实践6.1 监控与日志分析Bind9日志配置建议# named.conf.options 追加 logging { channel query.log { file /var/log/bind/query.log versions 5 size 20m; severity debug 3; print-time yes; }; category queries { query.log; }; };日志轮转配置/etc/logrotate.d/bind/var/log/bind/*.log { daily missingok rotate 7 compress delaycompress notifempty create 640 bind bind sharedscripts postrotate /usr/lib/bind/rndc reload /dev/null endscript }6.2 灾备与高可用方案简单的主从DNS架构配置示例主服务器银河麒麟named.conf.local追加zone internal.company.com { type master; file /etc/bind/zones/db.internal.company.com; allow-transfer { 192.168.1.11; }; # 从服务器IP };从服务器另一台银河麒麟配置zone internal.company.com { type slave; file /var/cache/bind/db.internal.company.com; masters { 192.168.1.10; }; };7. 安全加固进阶指南7.1 ACL访问控制定义网络分组# named.conf.options acl trusted { 192.168.1.0/24; 10.8.0.0/24; # VPN网段 }; options { allow-query { trusted; }; allow-recursion { trusted; }; };7.2 TSIG密钥认证生成事务签名密钥dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST master-slave配置示例key master-slave { algorithm hmac-sha256; secret 生成的密钥内容; }; server 192.168.1.11 { keys { master-slave; }; };8. 常见故障排查手册8.1 诊断命令合集# 检查配置文件语法 sudo named-checkconf # 测试区域文件 sudo named-checkzone internal.company.com /etc/bind/zones/db.internal.company.com # 查询测试指定DNS服务器 dig 192.168.1.10 hr.internal.company.com trace # 查看查询日志 sudo tail -f /var/log/bind/query.log8.2 典型问题解决方案问题现象能ping通IP但无法解析域名排查步骤检查客户端resolv.conf配置确认防火墙未拦截53端口测试nslookup是否返回正确结果查看Bind9服务状态和错误日志问题现象Web访问显示Apache默认页解决方案确认a2ensite已启用站点配置检查ServerName是否拼写正确重启Apache前先测试配置语法sudo apachectl configtest
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2514320.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!