[计算机网络] 基于CENTOS7自建DNS服务

news/2024/12/20 1:21:25/文章来源:https://www.cnblogs.com/johnnyzen/p/18618171

  • 最初的诉求:自建DNS,篡改公开网站的url为自建web服务的url。

  • 在使用浏览器进行网上冲浪的时候,我们只需要输入网址即可访问,但是在网络中,网址并不是一个有效的东西,真正起作用的是网址所对应的IP地址,但是IP地址是一堆没有规律的数字,难以记忆、使用,所以就有了DNS服务器。

  • DNS服务器的功能就是将域名转换成IP地址,这样在我们想要访问一个主机的时候就不需要记住它的IP地址,而是只需要记住它的网址即可,剩下的工作有DNS服务器去替我们完成,由它来将一个网址转换成IP地址,来供给我们访问。

下面就来介绍如何在CentOS7中搭建一个DNS服务器。

  • 版本信息
    • os : centos 7.9

理论:DNS体系

DNS记录的指令

A := domainA => IP Addr

xx.xx.com IN A aa.bb.cc.dd

CNAME := 别名 := domainA => domainB

xx.xx.com IN CNAME yy.servers.com

即: 域名 xx.xx.com 指向另一目标域名 yy.servers.com

NS

安装步骤

机器列表及hosts

  • 服务器列表及etc/hosts 的大致配置:
192.168.100.102 vmw-b.servers.com cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20gos = centos7.9
192.168.100.103 vmw-c.servers.com cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20gos = centos7.9
192.168.100.104 vmw-d.servers.com cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20gos = centos7.9
192.168.100.105 vmw-e.servers.com cpu架构 = x86_64bit / cpu=1c / memory=2g / disk=20gos = centos7.9
  • 部署目标:在 vmw-b 节点搭建DNS服务器

Step1 自建DNS服务(named)

Step1.1 安装named服务

yum  install -y bind

对应DNS服务: named

DNS:域名解析协议,用来解析域名与ip的对应关系
    主配置文件:    /etc/named.conf
    子配置文件:    /etc/named.rfc1912.zones
    (子配置文件,被主配置文件引用)
        数据目录:     /var/named

DNS的高速缓存
举例如下:主机1向主机2询问百度的ip地址时,主机2不知道,所以通过询问别的主机得到百度的ip地址,然后记录下百度的地址,当主机3再次询问主机2百度地址时,可以直接反馈给主机3,不必再询问别的主机,这就是dns的高速缓存。

Step1.2 配置/etc/named.conf

  • vim /etc/named.conf : 配置named.conf

更新如下配置项:

options {#listen-on port 53 { 127.0.0.1; };listen-on port 53 { any; };#allow-query { localhost; };allow-query { any; };# dnssec-enable yes;dnssec-enable no;#dnssec-validation yes;dnssec-validation no;#dnssec-lookaside yes;dnssec-lookaside no;...
}

