欢迎光临
我们一直在努力

DNS服务器大揭秘:Linux与BIND的完美结合

前言

DNS 是互联网的电话本,负责把人类好记的域名,转换成机器识别的 IP 地址。在企业内网环境,我们经常搭建 BIND 服务器,实现内网域名解析。本文从原理到实操,讲解 DNS 基础、权威服务器配置、完整 BIND 实验,同时记录实验中常见报错。


一、DNS 服务介绍

1. 什么是 DNS

DNS(Domain Name System,域名系统),作用域名 <–> IP 地址相互解析。

  • 人类:记忆域名 lizihan.cloud

  • 计算机:识别 IP 地址 192.168.1.10
    如果没有 DNS,访问网站只能输入枯燥的 IP 数字。

2.DNS 查询两种方式

  • 递归查询:客户端向本地 DNS 服务器发请求,服务器全权帮客户端拿到最终结果,直接返回给用户。家庭路由器、内网 DNS 服务器给主机提供的就是递归查询。

  • 迭代查询:DNS 服务器之间互相查询。本地 DNS 向根、顶级域、权威服务器一步步询问,拿到答案。

  • 3.DNS 服务器分类

    服务器类型作用
    根域名服务器 全球 13 组,DNS 最顶层,返回顶级域服务器地址
    顶级域服务器 处理.com .cn .cloud这类后缀
    权威名称服务器 负责保管某一个域名(如lizihan.cloud)真正解析记录,保存 zone 区域文件,返回该域名的真实解析结果
    缓存 / 本地 DNS 服务器 不维护域名记录,只做查询缓存,例如公共 DNS [114.114.114.114](114.114.114.114)

    4.DNS 记录类型

    • A记录:域名 → IPv4 地址

    • AAAA记录:域名 → IPv6 地址

    • CNAME:别名记录

    • MX:邮件交换记录,必须携带优先级数字,本次实验踩坑点

    • NS:域名的域名服务器记录

    • PTR:反向解析记录,IP 反向解析成域名

    💡重点:权威名称服务器,就是真正持有这个域名 zone 区域文件的服务器,拥有该域名的解析数据。


    二、配置权威名称服务器(BIND)

    实验环境:CentOS7,软件包:bind bind‑utils
    bind 主程序名:named

    2.1 核心配置文件说明

  • /etc/named.conf 主配置文件

    • 设置监听端口、允许查询的网段、定义 zone 区域

    • 校验语法命令:named‑checkconf

  • /var/named/xxx.zone 区域数据库文件(zone 文件)

    • 保存域名所有 A、MX、NS 解析记录,权威服务器的核心数据文件

    • 校验语法命令:named‑checkzone 域名 区域文件路径

  • 服务管理

  • #安装bind
    yum install -y bind bind-utils

    #启动开机自启
    systemctl start named
    systemctl enable named

    #查看状态
    systemctl status named

    2.2 /etc/named.conf 关键配置片段

    options {
    listen-on port 53 { any; }; #53端口监听,允许所有网卡
    listen-on-v6 port 53 { ::1; };
    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 { any; }; #允许所有客户端来查询DNS

    recursion yes;
    };

    #定义正向zone区域,告诉bind lizihan.cloud这个域名的解析文件在哪里
    zone "lizihan.cloud" IN {
    type master; #master代表这台是主权威服务器
    file "lizihan.cloud.zone"; #区域文件,相对路径基于directory /var/named
    };

    type master:代表本服务器是这个域的主权威名称服务器,维护原始 zone 数据。

    2.3 正向区域文件模板 /var/named/lizihan.cloud.zone

    ⚠️坑点 1:域名结尾的.,完整 FQDN 域名末尾必须带点,否则 bind 自动拼接本域名
    ⚠️坑点 2:MX 记录,MX 后面第一个参数必须写优先级数字,直接写域名就会报 not a valid number
    ⚠️坑点 3:文件权限,属组必须为named,否则服务读取文件失败

    $TTL 300
    @ IN SOA dns.lizihan.cloud. admin.lizihan.cloud. (
    2026080501 ;序列号,修改记录要递增
    3600 ;刷新时间
    1800 ;重试
    86400 ;过期
    300 ) ;最小TTL

    IN NS dns.lizihan.cloud.

    dns IN A 192.168.10.10
    www IN A 192.168.10.11
    # MX记录:MX 【优先级数字】 邮件服务器域名
    @ IN MX 10 mail.lizihan.cloud.
    mail IN A 192.168.10.12

    修改权限,bind 才能读取文件:

    chown root:named /var/named/lizihan.cloud.zone
    chmod 640 /var/named/lizihan.cloud.zone


    三、BIND 实验完整流程 & 排错

    3.1 完整操作步骤

  • 安装 bind 软件包
  • yum install -y bind bind-utils

  • 修改 /etc/named.conf,修改监听与 allow‑query,增加 zone 定义

  • 复制模板,创建正向 zone 文件,写入 A NS MX 记录

  • cp /var/named/named.localhost /var/named/lizihan.cloud.zone
    vim /var/named/lizihan.cloud.zone

  • 修改 zone 文件权限属组

  • 校验配置文件语法(必做!实验最重要两步)

  • #校验主配置文件named.conf
    named-checkconf

    #校验区域zone文件,格式 named-checkzone 域名 完整文件路径
    named-checkzone lizihan.cloud /var/named/lizihan.cloud.zone

    ✅输出 OK,代表语法没问题;输出报错就根据行号修改 zone 文件。

  • 重启 named 服务
  • systemctl restart named

  • 测试解析,使用nslookup或者dig
  • dig www.lizihan.cloud @192.168.10.10
    nslookup www.lizihan.cloud 192.168.10.10

    3.2 实验高频报错整理(实操踩坑)

    报错 1:named‑checkzone只输入域名,直接打印一大段 usage

    原因:命令缺少第二个参数(zone 文件路径)
    正确写法:named‑checkzone lizihan.cloud /var/named/lizihan.cloud.zone

    报错 2:not a valid number MX 记录行报错

    near 'mail.lizihan.cloud.': not a valid number

    原因:MX 记录漏写优先级数字。
    ❌错误:@ IN MX mail.lizihan.cloud.
    ✅正确:@ IN MX 10 mail.lizihan.cloud.

    报错 3:permission denied 权限拒绝

    zone 文件属组不是named,bind 进程读不到文件
    修复:chown root:named /var/named/lizihan.cloud.zone

    报错 4:解析不到记录,但是校验全部 OK

    检查防火墙 53 端口放行;检查named.conf的allow‑query {any;};

    3.3 实验验证成功效果

    执行named‑checkzone返回 OK;dig 命令可以拿到对应的 A 记录 IP 地址,代表权威 DNS 服务器实验完成。


    四、小结

  • DNS 核心就是域名与 IP 地址映射,权威名称服务器保存域名真正的 zone 解析库。

  • BIND 核心两个校验命令一定要记牢:

    • named‑checkconf:校验主配置/etc/named.conf

    • named‑checkzone 域名 zone文件路径:校验区域解析库,必须两个参数

  • zone 文件两大致命坑:完整域名末尾.、MX 记录不能省略优先级数字,也是考试、实验最高频出错点。

  • 修改 zone 解析记录,SOA 的序列号要 + 1,否则从服务器不会同步更新。

  • 赞(0)
    未经允许不得转载:171主机测评 » DNS服务器大揭秘:Linux与BIND的完美结合
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址