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

相关文章

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

Java Stream 的 Collectors.toMap高级应用与最佳实践

《JavaStream的Collectors.toMap高级应用与最佳实践》文章讲解JavaStreamAPI中Collectors.toMap的使用,涵盖基础语法、键冲突处理、自定义Map... 目录一、基础用法回顾二、处理键冲突三、自定义 Map 实现类型四、处理 null 值五、复杂值类型转换六、处理