XYCOVO CONSOLE KURISU · WEB 渗透 / AI 辅助攻防 ONLINE
#022 · 2025-03-10✓ PASS

DNS 域名解析

在 RHEL 上搭建 BIND DNS 服务器,涵盖正向/反向解析、主从复制、子域委派及安全加固。
linuxdnsbind网络服务AUTHOR: KURISU

DNS(Domain Name System)是互联网的核心基础设施,负责域名到 IP 地址的映射。BIND 是 Linux 上最广泛使用的 DNS 服务器软件。


一、安装与基础配置

# 安装 BIND
dnf install -y bind bind-utils

# 启动服务
systemctl enable --now named

# 防火墙放行 DNS
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

主配置文件

# /etc/named.conf
options {
    listen-on port 53 { any; };          # 监听所有接口
    listen-on-v6 port 53 { any; };
    directory "/var/named";
    dump-file "/var/named/data/cache_dump.db";
    
    allow-query { any; };                # 允许所有来源查询
    allow-transfer { 192.168.1.20; };    # 仅允许从服务器传输
    
    recursion yes;                        # 启用递归查询
    dnssec-validation yes;               # DNSSEC 验证
};

区域配置

# /etc/named.rfc1912.zones
zone "example.com" IN {
    type master;
    file "forward.example.com";
    allow-update { none; };
};

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "reverse.example.com";
    allow-update { none; };
};

二、正向解析配置

# /var/named/forward.example.com
$TTL 86400
@   IN  SOA   ns1.example.com. admin.example.com. (
                2024031501  ; 序列号(YYYYMMDDNN)
                3600        ; 刷新间隔
                1800        ; 重试间隔
                604800      ; 过期时间
                86400       ; 最小 TTL
)

; 名称服务器
@       IN  NS      ns1.example.com.

; A 记录
ns1     IN  A       192.168.1.10
www     IN  A       192.168.1.100
mail    IN  A       192.168.1.101

; CNAME 别名
ftp     IN  CNAME   www.example.com.

; MX 邮件交换
@       IN  MX  10  mail.example.com.
# 设置权限
chown named:named /var/named/forward.example.com
chmod 640 /var/named/forward.example.com

# 检查配置
named-checkconf
named-checkzone example.com /var/named/forward.example.com

# 重载
systemctl reload named

三、反向解析配置

# /var/named/reverse.example.com
$TTL 86400
@   IN  SOA   ns1.example.com. admin.example.com. (
                2024031501
                3600
                1800
                604800
                86400
)

@       IN  NS      ns1.example.com.

10      IN  PTR     ns1.example.com.
100     IN  PTR     www.example.com.
101     IN  PTR     mail.example.com.

四、主从复制

主服务器

# /etc/named.conf 添加
allow-transfer { 192.168.1.20; };
notify yes;
also-notify { 192.168.1.20; };

从服务器

# /etc/named.conf
zone "example.com" IN {
    type slave;
    masters { 192.168.1.10; };
    file "slaves/forward.example.com";
};

五、测试验证

# 使用 dig 测试
dig @localhost www.example.com

# 反向查询
dig -x 192.168.1.100

# 查询 MX 记录
dig MX example.com

# 查询 NS 记录
dig NS example.com

# 区域传输测试
dig AXFR example.com @ns1.example.com

# 使用 nslookup
nslookup www.example.com 127.0.0.1

六、DNS 客户端配置

# /etc/resolv.conf
search example.com
nameserver 192.168.1.10

# 或使用 nmcli(持久化)
nmcli con mod eth0 ipv4.dns "192.168.1.10"
nmcli con up eth0

七、安全加固

# 限制递归查询
options {
    allow-recursion { 192.168.0.0/16; 127.0.0.1; };
    recursion yes;
};

# 隐藏版本号
options {
    version "Not Available";
};

# DNSSEC 验证
options {
    dnssec-validation yes;
};

# 限制查询速率
options {
    rate-limit {
        responses-per-second 10;
    };
};

← #021 安全课程综合笔记:HTTP 协议…#023 Nginx Web 服务器… →