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. 2017-A

    2017-A 题目描述: 输入一个字符串,要求输出能把所有的小写字符放前面,大写字符放中间,数字放后面,并且中间用空格隔开,如果同种类字符间有不同种类的字符,输出后也要用字符隔开. 例: 输入 12a ...

  2. Vue3+vite路由配置优化(自动化导入)

    今天在维护优化公司中台项目时,发现路由的文件配置非常多非常乱,只要只中大型项目,都会进入很多的路由页面,规范一点的公司还会吧路由进行模块化导入,但是依然存在很多文件夹的和手动导入的问题. 于是我想到了 ...

  3. 01.前后端分离中台框架后端 Admin.Core 学习-介绍与配置说明

    中台框架后端项目 Admin.Core 的介绍与配置说明 中台admin是前后端分离权限管理系统,Admin.Core为后端项目,基于.NET 7.0开发. 支持多租户.数据权限.动态 Api.任务调 ...

  4. 国庆微信头像DIY:轻松打造个性化头像

    前言 国庆节马上要到了,今天就教你如何从0到1使用canvas生成国庆风微信头像. 本文包含以下内容: vue3项目搭建,需求分析 canvas合成图片原理 github自动化部署 开发过程遇到的问题 ...

  5. Linux系列教程——Linux文件查找、Linux压缩打包、Linux软件管理

    @ 目录 1 Linux文件查找 1.find查找概述 2.find查找示例 1.find名称查找 2.find大小查找 3.find类型查找 4.find时间查找 5.find用户查找 6.find ...

  6. 成本阶问题:财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理?

    财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理? 可能原因:生产开立工单时元件未建在生产料件BOM明细中,导致成本阶没有算到,需要手动更改成本阶. 公式: 处理办法:修改成 ...

  7. Oracle的差异增量备份和累积增量备份

    在rman增量备份中,有差异增量和累积增量的概念. 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式累积增量:是备份上级备份以来所有变化的块 累积增量是备份上级备份以来所 ...

  8. 基于Effect的组件设计

    Effect的概念起源 从输入输出的角度理解Effect https://link.excalidraw.com/p/readonly/KXAy7d2DlnkM8X1yps6L 编程中的Effect起 ...

  9. 前后端分离,前端发送过来的请求是服务器的ip还是用户的ip

    前后端分离部署时,服务器A用于部署前端项目,称为前端服务器,服务器B用于部署后端项目,称为后端服务器.后端服务器通过开放API的方式,向前端服务器中的前端项目提供数据或数据操作接口,以此实现前端与后端 ...

  10. JUC并发编程学习笔记(三)生产者和消费者问题

    生产者和消费者问题 synchronized版-> wait/notify juc版->Lock 面试:单例模式.排序算法.生产者和消费者.死锁 生产者和消费者问题 Synchronize ...