【解释】
allow-query { acl|IP|Network; }; | 允许向本服务器发起查询请求的主机,即:白名单
allow-update { acl|IP|Network|none; }; | 因为谁都可以更新区域数据库不安全,所以需要这个来限制谁可以,DDNS(动态DNS,使用DHCP服务器), Dynamic DNS(因为不安全,所以一般禁用这个功能:allow-update { none; }
allow-transfer { acl|IP|Network; }; | 允许哪些从服务器可以从本机进行区域传送;默认是所有主机都可以;建议应该只允许从服务器完成此项工作,即:白名单;

追加自定义的域的配置

zone "my-servers.com" IN {type master;# file "my-servers.com.zone";file "/var/named/my-servers.com.zone";allow-update { none; };
};

Step1.3 创建并编辑自定义的zone配置文件(myservers.com.zone)

cp -p /var/named/named.localhost /var/named/my-servers.com.zonevim /var/named/my-servers.com.zone
编辑的内容:
@       IN SOA  dns.my-servers.com. root.my-servers.com (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      ns.my-servers.com.
ns      IN A    192.168.100.102
www 	IN A    192.168.100.102
dl      IN CNAME vmw-e.servers.com
test    IN CNAME vmw-e.servers.com# 修正权限,防止重启 named 服务时,出问题
chmod +755 /etc/named*# 注: /etc/named.conf , ...
chmod +755 /var/named/
chown -R named:named /etc/named.conf# 注: 原始权限(/etc/named*) = root:named
chown -R named:named /var/named/# 注: 原始权限(/var/named/[data|dynamic|slaves]) = named:named# 注: 原始权限(/var/named/[named.ca|named.empty|named.localhost|named.loopback]) = root:named# 注: chown [-R] 账号名:用户组 文件或目录# 注: -R : 递归地更改指定目录下所有文件和子目录的所有者和所属组递归之意ls -la /etc/named*
ls -la /var/named/# 检验一下配置是否有问题
named-checkconf
named-checkzone my-servers.com /var/named/my-servers.com.zone

Step1.4 重启DNS服务的相关网络服务

rndc reloadsudo systemctl restart  named# 注: 启动命令的本质: /usr/sbin/named -u named -c /etc/named.confsudo systemctl enable named# 设置为开机自启sudo systemctl restart network

Step1.5 为客户端计算机的网卡配置DNS服务器

注:假定客户端服务器也是CENTOS7,且仅启用了network服务,禁用了NetworkManager服务。

vim /etc/sysconfig/network-scripts/ifcfg-ens33...DNS=192.168.100.102DNS1=... //其他备用的DNS服务器DNS2=... //其他备用的DNS服务器...ifconfig ens33 down
ifconfig ens33 up
或 : sudo systemctl restart network# 注: 此举将重置 /etc/resolv.conf 的 dns 配置# 注:此举将重载 /etc/.../ifcfg-ens33 的网卡 配置vim /etc/resolv.confnameserver 192.168.100.102nameserver 114.114.114.114# 注: 此操作一定要在 `systemctl restart network` 之后进行,否则被重置

Step1.6 验证与使用

[root@vmw-b named]# nslookup www.my-servers.com
Server:         192.168.100.102
Address:        192.168.100.102#53Name:   www.my-servers.com
Address: 192.168.100.102[root@vmw-b named]# nslookup test.my-servers.com
Server:         192.168.100.102
Address:        192.168.100.102#53** server can't find test.my-servers.com: NXDOMAIN

Step1.X 查看DNS服务的运行状态及日志

named -gsystemctl status named
journalctl -u namedsystemctl status network
journalctl -u networktail -f /var/log/messages

Step2 DNS 高速缓存服务(nscd) 的安装与使用【可选步骤】

  • NSCD (Name Service Cache Daemon)是一个系统缓存服务,用于缓存常见的名称服务信息,例如用户、组、主机名和服务。它可以提高系统的性能,减少对名称服务的频繁查询和网络流量,从而加快系统的响应速度。

  • NSCD在许多 Linux 发行版中默认安装,可以使用 systemctl status nscd 命令检查其运行状态。如果需要启动、停止或重新启动 NSCD,可以使用 systemctl start nscdsystemctl stop nscdsystemctl restart nscd 命令。

  • 如果你在/etc/Hosts指定某个IP解析域名,发现实际请求过程中并不生效,那么这时候就要考虑系统内是否存在nscd进程。

开启nscd的hosts缓存服务后,先会优先查找nscd缓存表,如果缓存表里没有,/etc/hosts也没有,再正常发起dns query。

  • 值得注意的是,CENTOS 7.9(DVD)版中,没有提前预装nscd服务。

CASE1:安装与启动

  • 如果系统未安装nscd服务,可以通过以下命令安装
sudo yum -y install nscd
  • 安装完成后,启动nscd服务,并设置为开机自启:
sudo systemctl start nscdsudo systemctl enable nscd

CASE2:清理NSCD服务的DNS缓存

  • -i, --invalidate=TABLE 可使指定的缓存失效,后面可以接:

passwd、group、hosts、services、netgroup。

sudo nscd -i hosts

CASE3: 默认配置文件(nscd.conf)

  • 默认配置文件路径: /etc/nscd.conf

重要配置文件的阐释

/etc/nsswitch.conf

  • etc/nsswitch.conf文件是Linux系统中的一个重要配置文件,它定义了系统如何查找各种数据库(如用户、组、密码、主机名等)的方法,以及在查找时应首先使用哪些数据库。

具体来说,/etc/nsswitch.conf文件定义了如下数据库和检索顺序(含DNS的检索与解析顺序):

passwd:用户账号信息
group:用户组信息
shadow:用户密码信息
hosts:主机名、IP地址对应关系
networks:网络名称、IP地址对应关系
protocols:网络协议信息
services:基于网络的服务信息(如NFS)
rpc:RPC协议信息
netgroup:网络组信息passwd:指定了所有计算机用户的账户信息,这些信息被记录在 /etc/passwd 文件中,包括用户 ID、用户名、密码(加密后)、用户家目录、默认 Shell 等信息。
group:指定了所有的用户组信息,被记录在 /etc/group 文件中,包括组 ID、组名、组成员等信息。
shadow:指定了所有用户的密码信息,其加密后的密文被保存在 /etc/shadow 文件中。
hosts:指定了计算机名、域名以及 IP 地址之间的对应关系,这些信息可以被记录在 /etc/hosts 文件中或者通过网络上的 DNS 服务器查询。
networks:指定了网络名称和 IP 地址之间的对应关系,被记录在 /etc/networks 文件中。
protocols:指定了网络协议的信息,被记录在 /etc/protocols 文件中。
services:指定了网络服务相关信息,如端口号、服务名称等,被记录在 /etc/services 文件中。
rpc:指定了 RPC 协议的信息,被记录在 /etc/rpc 文件中。
netgroup:指定了网络组信息,被记录在 /etc/netgroup 文件中,用于定义一组主机或用户的集合,以及这些主机和用户之间的关系。

/etc/resolv.conf

  • 样例配置
search xx.yy.zz.kk
nameserver 114.114.114.114
nameserver 8.8.8.8

Q: CENTOS中,resolv.conf的作用?

  • 在CentOS系统中,/etc/resolv.conf文件是一个DNS客户机的配置文件,它用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。这个文件指定了系统用于域名解析的DNS服务器地址,以及当访问非完全限定域名时,系统会自动添加哪些后缀进行尝试解析。
  1. DNS解析/etc/resolv.conf文件包含了系统用于将域名转换为IP地址的DNS服务器的地址。当系统需要解析一个域名时,它会查询这个文件中列出的DNS服务器。

  2. 域名搜索顺序:除了DNS服务器地址,/etc/resolv.conf还可以包含搜索域(search)和域名(domain),这些定义了系统在解析不完全限定域名时应该附加哪些后缀。

  3. 轮询DNS服务器:如果有多个DNS服务器被列出,系统会按照文件中列出的顺序轮询这些服务器,直到域名被成功解析。

  4. 缓存:虽然/etc/resolv.conf不直接缓存DNS查询结果,但它是系统进行DNS查询的基础配置文件。

Q:resolv.confnetwork服务的关系?

  • 在CentOS 7及以前的版本中,network服务(通过/etc/sysconfig/network-scripts/目录下的配置文件管理)直接管理网络接口,包括DNS设置。当network服务【启动】或【重启】时,它会读取 /etc/resolv.conf 文件,并根据网络接口配置文件中的设置(如/etc/sysconfig/network-scripts/ifcfg-*)来更新DNS服务器信息。
  1. 动态更新:如果network服务配置了动态DNS解析,它会在网络接口状态变化时(如接口启用或禁用)更新/etc/resolv.conf文件。

  2. 静态配置:如果管理员手动编辑了/etc/resolv.conf文件以设置静态DNS服务器,network服务在启动时会覆盖这些设置,除非配置文件中明确指示不从DHCP自动获取DNS服务器信息。

  3. 冲突:如果NetworkManagernetwork服务同时运行,它们可能会争夺对/etc/resolv.conf文件的控制权,导致DNS设置冲突。通常建议在CentOS 7及更新版本中使用NetworkManager,因为它提供了更灵活的网络管理功能。(笔者的实际做法:禁用了NetworkManager

  4. 禁用network服务的DNS管理:为了避免network服务覆盖/etc/resolv.conf文件,可以配置网络接口不从DHCP自动获取DNS服务器信息,或者完全禁用network服务,仅使用NetworkManager管理网络。

以网卡ens33为例,展示如何配置禁用自动获取dns服务器:

  • vim /etc/sysconfig/network-scripts/ifcfg-ens33
...
PEERDNS=no
...

即使网络接口通过DHCP获取IP地址,也不会自动更新/etc/resolv.conf文件中的DNS服务器信息。

总结来说,/etc/resolv.conf是CentOS系统中DNS解析的关键配置文件,而network服务在管理网络接口时会更新这个文件。为了避免配置冲突,通常建议在现代CentOS版本中使用NetworkManager,并适当配置以保持DNS设置的一致性。

Q: resolv.conf与NetworkManager的关系?

  • /etc/resolv.confNetworkManager的关系在于,当NetworkManager服务在系统中运行时,它会动态修改/etc/resolv.conf文件。NetworkManager负责管理网络连接,并在每次服务重启时重写/etc/resolv.conf,以反映当前活动连接提供的DNS服务器信息。

这意味着,如果你手动编辑了/etc/resolv.conf文件,但NetworkManager服务正在运行,那么NetworkManager可能会覆盖你的更改,因为它会根据DHCP客户端获取的DNS信息更新nameserversearch字段。

  • 为了防止NetworkManager覆盖/etc/resolv.conf文件,可以将其配置为不管理DNS设置。这可以通过在/etc/NetworkManager/NetworkManager.conf文件中设置dns=none来实现,这样NetworkManager就不会修改/etc/resolv.conf文件了。配置示例如下:
[main]
#plugins=ifcfg-rh,ibft
dns=none

通过这种方式,你可以保持对/etc/resolv.conf文件的控制,确保DNS设置按照你的配置持久化,即使在系统重启后也不会被NetworkManager覆盖。

Q: 参数及其意义?

nameserver:指定DNS服务器的IP地址。
domain:定义本地域名信息。
search:定义域名的搜索列表。
sortlist:对gethostbyname返回的地址进行排序

DNS体系中的重要站点

  • 常用的、公共的 DNS Server
114.114.114.114
8.8.8.8
8.8.4.4
  • 根域名服务器
root-server.net
https://www.isc.org/support

Y 推荐文献

  • Linux缓存服务NSCD用法总结及实践 - Name Service Cache Daemon-腾讯云开发者社区-腾讯云

nscd 服务

X 参考文献

  • Centos7 从0开始搭建DNS服务器 - CSDN 【推荐】

  • dns配置大全,你值得拥有! - CSDN

  • [[Solved] Bind doesn't work anymore | Named is Bind]([Solved] Bind doesn't work anymore | Named is Bind | DirectAdmin Forums)

  • bind9配置查错笔记--zone域文件权限permission denied_bind9 zone not loaded - CSDN博客

  • 【报错】【CentOS_7】【BIND】解决named[7151]: loading from master file XXX.XXX.XXX failed: permission - CSDN博客 【推荐】

  • DNS服务器和主从DNS服务器的搭建 - 阿里云开发者社区 【推荐】x3

  • CentOS6.7搭建部署DNS服务 (详解主配置文件) - え稚始گ - 博客园 【推荐】x5

  • 如何在CentOS上配置和管理域名?-HCRM博客 【推荐】x5

  • 設定 /etc/named.conf檔案

  • 任务4 DNS服务配置与管理_实训2:配置和管理dns服务器 在ip地址为192.168.100.252的服务器上配置主域名服务-CSDN博客 【推荐】x5

  • Centos7添加DNS设置的两种方法-百度经验

[main] plugins=ifcfg-rh dns=none
/etc/NetworkManager/NetworkManager.conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855671.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

systemd[1]: home.mount: Directory /home to mount over is not empty, mounting anyway.

日志显示这些内容说明可能是 fstab 服务自动挂载之前 /home 不为空systemd[1]: home.mount: Directory /home to mount over is not empty, mounting anyway. ░░ Subject: 挂载点不为空 ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ 目…

Linux服务器上部署Redis流程

前言 Redis版本7.0.4 服务器版本:Linux CentOS 8.0 64位 1.下载Redis 进入官网找到下载地址 https://redis.io/download 进入到Xshell控制台(默认当前是root根目录),输入wget 将上面复制的下载链接粘贴上,如下命令: wget http://download.redis.io/releases/redis-7.0.4.tar…

[Tools] Buzz – 免费开源的AI语音转文字工具

Buzz 介绍 https://github.com/chidiwilliams/buzz Buzz是一款基于OpenAI Whisper模型构建的离线语音转文字工具,适用于Windows、macOS和Linux系统。Buzz能将麦克风输入或音频、视频文件实时转换为文字,支持多种格式导入导出,如TXT、SRT和VTT。Buzz的转换速度快,准确率高,…

Skipping题解(贪心,队列,迪杰斯特拉,思维)

原题链接 https://codeforces.com/problemset/problem/2023/B 大致题意 类似一个游戏游戏规则如下:从1开始,可以选择吃掉ai,之后只能选择比当前下标小的(明显,如果开始就选择吃掉a1,那么游戏就结束了)。 当然还可以选择不吃ai,那么可以跳到[1,b[i]](b[i]与i的大小关系…

arcpy开发初探

是第一次将软件操作和书写代码合二为一 一、配置环境 arcpy是无法pip下载到的,只有满足以下条件才能调用到: 1、运行代码时候需要使用arcgis下面的python做编译器去运行 2、arcmap是需要启动着的 先写个测试代码 import arcpy print(arcpy.GetInstallInfo()[Version]) input_…

2024-2025-1 20241322 《计算机基础与程序设计》第13周学习总结

2024-2025-1 20241322 《计算机基础与程序设计》第13周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13这个作业的目标 《C语言程序设计》第12章并完…

全斗焕小曲 All In One

全斗焕小曲 All In One 挨棍的小曲 / 无限制格斗大赛の小曲 / 全斗焕の小曲 / 跑男の小曲 / 联赛开幕曲全斗焕小曲 All In One挨棍的小曲 / 无限制格斗大赛の小曲 / 全斗焕の小曲 / 跑男の小曲 / 联赛开幕曲demos https://search.bilibili.com/all?keyword=挨棍的小曲 https:/…

【项目学习】Morpho 借贷协议简单调研

项目背景 Morpho blue (下称 Morpho)是一个超额抵押借贷协议。与传统的借贷协议不同,Morpho 无需经过治理批准即可创建任意定制化的借贷市场。用户可以通过指定一项贷款资产、一项抵押资产、清算贷款价值 (LLTV)、预言机和利率模型 (IRM) 等参数来创建一个独立市场。市场创建…

01.大模型起源与发展

知识点注意力机制(Attention)的主要用途是什么?选择重要的信息并忽略不相关的信息Transformer 模型是基于什么理论构建的?C. 注意力机制(Attention)GPT 和 BERT 的主要区别是什么?C. GPT 使用了单向自注意力,而 BERT 使用了双向自注意力在注意力机制中,“Q”、“K”和…

IoTClient---基于C#开源的物联网设备通讯协议客户端

https://github.com/zhaopeiym/IoTClientIoTClient是一个物联网设备通讯协议实现客户端,将包括主流PLC通信读取、ModBus协议、Bacnet协议等常用工业通讯协议。本组件基于.NET Standard 2.0,可用于.Net的跨平台开发,如Windows、Linux甚至可运行于树莓派上。技术架构1. 编码语…

docker基础篇:安装tomcat

docker基础篇:安装tomcat@目录8.Docker常规安装简介8.1 docker常规安装总体步骤8.2安装tomcat本人其他相关文章链接 8.Docker常规安装简介注意点1: 左面是原始的微服务架构,你要自己linux中搭建mysql、redis繁琐费事,右面是使用docker搭建的服务,直接docker run xx启动即可…

脚手架构建

1. 引言 背景介绍: 前端脚手架的目的在于提高前端开发的效率和一致性 ,节约一些重复性工作,例如:编译、打包、代码检查,避免了从零开始搭建项目框架的繁琐工作。 需求分析: 项目创建与初始化:创建新的项目目录结构。 初始化基本的项目文件,如index.html、package.json…