DNS域名解析服务器搭建

基础介绍

DNS 从哪里获取 IP 地址?
  1. 本地缓存: DNS服务器会将先前查询过的域名和对应的IP地址存储在本地缓存中,以便在后续查询中加快响应速度。如果之前已经查询过某个域名,DNS服务器会直接从本地缓存中获取对应的IP地址。
  2. 递归查询: 如果本地缓存中没有目标域名的IP地址,DNS服务器会发起递归查询。它首先向根域名服务器发送查询请求,根域名服务器会返回指向负责顶级域(如.com、.net、.org等)的权威域名服务器的IP地址。然后,DNS服务器会向权威域名服务器发送查询请求,直到获取到目标域名的IP地址或者查询失败。
  3. 转发查询: DNS服务器还可以配置为转发查询,即将未命中本地缓存的查询请求转发给其他DNS服务器处理。通常情况下,本地DNS服务器会将这些请求发送给ISP(Internet Service Provider,互联网服务提供商)提供的DNS服务器或者其他可靠的DNS服务器进行处理。
DNS的作用
  1. 域名解析: DNS最主要的作用是将域名解析为对应的IP地址。当用户在浏览器中输入一个域名时,DNS系统会将这个域名转换为相应的IP地址,然后浏览器才能通过IP地址找到并访问目标网站。
  2. 负载均衡: 通过DNS解析可以实现负载均衡,即将多个服务器的域名解析为不同的IP地址并在不同的时间将其返回给用户。这样可以分散流量到多台服务器上,提高网站的访问速度和稳定性。
  3. 邮箱服务器定位: DNS也用于指定邮件服务器的IP地址。当发送电子邮件时,邮件服务器通过DNS解析找到收件人域名的邮件服务器IP地址,然后发送邮件。
  4. 防止DNS劫持: DNS还能够通过各种方式来防止DNS劫持,即恶意修改DNS解析结果以实施网络攻击或监视用户活动的行为。例如,DNSSEC(DNS Security Extensions)可以通过数字签名来保护DNS解析结果的完整性和真实性。
  5. 提供其他网络服务: DNS还可以用于提供其他网络服务,如反向DNS解析(将IP地址解析为域名)、动态域名解析(将动态IP地址映射到域名)、域名注册等。

BIND 简介:
BIND 全称为 Berkeley Internet Name Domain(伯克利因特网名称域系统),BIND 主要有三个版本:BIND4、BIND8、BIND9
BIND8 版本:融合了许多提高效率、稳定性和安全性的技术,而 BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等

基础环境

mv /etc/yum.repos.d/CentOS-* /tmp/
systemctl disable firewalld --now && setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
curl -o /etc/yum.repos.d/centos.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装DNS服务

[root@dns ~]# cat /etc/named.confyum install -y bind bind-chroot bind-utilsbind-9.9.4-50.el7.x86_64				# 该包为 DNS 服务的主程序包。
bind-chroot-9.9.4-50.el7.x86_64 # 提高安全性。
#bind-chroot 是 bind 的一个功能,使 bind 可以在一个 chroot 的模式下运行,也就是说,bind 运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已,这样做的目的是为了提高安全性,因为在 chroot 的模式下,bind 可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。
bind-utils-9.9.4-50.el7.x86_64.rpm #该包为客户端工具,系统默认已经安装的了,它用于搜索域名指令。

DNS 相关配置文件

[root@dns ~]# ll /etc/named.conf`named.conf 是 BIND 的核心配置文件,它包含了 BIND 的基本配置,但其并不包括区域数据`
`/var/named/ 目录为 DNS 数据库文件存放目录,每一个域文件都放在这里`

修改配置文件

