Linux 中的 DNS 反向解析可以通过以下几种方式实现:
1.使用命令行工具查询反向解析
查询 IP 的反向解析 host 8.8.8.8 指定 DNS 服务器查询 host 8.8.8.8 8.8.8.8
基本查询 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 > 8.8.8.8 > exit 直接查询 nslookup 8.8.8.8
2.配置 DNS 反向解析区域
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 服务器中设置
编辑 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检查区域文件语法 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 解析器配置 cat /etc/resolv.conf 使用 systemd-resolve 查询 systemd-resolve 8.8.8.8 查看 DNS 缓存 rndc dumpdb -cache cat /var/named/data/cache_dump.db
修改 resolv.conf echo "nameserver 8.8.8.8" >> /etc/resolv.conf echo "search example.com" >> /etc/resolv.conf
监控 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
评论