BIND 9.11.*版本可以yum直接安装

安装BIND组件,开启DNS服务,检查状态

yum install bind bind-utils
systemctl start named
systemctl enable named
systemctl status named

开启DNS服务请求通过防火墙 firewall-cmd --permanent --add-service=dns或者firewall-cmd --zone=public --add-port=53/udp --permanent

systemctl start firewalld.service
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
firewall-cmd --list-all

编辑网卡配置文件,将DNS1服务器指向本机IPADDR实际IP

vim /etc/sysconfig/network-scripts/ifcfg-ens192

重启网卡

systemctl restart network

编辑主配置文件named.conf  别人的配置详解链接

vim /etc/named.conf

注意:这里如果不是设置为any而是改成0.0.0.0/0这样的话,就是仅响应IPv4地址的dns请求。

allow-query { 0.0.0.0/0; };

forward first; 或者forward only; //转发器选项,可以设置为first或only,当客户端发起DNS解析请求时,如果参数为first,而当前服务器缓存中无对应缓存时,会向转发器请求DNS解析记录,如果参数为only,则无论服务器是否有对应的缓存,均向转发器请求DNS解析记录。设置为only可以避免出现服务器缓存造成的DNS解析错误,但是会大大降低DNS解析效率并增加服务器压力,根据目前的运营需求,我们使用first即可

检查语法命令:named-checkconf   查看帮助命令:man named.conf

root@DNS-TianJin-T01:/root#named-checkconf
root@DNS-TianJin-T01:/root#

没有错误返回说明一切正常。一定要先检查语法再重启服务,不然named服务会挂掉,影响别人使用。

保存退出后,刷新配置,必须执行rndc flush,配置才能刷新成功。

systemctl reload named
systemctl restart named
rndc reload
rndc flush //刷新本地全部缓存
rndc flushname example.com //刷新指定域名缓存

要检查 bind 软件包的版本,可以运行以下命令:

rpm -qa | grep bind

要查看 bind 软件包的详细信息,可以运行以下命令:

rpm -qi bind

抓包检查,这是一轮完整的DNS服务器解析响应过程

root@DNS-TianJin-T01:/root#tcpdump -i ens192 udp port 53 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
10:24:48.601888 IP 10.50.101.26.60395 > 10.50.100.65.53: 15626+ A? extshort.weixin.qq.com. (40)
10:24:48.603145 IP 10.50.100.65.46682 > 123.150.150.150.53: 61685+ A? extshort.weixin.qq.com. (40)
10:24:48.606635 IP 123.150.150.150.53 > 10.50.100.65.46682: 61685 9/2/6 CNAME short.weixin.qq.com., A 117.89.176.67, A 117.89.176.31, A101.91.37.29, A 101.227.131.222, A 101.91.37.39, A 180.101.242.227, A 180.101.242.212, A 101.227.131.167 (340)
10:24:48.607320 IP 10.50.100.65.57032 > 123.150.150.150.53: 61229+ A? short.weixin.qq.com. (37)
10:24:48.610577 IP 123.150.150.150.53 > 10.50.100.65.57032: 61229 8/2/6 A 117.89.176.31, A 117.89.176.67, A 180.101.242.212, A 180.101.242.227, A 101.227.131.222, A 101.227.131.167, A 101.91.37.29, A 101.91.37.39 (317)
10:24:48.611156 IP 10.50.100.65.53 > 10.50.101.26.60395: 15626 9/13/6 CNAME short.weixin.qq.com., A 101.227.131.222, A 101.91.37.29, A 180.101.242.227, A 117.89.176.31, A 101.227.131.167, A 117.89.176.67, A 101.91.37.39, A 180.101.242.212 (508)

以下的案例是光有请求没有回应的案例

这时,应检查
1、BIND服务是否启用

2、防火墙是否打开,若打开是否放行了DNS协议

3、检查BIND配置文件 vim /etc/named.conf port53端口的是否为any访问,将这些改成any

检查监听端口 ss -ntul

以下是一些常见的 BIND 9.11.4 日志文件名称和默认位置的示例:

  1. named.lognamed.run:这是主要的 BIND 服务器日志文件,记录了服务器的运行情况、事件和错误信息。在某些系统中,可能以日期作为后缀,例如 named.log.2023-06-14。通常位于 /var/log/ 目录下。

  2. query.log:该日志文件记录 BIND 服务器接收到的 DNS 查询请求的详细信息,如查询类型、查询来源和响应时间等。通常位于 /var/log/ 目录下。

  3. security.log:该日志文件记录了 BIND 服务器的安全事件,如拒绝访问、拒绝转发等。通常位于 /var/log/ 目录下。

root@DNS-T01:/#find / -name named.run
/var/named/data/named.run
root@DNS-T01:/#cd /var/named/data/
root@DNS-T01:/var/named/data#ls
named.run named.run-20230528 named.run-20230604 named.run-20230611
root@DNS-T01:/var/named/data#