[root@dns ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions {# listen-on port 53 { 127.0.0.1; }; 修改为anylisten-on port 53 { any; };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     { localhost; };allow-query     { any; };/* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.- If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so willcause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatlyreduce such attack surface */recursion yes;dnssec-enable yes;dnssec-validation yes;/* 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;};
};zone "gxl.com" IN {type master;file "gxl.com.zone";allow-update { none; };
};
zone "169.168.192.in-addr.arpa" IN {type master;file "gxl.com.arpa";allow-update { none; };
};include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
以下是详细配置解释:
  1. options 这个部分包含了DNS服务器的一般选项设置
  2. listen-on port 53 { any; } 指定DNS服务器监听的端口。在这个示例中,DNS服务器监听在53端口,允许任何IP地址连接到该端口。这意味着DNS服务器会接受来自任何IP地址的DNS查询请求
  3. listen-on-v6 port 53 { ::1; } 指定IPv6地址的监听端口。在这个示例中,DNS服务器监听IPv6地址的53端口,只允许本地IPv6地址(::1)连接到该端口
  4. directory "/var/named"; 指定存储DNS服务器相关数据文件的目录路径。在这个示例中,数据文件存储在/var/named目录下
  5. dump-file "/var/named/data/cache_dump.db"; 指定DNS服务器在关闭时将缓存内容写入的文件路径。这个文件通常用于调试和故障排除
  6. statistics-file "/var/named/data/named_stats.txt"; 指定DNS服务器的统计信息输出文件路径,用于记录DNS服务器的运行统计数据
  7. memstatistics-file "/var/named/data/named_mem_stats.txt"; 指定DNS服务器的内存使用统计输出文件路径,用于记录DNS服务器的内存使用情况
  8. recursing-file "/var/named/data/named.recursing"; 指定DNS服务器递归查询的记录文件路径
  9. secroots-file "/var/named/data/named.secroots"; 指定DNS服务器的安全根文件路径
  10. allow-query { any; }; 指定允许查询的IP地址范围。在这个示例中,允许任何IP地址进行DNS查询

定义正向查询

正向查询是最常见的DNS查询方式之一

正向查询用于将域名解析为IP地址,这样用户就可以使用易记的域名来访问互联网上的各种网络资源,而不需要记忆IP地址

在dns配置文件中加入如下信息:

[root@dns ~]# cat /etc/named.conf
zone "gxl.com" IN {type master;file "gxl.com.zone";allow-update { none; };
};
以下是配置详解:
### 需要强调的是file指定的是文件路径
`type master;` 表明这是主 DNS 服务器,负责提供 "example.com" 区域的数据`file "example.com.zone";` 指定了包含 "example.com" 区域数据的文件的路径`allow-update { none; };` 指定了允许对区域进行动态更新的权限。在这种情况下,none 表示不允许任何动态更新,因此区域数据只能通过手动编辑区域文件来更新

定义反向查询

反向查询是一种从IP地址到域名的查询方式之一

反向查询主要用于安全审计、网络管理和验证IP地址归属等方面。例如,当收到来自某个IP地址的网络流量时,可以通过反向查询确认该IP地址对应的域名,从而了解到流量的来源

[root@dns ~]# cat /etc/named.conf
zone "169.168.192.in-addr.arpa" IN {type master;file "gxl.com.arpa";allow-update { none; };
};

检测是否语法错误

[root@dns ~]# named-checkconf /etc/named.conf

修改正反区域文件(重点)

进入到DNS服务器相关文件存储目录 /var/named/

named.emptynamed.localhost观察这两个文件 其实是一个实例文件接下来我们复制两份用(找任意一个都可以)

[root@dns ~]# cd /var/named/[root@dns named]# ll
total 24
drwxr-x---. 7 root  named   61 Apr 17 03:28 chroot
drwxrwx---. 2 named named   23 Apr 17 04:31 data
drwxrwx---. 2 named named   60 Apr 17 04:32 dynamic
-rw-r-----. 1 root  named 2253 Apr  5  2018 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx---. 2 named named    6 Oct 16  2023 slaves
[root@dns named]# cp -p named.localhost gxl.com.zone	### 当做正向查询解析来使用
[root@dns named]# cp -p named.localhost gxl.com.arpa	### 当做反向查询解析来使用

修改解析信息(正向)

[root@dns named]# cat gxl.com.zone
$TTL 1D
@       IN SOA  gxl.com. admin.gxl.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN NS   dns.gxl.com.
dns     IN A    192.168.169.204
exam    IN A    192.168.169.204
www     IN A    192.168.169.204
mail    IN A    192.168.169.205
ftp     IN A    192.168.169.204
*       IN A    192.168.169.204    
  1. gxl.com.: 指定了主域名为 gxl.com
  2. admin.gxl.com.: 这个字段指定了负责管理该域名的DNS服务器的邮箱地址,形式为 admin@gxl.comadmin 是指定了这个域名的管理员(或者叫根管理员),而 gxl.com 是该管理员的邮箱地址的域名部分
  3. @ IN NS dns.gxl.com.:这行指定了域名 gxl.com 的DNS服务器是 dns.gxl.com。NS记录(Name Server)指定了管理特定区域的DNS服务器
  4. dns IN A 192.168.169.204:这行指定了主机名 dns 对应的IP地址是 192.168.169.204。A记录(Address Record)用于将域名解析为IPv4地址
  5. exam IN A 192.168.169.204:这行指定了主机名 exam 对应的IP地址是 192.168.169.204
  6. www IN A 192.168.169.204:这行指定了主机名 www 对应的IP地址是 192.168.169.204
  7. mail IN A 192.168.169.204:这行指定了主机名 mail 对应的IP地址是 192.168.169.204
  8. ftp IN A 192.168.169.204:这行指定了主机名 ftp 对应的IP地址是 192.168.169.204
  9. sun IN A 192.168.169.204:这行指定了主机名 sun 对应的IP地址是 192.168.169.204
  10. * IN A 192.168.169.204:这行指定了主机名 * 泛域名解析代表任意主机名

修改解析信息(反向)

[root@dns named]# cat gxl.com.arpa 
$TTL 1D
@       IN SOA gxl.com. admin.gxl.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN NS   dns.gxl.com.
204     IN PTR  dns.gxl.com.
204     IN PTR  www.gxl.com.
204     IN PTR  exam.gxl.com.
204     IN PTR  ftp.gxl.com.
204     IN PTR  sun.gxl.com.

PTR 记录将 IP 地址映射到相应的域名

@ IN NS dns.example.com.:这行指定了该反向区域的DNS服务器是 dns.gxl.com。NS记录(Name Server)指定了管理特定区域的DNS服务器。

  1. 204 IN PTR dns.example.com.:这行指定了IP地址以 204 结尾的主机对应的域名是 dns.gxl.com。PTR记录(Pointer Record)用于将IP地址解析为域名
  2. 204 IN PTR www.gxl.com.:这行指定了IP地址以 204 结尾的主机对应的域名是 www.gxl.com
  3. 204 IN PTR exam.gxl.com.:这行指定了IP地址以 204 结尾的主机对应的域名是 exam.gxl.com
  4. 204 IN PTR ftp.gxl.com.:这行指定了IP地址以 204 结尾的主机对应的域名是 ftp.gxl.com
  5. 204 IN PTR sun.gxl.com.:这行指定了IP地址以 204 结尾的主机对应的域名是 sun.gxl.com

客户机测试

[root@dns ~]# vim /etc/resolv.conf
[root@dns ~]# cat /etc/resolv.conf
# Generated by NetworkManager
#nameserver 114.114.114.114
#nameserver 8.8.8.8
nameserver 192.168.169.204

正向解析

[root@dns ~]# nslookup www.gxl.com
Server:         192.168.169.204
Address:        192.168.169.204#53Name:   www.gxl.com
Address: 192.168.169.204[root@dns ~]# host www.gxl.com
www.gxl.com has address 192.168.169.204

反向解析

[root@dns ~]# nslookup 192.168.169.204
204.169.168.192.in-addr.arpa    name = exam.gxl.com.
204.169.168.192.in-addr.arpa    name = www.gxl.com.
204.169.168.192.in-addr.arpa    name = ftp.gxl.com.
204.169.168.192.in-addr.arpa    name = sun.gxl.com.
204.169.168.192.in-addr.arpa    name = dns.gxl.com.[root@dns ~]# host 192.168.169.204
204.169.168.192.in-addr.arpa domain name pointer ftp.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer exam.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer www.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer dns.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer sun.gxl.com.

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

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

相关文章

02. Redis 事务

文章目录 Redis 事务执行事务放弃事务编译性异常运行时异常 Redis 事务 Redis 单条明令是原子性的,但Redis事务不保证原子性。 事务的本质就是:一组命令一起执行!一个事务中的所有命令都会被序列化,在事务执行过程中,会…

2024-05-19 问AI: 大语言模型的BPE方向是什么意思?

文心一言 大语言模型的上下文中,BPE(Byte-Pair Encoding)是一种常用的子词单元(subword unit)编码方法,尤其在处理自然语言处理任务时。这种方法的主要目的是解决自然语言中的词汇表大小问题,特…

mock.js和apifox模拟接口的能力

mock.js 和 Apifox 都是前端开发中常用的工具,用于模拟后端接口和数据。下面是它们的主要特点和模拟接口的能力的比较: mock.js mock.js 是一个用于生成随机数据的 JavaScript 库。它允许你定义数据模板,并生成模拟数据。mock.js 主要用于前…

VSCode下STM32开发环境搭建

VSCode下STM32开发环境搭建 需要的软件 make-3.81 https://udomain.dl.sourceforge.net/project/gnuwin32/make/3.81/make-3.81.exe arm-none-eabi-gcc https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads https://links.jianshu.com/go?tohttps%3A%2F%…

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置

1、Gpt组件包含的子配置项 GptDriverConfigurationGptDemEventParameterRefsGptConfigurationOfOptApiServicesGptChannelConfigSet2、GptDriverConfiguration 2.1、GptAlreadyInitDetCheck 该参数启用/禁用Gpt_Init API中的GPT_E_ALREADY_INITIALIZED Det检查。 true:开启Gpt_…

Django5+React18前后端分离开发实战13 使用React创建前端项目

先将nodejs的版本切换到18: 接着,创建项目: npx create-react-app frontend接着,使用webstorm打开这个刚创建的项目: 添加一个npm run start的配置: 通过start启动服务: 浏览器访问&…

机器学习之决策树算法

使用决策树训练红酒数据集 完整代码: import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn import tree, datasets from sklearn.model_selection import train_test_split# 准备数据,这里…

【云原生】Kubernetes 核心概念

什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“k8s”,它…

科大讯飞笔试题---删除数字

1、 题目描述: 给定一个长度为 n 的数组,数组元素为 a1, a2, . . , an,每次能删除任意 a 的任意一位,求将所有数字变成 0 最少需要几步。例如 103 若删除第 1 位则变成 3; 若删除第 2 位则变成13; 若删除第 3 位则变成 10。 输入…

AWS容器之Amazon ECS

Amazon Elastic Container Service(Amazon ECS)是亚马逊提供的一种完全托管的容器编排服务,用于在云中运行、扩展和管理Docker容器化的应用程序。可以理解为Docker在云中对应的服务就是ECS。

c语言如何将一个文本内容复制到另外一个文本里

c语言如果要把一个文本文件的文件复制到另外一个文件里&#xff0c;代码如下 #include<stdio.h>int main() {FILE *fp1,*fp2;char a;fp1fopen("D://cyy//aaa.txt","r");fp2fopen("ccc.cpu","w");while(a!EOF){afgetc(fp1);fput…

linux:切分大文件

文章目录 1. 前言2. 用法3. 例子 1. 前言 如果传输、存储过程中出现大文件&#xff0c;希望切分成小文件。在 Linux 中&#xff0c;可以使用多种工具来切分大文件&#xff0c;最常用的是 split 命令。split 命令可以将一个大文件按照指定大小切分成多个小文件。 2. 用法 spl…

ImageMagick入门教程(免费图片格式转换)

起因是因为我不会图片转换,且发现很多图片转换都要钱,尤其是pdf转jpg,于是我就是找到了这个包,自己处理.当然包时不会导的,所以只能用它提供的命令了. 准备工作 下载imagemagick:ImageMagick – Download 我下载的这个,傻瓜式安装就行,把所有勾勾都勾上,然后要记住安装路径,然…

一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)

