Linux的DNS反向解析如何配置?

HCRM技术_小炮 DNS 2026-04-15 12 0

Linux 中的 DNS 反向解析可以通过以下几种方式实现:

1.使用命令行工具查询反向解析

host 命令

查询 IP 的反向解析
host 8.8.8.8
指定 DNS 服务器查询
host 8.8.8.8 8.8.8.8

dig 命令(推荐)

基本查询
dig -x 8.8.8.8
简短格式
dig +short -x 8.8.8.8
指定 DNS 服务器
dig @8.8.8.8 -x 8.8.8.8
完整详细信息
dig +noall +answer -x 8.8.8.8

nslookup 命令

交互模式
nslookup
> 8.8.8.8
> exit
直接查询
nslookup 8.8.8.8

2.配置 DNS 反向解析区域

在 BIND(named)中配置反向解析

1、编辑 named.conf

编辑主配置文件
vim /etc/named.conf

2、添加反向区域配置

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

3、创建反向区域文件

vim /var/named/192.168.1.zone

4、反向区域文件内容

$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
    2024010101 ; serial
    3600       ; refresh
    1800       ; retry
    604800     ; expire
    86400      ; minimum TTL
)
; 名称服务器记录
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
; PTR 记录(反向记录)
1 IN PTR ns1.example.com.
2 IN PTR webserver.example.com.
3 IN PTR mail.example.com.
10 IN PTR client1.example.com.

3.在 DHCP 服务器中设置

ISC DHCP 服务器配置

编辑 dhcpd.conf
vim /etc/dhcp/dhcpd.conf

添加反向解析声明:

subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8;
    
    # 动态 DNS 更新
    ddns-update-style interim;
    ddns-domainname "example.com";
    
    # 主机声明,包含正向和反向记录
    host webserver {
        hardware ethernet 00:11:22:33:44:55;
        fixed-address 192.168.1.10;
        option host-name "webserver";
        ddns-hostname "webserver";
    }
}

4.DNSmasq 配置反向解析

编辑 dnsmasq.conf
vim /etc/dnsmasq.conf

添加配置:

启用 DHCP 租约文件
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
添加本地解析
address=/example.com/192.168.1.1
ptr-record=1.1.168.192.in-addr.arpa,router.example.com

5.测试反向解析

批量测试脚本

#!/bin/bash
测试多个 IP 的反向解析
for ip in 8.8.8.8 1.1.1.1 192.168.1.1
do
    echo -n "$ip: "
    host $ip | awk '{print $NF}'
done

验证 DNS 配置

检查区域文件语法
named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.zone
检查配置文件语法
named-checkconf /etc/named.conf
重启 DNS 服务
systemctl restart named

6.常见问题解决

检查 DNS 配置

查看 DNS 解析器配置
cat /etc/resolv.conf
使用 systemd-resolve 查询
systemd-resolve 8.8.8.8
查看 DNS 缓存
rndc dumpdb -cache
cat /var/named/data/cache_dump.db

临时添加 DNS 服务器

修改 resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "search example.com" >> /etc/resolv.conf

使用 tcpdump 调试

监控 DNS 查询
tcpdump -i any port 53 -n

7.自动化脚本示例

#!/bin/bash
自动为子网创建反向解析记录
SUBNET="192.168.1"
NETWORK="${SUBNET}.0"
NETMASK="255.255.255.0"
生成反向区域文件
cat > /var/named/${SUBNET}.zone << EOF
\$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
    $(date +%Y%m%d)01 ; serial
    3600       ; refresh
    1800       ; retry
    604800     ; expire
    86400      ; minimum TTL
)
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
; 静态 PTR 记录
1 IN PTR gateway.example.com.
10 IN PTR server1.example.com.
11 IN PTR server2.example.com.
EOF
echo "反向区域文件已创建:/var/named/${SUBNET}.zone"

通过以上方法,你可以在 Linux 系统中配置和查询 DNS 反向解析,关键是要确保 PTR 记录正确配置在对应的反向 DNS 区域中。

文章摘自:https://idc.huochengrm.cn/dns/24762.html

评论