下载链接

前置概念

正向解析

正向解析是最常见的 DNS 查询方式:通过域名查询 IP 地址。

例如:

你访问网站 www.hello.com,操作系统就会问 DNS 服务器:“www.hello.com 对应的 IP 是什么?”

DNS 服务器返回:127.0.0.1 或其他公网 IP。

这就是正向解析,对应你配置的 zone 文件中类似这样的记录:

www IN A 127.0.0.1

反向解析

反向解析是通过 IP 地址查找域名

例如

你有一个 IP:127.0.0.1,你想知道这个 IP 对应的域名(如果有)。

这是靠一个特殊的域名来完成,比如: 1.0.0.127.in-addr.arpa

DNS 服务器会查找这个反向 zone 文件,比如:

1 IN PTR www.hello.com.

DNS记录介绍

核心记录类型

记录类型 作用 示例
A 将域名指向 IPv4 地址 example.com A 192.0.2.1
AAAA 将域名指向 IPv6 地址 example.com AAAA 2606:4700::1
CNAME 域名别名(指向另一个域名) www.example.com CNAME example.com
MX 邮件服务器地址 example.com MX 10 mail.example.com
TXT 文本信息(如验证、SPF 记录等) example.com TXT "v=spf1 mx ~all"

其他重要记录

记录类型 作用 示例
NS 指定域名的权威 DNS 服务器 example.com NS ns1.cloudflare.com
SOA 域名的起始授权记录(管理信息) (包含主 DNS 服务器、管理员邮箱等)
PTR 反向解析(IP → 域名) 1.2.0.192.in-addr.arpa PTR example.com
SRV 定义服务地址(如 VoIP、LDAP) _sip._tcp.example.com SRV 10 60 5060 sipserver.example.com
CAA 指定允许签发 SSL 证书的机构 example.com CAA 0 issue "letsencrypt.org"

Windows

从链接中下载对应的版本,解压用,用管理员权限打开 BINDInstall.exe 安装程序。输入用户名和密码以完成安装

配置 BIND DNS 服务器

此处以hello.com为例,我们将hello.com指向127.0.0.1

配置文件结构

BIND 的核心配置文件是 named.conf。它指定了 DNS 服务器的操作选项、区域和其他相关设置。以下是配置步骤

创建 named.conf 文件

在安装目录下(例如 C:\\Program Files\\ISC BIND 9\\etc),创建一个名为 named.conf 的文件,内容如下:

options {
    directory "C:/Program Files/ISC BIND 9/etc";    # 设置工作目录
    listen-on port 53 { 127.0.0.1; };              # 仅监听本机地址
    allow-query { any; };                          # 允许任何人查询
};

zone "hello.com" IN {
    type master;
    file "hello.com.zone";
};
  • options 部分设置了工作目录、监听的端口和查询权限。
  • zone 部分配置了你要管理的 DNS 区域文件,这里是 hello.com,可以根据自己的需求替换为其他域名。

创建 example.com.zone 文件

C:/Program Files/ISC BIND 9/etc 目录下创建一个名为 hello.com.zone 的文件,用于指定该域的资源记录。文件内容如下:

$TTL 86400
@   IN  SOA     ns.hello.com. admin.hello.com. (
        2025041701 ; Serial
        3600       ; Refresh
        1800       ; Retry
        604800     ; Expire
        86400 )    ; Minimum TTL

    IN  NS      ns.hello.com.
ns  IN  A       127.0.0.1
@   IN  A       127.0.0.1
www IN  A       127.0.0.1
  • $TTL 86400 设置了缓存的最大存活时间(TTL),单位是秒。
  • SOA 记录指定了权威名称服务器和管理员的联系方式。
  • NS 记录指定了域名的名称服务器(NS)。
  • A 记录指定了主机名的 IP 地址。

检查配置文件

在bin目录下以管理员身份启动cmd,使用一下工具判断是否配置文件导入正确

named-checkconf

启动服务

net start named

