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

相关文章

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4: