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. Docker V24 及 Docker Compose V2 的安装及使用

    前言 Docker 是一款流行的开源容器化平台,使用 Docker 可以有效地隔离应用程序和系统环境,使得应用程序在不同的环境中具有相同的行为 Docker Compose 是一个用于定义和管理多个 ...

  2. Python并发编程——操作系统发展史、多道技术、进程理论、开启进程、join方法、进程间的数据隔离

    文章目录 必备知识回顾 今日内容详细 操作系统发展史 多道技术 必备知识点 多道技术图解 多道技术重点知识 进程理论 必备知识点 进程调度 进程运行的三状态图 两对重要概念 开启进程的两种方式 joi ...

  3. C#归并排序算法

    前言 归并排序是一种常见的排序算法,它采用分治法的思想,在排序过程中不断将待排序序列分割成更小的子序列,直到每个子序列中只剩下一个元素,然后将这些子序列两两合并并排序,最终得到一个有序的序列. 归并排 ...

  4. C#学习笔记--复杂数据类型、函数和结构体

    C#基础 复杂数据类型 特点:多个数据变量地一个集合体,可以自己命名 种类:枚举.数组和结构体 枚举:整型常量的集合 数组:任意变量类型的顺序存储的数据集合 结构体:任意变量类型的数据组合成的数据块 ...

  5. Oracle 高可用 阅读笔记

    1   个人理解概述 1.1  Oracle dg Oracle Data Guard通过从主数据库传输redo data,然后将apply redo到备用数据库,自动维护每个备用数据库.DG分为3个 ...

  6. PythonNotes_Basic1

    基本数据类型 标准数据类型 常见数据类型: Number(数字) String(字符串) bool(布尔类型) List(列表) Tuple(元组) Set(集合) Dictionary(字典) 六个 ...

  7. 是因为不同的浏览器内核吗--Could not register service workers到底是怎么回事

    什么是浏览器内核 浏览器内核(Rendering Engine),是浏览器最核心的部分. 它负责处理网页的HTML.CSS.JavaScript等代码,并将其转化为可视化的网页内容.即我们常说的对网页 ...

  8. 给wordpress后台侧栏菜单添加自定义字段的方法

    我们在使用wordpress做网站的时候,难免有一些需要在后台设置侧栏菜单下添加自定义字段的情况.下面就简单说说一下,如何在后台设置侧栏菜单下添加自定义字段? 在这里我们主要是使用wordpress的 ...

  9. 手撕Vue-实现事件相关指令

    经过上一篇文章的学习,实现了界面驱动数据更新,接下来实现一下其它相关的指令,比如事件相关的指令,v-on 这个指令的使用频率还是很高的,所以我们先来实现这个指令. v-on 的作用是什么,是不是可以给 ...

  10. Unity学习笔记--入门

    Unity引擎学习 入门: Unity中的坐标系: 左手坐标系(z轴正方向向里面) x轴:平行屏幕向右正方向 y轴:平行屏幕向上正方向 Z轴:垂直屏幕向内为正方向 [补]openGL是右手坐标系 Di ...