关闭就是 net stop named

image.png

测试 DNS 解析

在本机 IPV4 协议中指定使用dns服务器为127.0.0.1

image.png

在 Windows 上,你可以使用 nslookup 工具来测试 DNS 解析是否正常:

nslookup www.hello.com

image.png

配置 named.root

文件下载

在新版本的BIND会自己获取 named.root, 故此处是否配置这个文件,效果都是一样的,为了说明,依旧阐述过程。

named.root 中配置以下内容:

zone "." {
    type hint;
    file "C:/Program Files/ISC BIND 9/etc/named.root";
};

可以把 named.root 想象成DNS 系统的“电话簿目录”,它告诉你的 DNS 服务器:“如果不知道某·个域名该问谁,就先问这些根服务器!”

配置 rndc.key

配置 rndc.key 的主要作用是 安全地远程管理 BIND (DNS 服务器),相当于为 DNS 管理员提供了一个加密的“遥控器”。

在bin目录下以管理员身份启动cmd

rndc-confgen -a

会自动生成一个rndc.key在etc目录下

name.conf
include "C:/Program Files/ISC BIND 9/etc/rndc.key";

options {
    directory "C:/Program Files/ISC BIND 9/etc";
    allow-query { any; };
    recursion yes;
};

controls {
    inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndc-key"; };
};

zone "hello.com" IN {
    type master;
    file "hello.com.zone";
};

配置反向解析

多数邮件服务器会检查发件域的反向解析记录。若发送方的IP没有对应的PTR记录,或记录与域名不匹配,邮件可能被拒收或标记为垃圾邮件。

named.conf

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "127.0.0.zone";  # 这里指定使用 127.0.0.zone 文件
};

127.0.0.zone :

$TTL 86400
@   IN  SOA   ns1.hello.com. admin.hello.com. (
    2023041701 ; Serial
    3600       ; Refresh
    1800       ; Retry
    1209600    ; Expire
    86400 )    ; Minimum TTL

@   IN  NS    ns1.hello.com.
1   IN  PTR   hello.com.

image.png

linux

此处使用ubuntu来作为例子。

安装

sudo apt install bind9 bind9utils bind9-doc -y

配置

在 Ubuntu(Debian 系列)中,BIND 的主配置文件为:

/etc/bind/named.conf

这个文件 不会直接配置 zone,而是通过 include 引用其他文件:

include "/etc/bind/named.conf.options";   // 全局选项
include "/etc/bind/named.conf.local";     // 本地 zone 定义
include "/etc/bind/named.conf.default-zones"; // 默认的根域/反向域配置

所以它就像是一个入口,把不同职责分发到不同文件中。各个文件职责如下:

文件路径 作用 是否建议修改
/etc/bind/named.conf 主配置入口 ❌ 不直接修改
/etc/bind/named.conf.options DNS 服务器的全局配置,例如转发器、监听接口 ✅ 可配置
/etc/bind/named.conf.local 添加自定义的 zone(比如你要解析的 example.com ✅ 推荐放这
/etc/bind/named.conf.default-zones 默认的 root hints、localhost、反向解析模板 ❌ 不建议修改

同样,我们在 /etc/bind/named.conf.local 中编辑添加

zone "hello.com" {
    type master;
    file "/etc/bind/zones/db.hello.com";
};

创建zone文件

sudo nano /etc/bind/zones/db.hello.com

写上以下内容

$TTL    604800
@       IN      SOA     ns.hello.com. admin.hello.com. (
                        1         ; Serial
                        604800    ; Refresh
                        86400     ; Retry
                        2419200   ; Expire
                        604800 )  ; Negative Cache TTL

        IN      NS      ns.hello.com.
ns      IN      A       127.0.0.1
@       IN      A       127.0.0.1
www     IN      A       127.0.0.1

服务指令

启动 BIND 服务

sudo systemctl start bind9

停止 BIND 服务

sudo systemctl stop bind

重启

sudo systemctl restart bind9