侧边栏壁纸
博主头像
博客巢 博主等级

行动起来,活在当下

  • 累计撰写 12 篇文章
  • 累计创建 15 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

debian搭建DNS

博客巢
2024-11-18 / 0 评论 / 0 点赞 / 177 阅读 / 0 字
温馨提示:
本文最后更新于2024-11-18,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

注意我搭建的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通则成功

0

评论区