BIND搭建DNS实践

2024-08-27 17:52
文章标签 实践 搭建 bind dns

本文主要是介绍BIND搭建DNS实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BIND搭建DNS实践

BIND 是一个开源的 DNS 软件系统,包括权威服务器、递归解析器和相关实用程序。搭建 BIND(Berkeley Internet Name Domain)DNS 服务器实现 DNS 服务的管理和配置。

1. bind安装

bind支持源码安装、镜像源安装等方式。

1.1 CentOS 7安装

sudo yum -y install bind bind-utils

1.2 ubuntu安装

sudo apt-get update
sudo apt-get install bind9 bind9utils bind9-doc

2. 配置 BIND

主要包括主配置文件/etc/named.conf;区域配置文件,例如,/var/named/test.com.zone,根据域名自行创建。

2.1 主配置文件

主配置文件 /etc/named.conf( BIND 的守护进程为named) 包含了 BIND服务器 的全局设置和区域配置。以下为一个配置文件示例:

[root@dns ~]# cat /etc/named.confoptions {listen-on port 53 { any; };   # ipv4监听地址:配置为any或者节点ip地址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";recursing-file  "/var/named/data/named.recursing";secroots-file   "/var/named/data/named.secroots";allow-query     { any; };	# 允许查询的主机。引用acl:allow-query { trusted-clients; };/*- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.# 如果你正在搭建一个权威DNS服务器,请不要启用递归功能。- If you are building a RECURSIVE (caching) DNS server, you need to enablerecursion.	# 如果你正在搭建一个递归(缓存)DNS服务器,你需要启用递归功能。- If your recursive DNS server has a public IP address, you MUST enable accesscontrol to limit queries to your legitimate users. Failing to do so willcause your server to become part of large scale DNS amplificationattacks. Implementing BCP38 within your network would greatlyreduce such attack surface# 如果你的递归DNS服务器拥有一个公网IP地址,你必须启用访问控制以限制查询仅来自合法用户。如果不这样做,你的服务器可能会成为大规模DNS放大攻击的一部分。在你的网络中实施BCP38标准将极大地减少这种攻击面。*/forwarders { 8.8.8.8; 8.8.4.4; };recursion yes;	# 是否允许递归查询dnssec-enable no;		# dns安全扩展,这里关闭dnssec-validation no;	# dns安全扩展确认,这里关闭/* Path to ISC DLV key */bindkeys-file "/etc/named.root.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;};
};acl "trusted-clients" {		# 定义了ACL之后在allow-query位置处应用ACL。192.168.1.0/24;127.0.0.1;
};zone "." IN {type hint;file "named.ca";
};include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
  1. options区块

options区块定义了全局配置选项和默认值,如服务器使用的IP地址、DNS查询转发、数据文件目录、缓存大小和查询超时等。

  1. Logging区块

定义了日志的记录方式和位置。配置文件为相对路径data/named.run,绝对路径为/var/named/data/named.run

  1. acl区块

acl区块定义了访问控制列表(ACL),包含了允许访问的 IP 范围。有的情况下,配置文件没有acl区块,可以根据需求进行添加。

  1. zone区块

zone区块定义了DNS服务器需要管理的域名,每个域名需要一个zone区块,并可以指定区域类型(master或slave)、对应的数据文件名和转发策略等。默认有一个根区域 .(通常用于引导 DNS 解析)。

  1. include语句

include语句用于将其他文件中的配置项包含到named.conf文件中,使配置文件更加灵活和易于管理。


这里以域名test.com为例,将域名区域信息写到配置文件/etc/named.rfc1912.zones

[root@dns ~]# cat /etc/named.rfc1912.zones# 增加域名配置,以test.com为例。
## 正向解析:
zone "test.com" IN {type master;file "test.com.zone";allow-update { none; };
};## 反向解析:zone名对应网络地址的反写。这里以10.210.10.0/24网段为例。
zone "10.210.10.in-addr.arpa" IN {type master;file "10.210.10.zone";allow-update { none; };
}

配置完成后通过下面命令检查语法:

named-checkconf

2.2 区域配置文件

区域配置文件包含了指定区域(域名)的 DNS 记录,例如/var/named/test.com.zone,需要根据域名进行创建。

1. 创建主区域文件

  • 正向解析文件

在目录/var/named/下,复制named.localhost文件,更改属组为named

cp -p named.localhost test.com.zone	# 通过-p保持文件权限和所属一致
chown named:named test.com.zone
vi test.com.zone

添加以下内容:

$TTL 3H
@          IN SOA @        dns.test.com.  (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@          IN       NS  dns.test.com.
dns        IN       A   110.210.10.220
harbor     IN       A   110.210.10.210
os-master  IN       A   110.210.10.216
os-node1   IN       A   110.210.10.217
os-node2   IN       A   110.210.10.218

检查区域配置文件语法:

[root@dns named]# named-checkzone "test.com" /var/named/test.com.zone
zone test.com/IN: loaded serial 0
OK
  • 反向解析文件

使用named.localhost文件的副本,更改属组为named。

cp named.localhost 10.210.10.zone
chown named:named 10.210.10.zone
vi 10.210.10.zone

10.210.10.zone文件内容如下:

$TTL 1D
@       IN SOA  @ 			dns.test.com. (2017020701      ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@        IN NS   dns.test.com.
220      IN PTR  dns.test.com.
210      IN PTR  harbor.test.com.

检查语法:

named-checkzone "10.210.10.ip-addr.arpa" /var/named/10.210.10.zone

3. 启动和测试 BIND

3.1 启动 BIND

# centos
sudo systemctl start named
sudo systemctl enable named

3.2 检查 BIND 状态

sudo systemctl status named

3.3 测试 DNS 解析

使用 dig , nslookup ,host命令来测试 DNS 解析,测试解析域名harbor.test.com(10.210.10.210),dns服务器地址为10.210.10.220

# dig正向解析测试
dig @10.210.10.220 harbor.test.com
# dig反向解析测试
dig -x 10.210.10.210 @10.210.10.220# nslookup测试
[root@client ~]# cat /etc/resolv.conf
nameserver 10.210.10.220
[root@client ~]# nslookup
> harbor.test.com               # 正向解析
Server:         10.210.10.220
Address:        10.210.10.220#53Name:   harbor.test.com
Address: 10.210.10.210
> 10.210.10.220                 # 反向解析
220.10.210.10.in-addr.arpa      name = dns.test.com.# host测试
[root@client ~]# host harbor.test.com
harbor.test.com has address 10.210.10.210
[root@client ~]# host 10.210.10.210
210.10.210.10.in-addr.arpa domain name pointer harbor.test.com.

4. 排错

  1. 区域配置文件语法错误
[root@infra named]# named-checkzone "test.com" test.com.zone
dns_rdata_fromtext: test.com.zone:3: near '1D': not a valid number
zone test.com/IN: loading from master file test.com.zone failed: not a valid number
zone test.com/IN: not loaded due to errors.

原因:

/var/named/test.com.zone配置文件 SOA 后面要加@ 或主域名。

5. 相关资料

  1. 官网:https://bind9.net/

  2. 文档: https://bind9.readthedocs.io/en/latest/

  3. 仓库:https://gitlab.isc.org/isc-projects/bind9

  4. https://blog.csdn.net/dinglinuX/article/details/54898189

  5. https://www.cnblogs.com/zhijiyiyu/p/14957522.html

这篇关于BIND搭建DNS实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112364

相关文章

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总