定制脚本,每小时自动检查

cd /opt
vim /opt/dns_health_check.sh

在脚本/opt/dns_health_check.sh里添加如下命令

#!/bin/bash
date +"%Y-%m-%d %H:%M:%S"
# 检查 BIND 服务状态
bind_status=$(systemctl is-active named.service) if [ "$bind_status" != "active" ]; then
echo "BIND 服务未运行或出现错误,正在尝试重启"
sudo systemctl restart named
sudo rndc reload
dig www.baidu.com +short
exit 1
fi # 检查 DNS 解析
dns_query=$(dig www.baidu.com +short) if [ -z "$dns_query" ]; then
echo "DNS 解析未返回任何结果。"
echo "执行 DNS 重启操作..."
sudo systemctl restart named
sudo rndc reload
echo "执行 DNS 缓存清理操作..."
sudo rndc flush
echo "DNS 服务已重启。"
else
echo "DNS 解析正常。"
echo "www.gwmfc.com的解析为:"
dig www.gwmfc.com +short
fi

给脚本增加可运行权限

chmod +x dns_health_check.sh
crontab -e

在crontab里添加下面内容,wq保存退出

# 每小时执行一次
0 * * * * /opt/dns_health_check.sh >> /opt/dns_health_check.log 2>&1

看到这样的显示说明定期执行成功

root@DNS-TianJin-T01:/opt#crontab -e
no crontab for root - using an empty one
crontab: installing new crontab

使用 crontab -e 命令编辑 crontab 文件时,它显示 "no crontab for root - using an empty one",然后安装了一个新的 crontab。

这段输出表示当前用户 root 没有任何已存在的 crontab 配置。因此,系统会创建一个空的 crontab 文件,并将您所编辑的内容保存为新的 crontab。

当你第一次使用 crontab -e 命令编辑 crontab 文件时,或者在没有先前的 crontab 配置的情况下编辑 crontab 文件时,会显示类似的输出。安装新的 crontab 意味着您的编辑内容已成功保存为新的定时任务配置。


拓展材料

TTL值设置

zone "example.com" {
type stub;
masters { 1.2.3.4; };
TTL 1800; // 设置 example.com 的缓存时间为 3600 秒
};

全局设置TTL值设置

options {
max-cache-ttl 300; // 设置本地缓存的最大 TTL 为 300 秒
max-ncache-ttl 300; // 设置负向缓存的最大 TTL 为 300 秒
}
zone "example.com" {
type stub;
masters { 192.168.1.100; };
forwarders { 8.8.8.8; 8.8.4.4; };
};

这段配置表示针对 example.com 域名创建了一个 type stub 区域,并指定了主服务器的 IP 地址为 192.168.1.100。同时还配置了转发器(forwarders)为 8.8.8.88.8.4.4

让我们逐行分析这段配置的含义:

  1. zone "example.com":定义了一个名为 example.com 的区域。

  2. type stub:指定了区域的类型为 stub,表示这是一个 stub 区域。

  3. masters { 192.168.1.100; }:指定了 example.com 区域的主服务器的 IP 地址为 192.168.1.100。这意味着该区域将向该主服务器发送查询请求以获取域名解析结果。

  4. forwarders { 8.8.8.8; 8.8.4.4; }:配置了转发器(forwarders),指定了转发查询到的域名给 8.8.8.88.8.4.4 这两个 DNS 服务器。当 BIND 服务器无法从 192.168.1.100 获取到域名解析结果时,它将向这两个转发器发送查询请求,并将它们返回的结果缓存起来。

因此,这段配置的作用是设置 example.com 域名使用 192.168.1.100 作为主服务器,同时使用 8.8.8.88.8.4.4 作为转发器。当 BIND 服务器无法从主服务器获取到解析结果时, 将首先使用 8.8.8.8 进行解析,如果没有结果,则使用 8.8.4.4 进行解析。并将查询结果缓存起来。这样可以提高解析效率并减少对主服务器的查询负载。

