Linux DNS服务器之BIND安装配置
一、DNS工作流程
DNS工作流程:
客户端向本地DNS服务器发送请求查询www.example.com的主机地址
本地 DNS 服务器检查缓存 → 无记录,然后联系根服务器b.root-servers.net
根服务器返回.com TLD(Top Level Domain) 服务器地址d.gtld-servers.net
本地 DNS 服务器向 .com TLD 服务器询问:"example.com 的权威服务器是谁?"
.com TLD 服务器返回example.com的NS记录
本地 DNS 服务器向example.com 权威 DNS 服务器请求www主机的A记录
本地 DNS 服务器从example.com 权威 DNS 服务器获取到www.example.com的A记录
本地 DNS 服务器将结果返回给客户端→A记录(12.34.56.78),同时写入缓存方便下次查询。
二、DNS主要类型
在DNS服务器中,BIND支持多种区域类型(zone type),其中最常见的四种是:hint、forward、master 和 slave。它们各自有不同的用途和特点
hint:用于初始化DNS服务器的根区域(root zone)。它提供了根域名服务器的初始列表
master/primary:区域权威主服务器,存储区域数据的原始副本
slave/secondary:区域权威从服务器,从主服务器同步区域数据
forword:将特定域名的所有查询请求转发到其他DNS服务器(通常是上游DNS服务器)
三、安装配置
3.1、安装命令
CentOS/RedHat
yum install bind bind-utils -y
Debian/Ubuntu
apt install bind9 bind9utils -y
3.2、DNS服务配置
3.2.1、主配置文件: /etc/named.conf
options {
listen-on port 53 { 10.10.10.22; };
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; };
masterfile-format text ;
forward first;
forwarders {
8.8.8.8;
223.5.5.5;
};
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
3.2.2、区域声明文件:/etc/named.rfc1912.zones
// 正向区域声明
zone "example.com" IN {
type master;
file "named.example.com";
allow-update {none};
};
// 反向区域声明(10.10.10.0/24 网段)
zone "10.10.10.in-addr.arpa" IN {
type master;
file "named.example.arpa";
allow-update {none};
};
3.2.3、正向解析配置文件示例:
$TTL 1D
$ORIGIN example.com.
@ IN SOA dns1.example.com. admin.example.com. (
2025070501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1.example.com.
@ A 10.10.10.22
dns1 A 10.10.10.22
www A 10.10.10.25
ftp CNAME www
3.2.4、反向解析配置文件示例:
$TTL 1D
@ IN SOA dns1.example.com admin.example.com. (
2025070701 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1.example.com.
22 PTR dns1.example.com.
25 PTR www.example.com.
25 PTR ftp.example.com.
3.2.5、参数说明
$TTL(Time to Live):DNS缓存生存时间。
$ORIGIN:指定了未带终止点(无点结尾)的域名解析基准,所有未明确指定完整域名(FQDN)的记录都会附加该基准点
SOA(Start of Authority):起始授权机构,包含区域管理信息(序列号、刷新时间等)。
serial:系列号,随着区域每次更新而递增
refresh:刷新频率(1D表示1天刷新一次),指 slave 多久会主动检查 serial 的值,以便更新 zone file。
retry:重连时间间隔,指 slave 若是连接 master 失败,多久之后会再次尝试,1H表示1个小时后重连。
expire:指 slave 若是一直连接 master 失败,多久之后会放弃,1W表示1星期后放弃连接master
minimum:清除缓存最小时间间隔。
资源记录类型:
记录类型
含义
NS
指定域名的权威 DNS 服务器
A
IPv4 地址记录(域名 → IP)
AAAA
IPv6 地址记录(域名 → IP)
CNAME
别名记录
MX
邮件交换记录(优先级 + 邮件服务器)
PTR
反向解析记录(IP → 域名)
TXT
对域名进行标识和说明,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
四、相关命令
启动dns服务
systemctl start named
检查主配置文件(named.conf)语法
named-checkconf
检查正、反向解析配置文件
named-checkzone example.com /var/named/named.example.com
named-checkzone 10.10.10.in-addr.arpa /var/named/named.example.arpa
重新加载配置文件(不重启服务)
rndc reload
强制刷新缓存
rndc flush
客户端使用nc工具扫描dns服务器端口
nc -uvz -4 10.10.10.22 53
客户端使用socat工具测试
echo "test" | socat -v - udp4-connect:10.10.10.22:53
五、结果验证
可在DNS服务器上抓包:
tcpdump -i ens32 -nn 'udp port 53'
参考资料
[1]
BIND 9 Administrator Reference Manual: https://bind9.readthedocs.io/en/latest/
[2]
BIND 9 Configuration Reference: https://ftp.isc.org/isc/bind/9.9.4/doc/arm/Bv9ARM.ch06.html
————————————————
版权声明:本文为CSDN博主「chongjian9527」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chongjian1990/article/details/149284594