DNS服务器不工作怎么办

在Ubuntu系统上配置DNS服务器是管理网络基础设施的关键步骤,它能将域名转换为IP地址,确保用户快速访问网站,本文以BIND9(Berkeley Internet Name Domain)为例,提供专业、安全的配置指南,所有步骤均通过Ubuntu官方文档及行业最佳实践验证。

  • 权威DNS:管理特定域名的解析记录(如example.com)。
  • 递归DNS:为客户端查询外部域名(如Google公共DNS)。
  • BIND9:开源DNS软件,支持权威和递归解析,被全球90%的DNS系统采用。

在Ubuntu安装BIND9

sudo apt update
sudo apt install bind9 bind9utils bind9-doc
  • 关键组件
    • bind9:主程序
    • bind9utils:诊断工具(如named-checkconf
    • bind9-doc:官方文档

配置权威DNS服务器(以域example.com为例)

步骤1:主配置文件

编辑/etc/bind/named.conf.options

options {
    directory "/var/cache/bind";
    listen-on { any; };        # 监听所有IP
    allow-query { any; };      # 允许所有客户端查询
    recursion no;              # 关闭递归(仅权威解析)
    dnssec-validation auto;    # 启用DNSSEC安全验证
};

步骤2:定义区域文件

创建区域配置文件/etc/bind/named.conf.local

zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";  # 区域文件路径
};

步骤3:创建区域数据库文件

新建/etc/bind/db.example.com

;
; 区域文件: example.com
;
$TTL 86400                      ; 默认缓存时间(24小时)
@       IN      SOA     ns1.example.com. admin.example.com. (
                          2025081501  ; 序列号 (格式: YYYYMMDDNN)
                          3600        ; 刷新时间
                          1800        ; 重试时间
                          604800      ; 过期时间
                          86400       ; 最小TTL
                          )
;
; 名称服务器记录
@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.
; A记录 (域名 -> IP)
ns1     IN      A       192.168.1.10
ns2     IN      A       192.168.1.11
www     IN      A       192.168.1.100
mail    IN      A       192.168.1.200
; CNAME记录 (别名)
web     IN      CNAME   www.example.com.

步骤4:验证配置

sudo named-checkconf          # 检查主配置
sudo named-checkzone example.com /etc/bind/db.example.com  # 检查区域文件

配置递归DNS服务器

编辑/etc/bind/named.conf.options

options {
    recursion yes;            # 启用递归
    allow-recursion { any; }; # 允许所有客户端递归查询
    forwarders {
        8.8.8.8;             # 上游DNS(如Google DNS)
        1.1.1.1;             # Cloudflare DNS
    };
};

启动服务与防火墙

sudo systemctl restart bind9
sudo ufw allow 53/tcp         # 允许TCP(区域传输)
sudo ufw allow 53/udp         # 允许UDP(常规查询)

测试DNS解析

  1. 本地测试
    dig @localhost www.example.com
  2. 外部测试(确保服务器公网IP开放53端口):
    dig @your_server_ip example.com

安全加固最佳实践

  1. 限制区域传输:在named.conf.local中添加:
    zone "example.com" {
        allow-transfer { 192.168.1.11; }; # 仅允许从服务器IP传输
    };
  2. 禁用版本信息:在named.conf.options中增加:
    version "not disclosed";
  3. 定期更新
    sudo apt upgrade bind9

故障排除

  • 查看日志tail -f /var/log/syslog | grep named
  • 检测配置sudo named-checkconf
  • 测试递归dig +trace ubuntu.com

通过BIND9在Ubuntu部署DNS服务器,既可实现域名的高效解析,又能通过DNSSEC、访问控制等机制保障安全,定期审查日志、更新软件是维护稳定性的关键,对于企业环境,建议部署主从架构(Master-Slave)以实现高可用。

引用说明
本文配置参考自 ISC BIND 9 官方文档 及 Ubuntu Server Guide,安全实践遵循 CIS BIND Benchmark。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9781.html

(0)
酷番叔酷番叔
上一篇 2天前
下一篇 2天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信