目录 ​编辑 引言 一、RDMA的基本原理 二、RDMA的主要特点 三、RDMA的编程接口 四、RDMA的代码演示 服务器端代码&#xff1a; 客户端代码&#xff1a; 五、总结 引言 RDMA&#xff0c;全称Remote Direct Memory Access&#xff0c;即远程直接内存访问&#xff0c;是…

客户机/服务器交互模式

目录 概述 网络应用软件的地位和功能 C/S 模式的特性 容易混淆的术语 C/S 模式的通信过程 网络协议与 C/S 模式的关系 错综复杂的 C/S 交互 总结 概述 客户机/服务器&#xff08;Client/Server&#xff0c;简称 C/S&#xff09;交互模式是一种常见的网络应用软件架构&a…

【ChatGPT】 Microsoft Edge 浏览器扩展使用 GPT

【ChatGPT】添加 Microsoft Edge 浏览器插件免费使用 GPT 文章目录 准备工作添加扩展注意事项 使用 ChatGPT 可以更高效的搜索到想要的内容&#xff0c;有效节约在搜索引擎中排查正确信息的时间。 准备工作 准备一台可上网的电脑电脑上安装有 Windows 自带的 Microsoft Edge …

二.常见算法--贪心算法

&#xff08;1&#xff09;单源点最短路径问题 问题描述&#xff1a; 给定一个图&#xff0c;任取其中一个节点为固定的起点&#xff0c;求从起点到任意节点的最短路径距离。 例如&#xff1a; 思路与关键点&#xff1a; 以下代码中涉及到宏INT_MAX,存在于<limits.h>中…

python+selenium - UI自动框架之封装查找元素

单一的元素定位方法不能满足所有元素的定位&#xff0c;可以根据每个元素的特点来找到合适的方法&#xff0c;可以参考下图的方法&#xff1a; elementFind.py from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_con…

Vue filter实战详解

在 Vue.js 中&#xff0c;filter 是一种用于在模板中对数据进行格式化的功能。它可以用来对数据进行处理、过滤或格式化&#xff0c;然后在模板中直接使用。 filter 是一种全局的 Vue 实例方法&#xff0c;可以在任何组件的模板中使用。 1.定义全局过滤器&#xff1a; 在 Vue…

InnoDB如何解决幻读的

InnoDB 使用一种称为 Next-Key Locking 的锁机制来解决幻读问题。幻读发生在一个事务在读取某个范围内的记录时&#xff0c;另一个事务在这个范围内插入新的记录。InnoDB 的 Next-Key Locking 结合了行锁&#xff08;Row Lock&#xff09;和间隙锁&#xff08;Gap Lock&#xf…