CentOS配置DNS服务器(BIND 9.11.*版本),并配置3种转发模式的更多相关文章

  1. redhat配置dns服务器bind

    配置Oracle11g的RAC需要使用DNS服务器来解析SCAN IP,本文就是以此为例介绍bind服务器的使用.首先科普一下bind服务器,属于企业级产品了,还是开源的: Bind是Berkeley ...

  2. 在Debian上用Bind 配置DNS服务器

    1 什么是DNS 初学者可能不理解DNS到底是什么,干什么用.我是在1998年大学毕业时才听说这个词的.那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,D ...

  3. 烂泥:centos安装及配置DNS服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要在centos配置DNS服务器,要先安装DNS软件BIND.当然我们也可以安装其他的DNS软件,比如国内的开源DNS软件DNSPod. 在此我们以通过 ...

  4. centos6.5环境DNS-本地DNS服务器bind的搭建

    centos6.5环境DNS-本地DNS服务器bind的搭建 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库, ...

  5. Linux下搭建Oracle11g RAC(2)----配置DNS服务器,确认SCAN IP可以被解析

    从Oracle 11gR2开始,引入SCAN(Single Client Access Name) IP的概念,相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCAN IP和SCAP IP  ...

  6. centOS7配置DNS服务器

    世上无难事只怕有心人,遇事千万千万不要抵触,消极的情绪是失败之母,一点一滴,踏踏实实是通往幸福的捷径. 历经激动,受挫,抵触和鼓励以及征服,终于配好了让我欢喜让我忧的dns.在这里记录下来,希望能够给 ...

  7. CentOS7安装和配置dns服务器

    (1)dns介绍 1.基本介绍 名字解析: NetBIOS名:localhost wins hosts FQDN:完全限定域名,www.baidu.com hosts文件: 作用:实现名字解析,主要为 ...

  8. centos 7.3 服务器环境搭建——MySQL 安装和配置

    centos 7.3 服务器环境搭建——MySQL 安装和配置服务器信息如下:服务器:阿里云系统 centos 7.3 (阿里云该版本最新系统)mysql版本:5.7.18 (当前时间最新版本)连接服 ...

  9. 如何配置DNS服务器(局域网——域名指向某个IP地址)

    单击“开始”,指向“管理工具”,然后单击“DNS”,打开 DNS 管理器.   如有必要,向管理单元添加适用的服务器,然后连接该服务器.在控制台树中,单击适用的 DNS 服务器.   在“操作”菜单上 ...

  10. 配置DNS服务器IP

    #############################脚本功能及说明#################### #该脚本用来在本地服务器上配置DNS服务器IP #创建时间:2014-10-22 ## ...

随机推荐

  1. 【uniapp】【微信小程序】wxml-to-canvas

    真是搞吐了,研究了整整两天,困死我了 本来使用生成二维码插件好好的,插件页也支持导出二维码图片,可是领导说要带上文件的名称,那就涉及html转图片了,当然也可以改二维码插件的源码,不过源码做了混淆,看 ...

  2. MySQL系列之主从复制进阶——延时从库、半同步、过滤复制、GTID复制

    目录 1. 延时从库 1.1介绍 1.2 为什么要有延时从 1.3 配置延时从库 1.4 延时从库应用 1.4.1 故障恢复思路 1.4.2 故障模拟及恢复 2. 半同步 *** 2.1 半同步复制工 ...

  3. PostgreSQL学习笔记-4.基础知识:空值NULL、别名AS

    NULL 值代表遗漏的未知数据. 默认地,表的列可以存放 NULL 值. 本章讲解 IS NULL 和 IS NOT NULL 操作符. 语法 当创建表时,NULL 的基本语法如下: CREATE T ...

  4. Decorator 装饰者模式简介与 C# 示例【结构型4】【设计模式来了_9】

    〇.简介 1.什么是装饰者模式 一句话解释:   通过继承统一的抽象类来新增操作,再在使用时通过链式添加到对象中,达到与原有设定无关联可灵活附加. 装饰者模式是一种行为设计模式,它允许向一个现有的对象 ...

  5. codeforces div1A

    A. Circular Local MiniMax 题目翻译:给我们一个数组(循环的也就是1和n是相邻的),我们可以对数组进行任意调序,对于每个数b[i]要求满足b[i] < b[i - 1] ...

  6. tailwindcss 选型,以及vue配置使用

    一.为什么选择tailwindcss? Tailwind CSS 是一个受欢迎的.功能丰富的CSS框架,它与传统的CSS框架(如Bootstrap)有些不同.以下是一些人们通常对于Tailwind C ...

  7. elrond32

    前置知识 int __cdecl main(int argc, char **argv) * argc: 整数, 为传给main()的命令行参数个数.* argv: 字符串数组.argv[0] 为程序 ...

  8. C# 12 Blazor入门教程

    Blazor简介 Blazor 是由Microsoft开发的一款基于.NET的开源交互式Web UI框架.Blazor使开发人员能够使用C#和HTML建立全堆栈的单页应用程序,并避免使用JavaScr ...

  9. 一个基于.NET Core开源、跨平台的仓储管理系统

    前言 今天给大家推荐一个基于.NET Core开源.跨平台的仓储管理系统,数据库支持MSSQL/MySQL:ZEQP.WMS. 仓储管理系统介绍 仓储管理系统(Warehouse Management ...

  10. 🔥🔥Java开发者的Python快速进修指南:网络编程及并发编程

    今天我们将对网络编程和多线程技术进行讲解,这两者的原理大家都已经了解了,因此我们主要关注的是它们的写法区别.虽然这些区别并不是非常明显,但我们之所以将网络编程和多线程一起讲解,是因为在学习Java的s ...