注意我搭建的DNS是在局域网没啥安全问题完全是自己机器方便访问
1. 安装bind9
# 更新包
apt update -y
# 安装
apt install bind9 -y
# 本次安装的版本(BIND 9.18.28-1~deb12u2-Debian (Extended Support Version) <id:>)
named -v
# 进入软件配置文件存放目录
cd /etc/bind
# 查看主配置文件
cat named.conf
主要导入了三个文件
named.conf.options
:配置全局 DNS 服务器选项,比如转发器、访问控制等。named.conf.local
:配置本地的 DNS 区域和域名解析记录。named.conf.default-zones
:配置默认的区域和必要的 DNS 设置,如根服务器和本地回环地址。
修改named.conf.options
文件。下面是我的配置文件
options {
listen-on port 53 { 192.168.153.11; };
directory "/var/cache/bind";
dump-file "/var/cache/bind/cache_dump.db";
statistics-file "/var/cache/bind/named_stats.txt";
memstatistics-file "/var/cache/bind/named_mem_stats.txt";
recursing-file "/var/cache/bind/named.recursing";
secroots-file "/var/cache/bind/named.secroots";
allow-query { any; };
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
192.168.153.2;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
recursion yes;
dnssec-validation no;
//listen-on-v6 { any; };
};
以下是解释我的配置文件选项的意思
1. listen-on port 53 { 192.168.153.11; };(修改为你当前主机的ip)
这行指示 BIND 只在 IP 地址
192.168.153.11
上监听 DNS 请求(默认端口是 53)。port 53
表示 BIND 监听的是 DNS 的标准端口 53。通过此设置,BIND 仅响应来自该 IP 地址的请求,而不监听其他接口上的请求。
2. directory "/var/cache/bind";
该配置指定了 BIND 存放运行时文件的目录,比如缓存文件、数据库文件等。
BIND 会在
/var/cache/bind
目录下存储缓存、区域文件等。
3. dump-file "/var/cache/bind/cache_dump.db";
这是一个调试选项,用于指定缓存的转储文件位置。BIND 在特定的调试条件下会将缓存数据转储到该文件中。
对于大多数生产环境来说,这个选项通常不需要启用,除非进行故障排查。
4. statistics-file "/var/cache/bind/named_stats.txt";
该选项指定一个文件,用于保存 BIND 服务器的统计信息。
通过
rndc stats
命令,BIND 可以将运行时的统计数据写入这个文件,便于后续的性能分析和监控。
5. memstatistics-file "/var/cache/bind/named_mem_stats.txt";
类似于
statistics-file
,这个选项指定一个文件,用于存储 BIND 内存使用的统计信息。通过
rndc memory
命令,可以获取 BIND 进程的内存使用情况,存储在此文件中。
6. recursing-file "/var/cache/bind/named.recursing";
该配置指定了一个文件,用于存储递归查询的状态信息。
递归查询是指 BIND 为客户请求执行的 DNS 查询过程。这个文件通常用于调试和故障排查。
7. secroots-file "/var/cache/bind/named.secroots";
用于指定存储安全根(Security Root)密钥的文件。
安全根密钥是 DNSSEC(DNS Security Extensions)使用的密钥,用于确保 DNS 响应的完整性和安全性。
8. allow-query { any; };
这个配置项控制哪些 IP 地址可以向你的 DNS 服务器发起查询。
{ any; }
表示允许任何来源的查询请求。通常可以根据需要限制来源 IP(比如只允许局域网 IP 查询)。
9. forwarders { 192.168.153.2; };(这个我配置的是我的网关)
这部分配置指定了一个或多个 DNS 转发器的 IP 地址。
转发器用于将无法解析的 DNS 查询请求转发给其他 DNS 服务器(通常是上游的 DNS 服务器,如 ISP 提供的 DNS)。
192.168.153.2
是一个示例的转发器 IP 地址。你可以在这里配置你自己的转发服务器的 IP 地址。
10. recursion yes;
该选项启用递归查询功能,表示 BIND 将充当递归解析器,即它会在无法直接解析某个查询时,继续向其他 DNS 服务器发起查询,直到找到答案。
如果你希望 BIND 仅提供非递归的权威答案(即只解析本地配置的域名),则可以将其设置为
no
。
11. dnssec-validation no;
该选项禁用 DNSSEC 验证功能。
DNSSEC(Domain Name System Security Extensions)是一种增加 DNS 安全性的协议,通过公钥加密技术防止 DNS 欺骗攻击。禁用 DNSSEC 可能意味着不验证 DNS 响应的完整性,这在某些环境中可以提高性能,但也会降低安全性。
如果你需要使用 DNSSEC,应该将该选项设置为
yes
。
12. listen-on-v6 { any; };
这一行是被注释掉的,意味着它没有生效。这个配置项用于启用 IPv6 支持,如果启用,它会让 BIND 监听所有可用的 IPv6 地址。你可以取消注释并配置该项以启用 IPv6。
# 检测配置,没有报错就可以
named-checkconf
2. 配置区域文件
# 编辑默认的区域文件
nano named.conf.default-zones
# 在末尾添加以下配置。
zone "host.com" IN {
type master;
file "host.com.zone";
allow-update { 192.168.153.11; };
};
zone "od.com" IN {
type master;
file "od.com.zone";
allow-update { 192.168.153.11; };
};
以下是解释我的配置文件选项的意思
1. zone "host.com" IN { ... };
zone "host.com"
:定义了一个名为host.com
的 DNS 区域。这表示 DNS 服务器将为该域名处理所有相关的 DNS 查询。host.com
是一个域名,通常用于提供该域名的解析服务。IN
:表示互联网(Internet)类,几乎所有 DNS 区域都是IN
(即 Internet)类。整体来说,这一行的意思是:该 DNS 服务器将作为
host.com
的 权威服务器,负责解析与host.com
相关的所有 DNS 请求。
2. type master;
type master
:该指令表明host.com
是一个 主(master)区域。主区域(master zone)意味着这个 DNS 服务器存储并管理该区域的所有 DNS 记录(例如 A 记录、MX 记录等)。
通常,主区域是由该 DNS 服务器直接管理的,而从区域(slave zone)则是从主服务器同步的副本。
3. file "host.com.zone";(这个和配置的directory有关系拼接的路径是directory+host.com.zone)
file "host.com.zone"
:这表示该区域的 DNS 记录存储在文件host.com.zone
中。该文件通常包含
host.com
域的所有 DNS 记录,如 A 记录、CNAME 记录、MX 记录等。这个文件将会被 BIND 服务器读取和解析,以便为客户端提供解析服务。文件
host.com.zone
是一个区域文件,它描述了该域的具体 DNS 记录内容。
4. allow-update { 192.168.153.11; };
allow-update
:该配置指定了哪些 IP 地址或网络可以通过 动态更新(Dynamic Update)来修改host.com
区域的 DNS 记录。192.168.153.11
:此 IP 地址被允许对host.com
区域执行动态更新操作。也就是说,只有来自192.168.153.11
这个 IP 地址的请求才会被允许对该区域文件进行修改(如添加、删除或修改 DNS 记录)。动态更新是 DNS 服务器的一项功能,允许客户端向 DNS 服务器提交更新请求,动态地添加、删除或修改 DNS 记录。启用此功能时,确保只有授权的服务器或 IP 可以进行更新操作。
3. 配置区域数据文件
# 切换目录
cd /var/cache/bind
配置host.com.zone
主机域数据文件(dns的A记录一定要配置成你的dns ip地址,我的是192.168.153.11)
# 编辑host.com.zone文件
nano host.com.zone
# 添加以下配置
$ORIGIN host.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.host.com. dnsadmin.host.com. (
2024110501 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.host.com.
$TTL 60 ; 1 minute
dns A 192.168.153.11
HDSS153-11 A 192.168.153.11
HDSS153-12 A 192.168.153.12
HDSS153-21 A 192.168.153.21
HDSS153-22 A 192.168.153.22
HDSS153-200 A 192.168.153.200
配置od.com.zone
业务域数据文件。(dns的A记录一定要配置成你的dns ip地址,我的是192.168.153.11)
# 编辑host.com.zone文件
nano od.com.zone
# 添加以下配置
$ORIGIN od.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.od.com. dnsadmin.od.com. (
2024110502 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.od.com.
$TTL 60 ; 1 minute
dns A 192.168.153.11
harbor A 192.168.153.200
以下是解释我的配置文件选项的意思
1. $ORIGIN host.com.
$ORIGIN
设置当前区域的根域名,这里设置为host.com.
。它告诉 BIND 解析器,默认的域名是host.com
,如果没有指定完整域名,解析器会将其附加到任何没有完全限定的域名上。例如,在该文件中,
dns
将会被解析为dns.host.com.
。
2. $TTL 600
$TTL
(Time To Live)表示该区域记录的默认生存时间(TTL)。TTL 以秒为单位,这里设置为600
,表示 10 分钟。这意味着该区域中的所有 DNS 记录,如果没有单独指定 TTL 值,将默认使用 600 秒(10 分钟)作为缓存时间。
3. SOA 记录
@
:代表当前的区域名,这里就是host.com.
(因为$ORIGIN
设置了默认域名)。IN
:表示使用 Internet 类(几乎所有的 DNS 区域都使用IN
类)。SOA
:Start of Authority(授权起始)记录,定义了该区域的管理信息。具体字段如下:dns.host.com.
:区域的主 DNS 服务器(这里是dns.host.com
)。dnsadmin.host.com.
:区域管理员的电子邮件地址(用点.
替代了@
)。2024110501
:序列号(Serial)。该值应当每次修改区域文件时递增。这里的值表示2024年11月5日,第1次修改(每次修改文件需要+1)
。10800
:刷新时间(Refresh)。表示从其他 DNS 服务器获取该区域更新的时间间隔(单位是秒)。这里设置为 3 小时(10800秒)。900
:重试时间(Retry)。表示如果从主服务器获取更新失败,二级服务器重试的时间间隔(单位是秒)。这里设置为 15 分钟(900秒)。604800
:过期时间(Expire)。表示如果从主服务器无法获取更新,区域数据将被认为过期,单位是秒。这里设置为 1 周(604800秒)。86400
:最小 TTL(Minimum)。这是默认的最小 TTL 值,表示 DNS 记录的最低生存时间(单位是秒)。这里设置为 1 天(86400秒)。
4. NS 记录
NS
:Name Server(名称服务器)记录,指向该域的权威 DNS 服务器。这里表示
host.com.
区域的主 DNS 服务器是dns.host.com.
。
5. $TTL 60
这行设置了一个新的 TTL 值,
60
秒(即 1 分钟)。这意味着接下来的记录将有 60 秒的缓存时间,直到下一条 TTL 配置。
4. 启动及测试
# 先测试配置文件是否正确
named-checkconf
# 启动
systemctl start named
# 使用nslookup测试解析(前面是域名后面是dns服务地址)
nslookup hdss153-200.host.com 192.168.153.150
出现你的添加的ip地址就成功了
修改主机指向的自建dns服务
# 编辑dns配置
nano /etc/resolv.conf
配置修改如下
ping一下
# 下面两个都可以。第一个需要配置search host.com就能用短域名
ping hdss153-11
ping hdss153-11.host.com
ping 域名出现如下就成功了
5. 配置window客户端能使用dns服务
打开cmd ping一下能ping通则成功
评论区