在Linux系统内搭建DNS本地服务器

devtools/2024/11/15 6:55:04/

文章目录

  • Linux的本地DNS服务
    • 一、什么是DNS
      • 1.1、域名
      • 1.2、DNS服务器、DNS客户端和DNS中继
      • 1.3、DNS域名解析
    • 二、搭建DNS服务
      • 2.1、正反向解析
        • 2.1.1.安装bind软件包
        • 2.1.2.修改主配置文件
        • 2.1.3.修改区域配置文件
        • 2.1.4.配置区域数据文件
        • 2.1.5.启动服务、关闭防火墙
        • 2.1.6.本地解析测试
        • 2.1.7.客户端解析测试
          • 1.win 10客户机
          • 2.C-7-2客户机
      • 2.2、主从服务器及正反向解析
        • 2.2.1检查并修改DNS主服务器配置——新建服务器具体配置见2.1正反向解析
        • 2.2.2.建立DNS从服务器
        • 2.2.3.修改DNS从服务器主配置
        • 2.2.4.修改DNS从服务器区域配置文件
        • 2.2.5.启动服务、关闭防火墙
        • 2.2.6.客户端解析测试
          • 1.win 10客户机
          • 2.C-7-2客户机

Linux的本地DNS服务

一、什么是DNS

TCP/IP提供了通过IP地址来连接到设备的功能,但对用户来讲,记住某台设备的IP地址是相当困难的,因此专门设计了一种字符串形式的主机命名机制,这些主机名与IP地址相对应。在IP地址与主机名之间需要有一种转换和查询机制,提供这种机制的系统就是域名系统DNS(Domain Name System)

互联网中,一台计算机与其他计算机通信时,通过IP地址唯一的标志自己。此时的IP地址就类似于我们日常生活中的电话号码。但是,这种纯数字的标识是比较难记忆的,而且数量也比较庞大。DNS的作用就是将人类可读的名称转换为机器识别的IP地址,供计算机相互连接。DNS的工作原理和电话簿相似,都是管理名称和数字之间的映射关系。就像我们日常打电话,一般使用人名查找,很少直接输入电话号码一样。当我们上网打开某个网页、视频时,也很少直接使用IP地址,而是在浏览器里输入的URL地址,例如:https://www.baidu.com,这其实使用的就是计算机的名字,一般称为域名。

1.1、域名

最初设备的域名由字符序列组成、所有设备的域名组成一个未分级的域名结构。未分级的域名结构存在命名冲突、管理维护复杂的缺点。因此,TCP/IP把DNS的域名设计成了分级的树状结构,以 根域. 为起点。。每个申请加入Internet的国家都要向NIC注册一个顶级域名,顶级域采用组织模式和地理模式的划分模式,

在这里插入图片描述

NIC将顶级域的管理权分派给由其指定的管理机构,由这些管理机构再对被授权管理的域继续进行划分,从而形成了二级域。负责划分二级域的管理机构可以授权其下属的管理结构,由它们继续划分域。由此下去,便形成了层次型的Internet域名体系结构。

顶级Internet域名含义
com商业组织
edu教育机构
gov政府机构
mil军事部门
net主要网络支持中心
int国际组织
org其他组织
国家代码国家(按照地理模式划分)
顶级Internet域名及其含义

从语法上讲,每一个域名都是有标号序列组成,而各标号之间用点(小数点)隔开。

以www.baidu.com域名为例,从右到左依次是:- com:顶级域名。代表商业组织。- baidu:二级域名,归属于某个公司自己的域名。- www:三级域名,表明某个公司提供的是什么服务,www代表普通网页。

1.2、DNS服务器、DNS客户端和DNS中继

网络中与DNS相关的设备角色包括DNS服务器DNS客户端DNS中继

DNS服务器是将域名指向对应IP地址的服务器。DNS服务器中保存了一张域名和与之相对应的IP地址的表,以解析消息的域名。域名是分层结构,域名DNS服务器也是对应的层级结构。

分类作用
根DNS服务器根DNS服务器是最高层次的域名服务器,它知道所有顶级服务器的域名和IP地址,当本地域名服务器无法对域名进行解析时,首先对根域名服务器发起请求。
顶级域名服务器顶级域名服务器负责管理该服务器下的所有二级域名,当收到DNS查询请求时,就会给权威域名服务器相应的回答。
权威域名服务器负责某一个区域的域名服务器。当一个顶级域名服务器还不能给出最后查询回答时,就会告知下一步应当请求的权威域名服务器
本地域名服务器当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每一个互联网服务提供者ISP都可以拥有一个本地域名服务器。当本地域名服务器无法给出应答时,就会请求最高级的根域名服务器
DNS服务器的分类

DNS客户端的作用是接收用户程序(User Program)的DNS请求,并对其作出回应。作为DNS客户端的设备上一般具备以下能力:

  • 启动DNS解析:要使用DNS客户端功能,需要在设备上打开DNS解析的开关。

  • 指定服务器的IP地址:要进行DNS域名解析,需要在设备上指定DNS服务器的IP地址。这样才能把查询请求发动到正确的DNS服务器上进行解析。

  • 指定DNS域后缀搜索列表:DNS客户端所访问的一些服务器或主机的域名后缀往往都是相同的。用户可以预先设置一些域名后缀,在域名解析的时候,用户只需要输入域名的部分字段,系统会自动将输入域名加上不同的后缀进行解析。

DNS中继当DNS服务器的IP地址发生变化时,用户网络中每个DNS客户端上的配置都需要改变,这样工作量极大并且容易出错。此时,可以通过部署DNS中继解决该问题。DNS客户端上配置DNS中继的IP地址,DNS服务器的IP地址在DNS中继上配置。之后,DNS客户端会将DNS请求报文直接发送给DNS中继,由DNS中继将收到的DNS请求报文转发至DNS服务器。由此,当DNS服务器的IP地址发生变化时,仅需改变DNS中继上的配置即可,简化了网络管理。

在这里插入图片描述

DNS中继的工作原理

  1. DNS客户端将DNS请求报文发送给DNS中继,即请求报文的目的地址为DNS中继的IP地址。

  2. DNS中继收到请求报文后,将报文转发给DNS服务器,通过DNS服务器进行域名解析

1.3、DNS域名解析

正向解析:根据域名查找对应的IP地址

反向解析:根据IP地址查找对应的域名

在这里插入图片描述

递归查询:将DNS解析请求一探到底,再逐层返回

通过根域名服务器,依次请求顶级域名服务器和权威域名服务器,最终获取对应IP地址,并将该结果保存在本地域名服务器,以待下次DNS请求使用。当用户再次对同一域名发起访问时,可以直接从本地域名服务器获得结果,无需再次发起全球递归查询。

迭代查询:每次DNS解析请求都会用相对应的响应回复

本地域名服务器先将DNS解析请求发送给根域名服务器,根域名服务器会返回响应消息给本地域名服务器并告知去找相对应的顶级域名服务器
本地域名服务器再将DNS解析请求发送给相对应的顶级域名服务器,顶级域名服务器会返回响应消息给本地域名服务器并告知去找相对应的二级域名或子域名服务器
最后本地域名服务器将DNS解析请求发送给相对应的子域名服务器,子域名服务器会根据域名的主机名解析出相对应的IP地址后,直接返回给本地域名服务器

二、搭建DNS服务

实验说明:准备三台CentOS 7虚拟机(C-7-1、C-7-2、C-7-3),一台Windows 10虚拟机(win 10)。实验机在同一网络下,可以互相访问,其中**“C-7-1”、“C-7-3”为服务器**,“C-7-2”、"win 10"为客户机

2.1、正反向解析

实验说明:在“C-7-1”虚拟机中搭建DNS服务器,“C-7-2”、"win 10"为客户机

2.1.1.安装bind软件包
yum makecache                ##检查yum仓库yum install -y bind            ##安装bind软件

在这里插入图片描述

2.1.2.修改主配置文件
rpm -qc bind            ##查询bind软件配置文件所在路径/etc/named.conf                ##主配置文件/etc/named.rfc1912.zones       ##区域配置文件/var/named/named.localhost     ##区域数据配置文件(模板文件,不可直接在原文件进行更改)vim /etc/named.conf        ##修改主配置文件
vim  /etc/named.conf
options  {listen-on port 53 { any; };    ##监听53端口, Ip地址(DNS服务器的IP))使用提供服务的本地IP,也可用any表示所有#listen-on-v6 port 53 {::1; };          ##ipv6行如不使用可以注释掉或者删除directory  "/var/named";                ##/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";  ##内存统计文件的位置allow-query { any; };    ##允许使用本DNS解析服务的网段,也可用any,代表所有网段都可访问.....
}  
zone "." IN {                ##正向解析"."根区域type hint;           ##类型为根区域file "named.ca";     ##区域数据文件为named.ca,记录了13台根域服务器的域名和IP地址等信息
}
/etc/named.conf文件解析

在这里插入图片描述

在这里插入图片描述

2.1.3.修改区域配置文件
vim  /etc/named.rfc1912.zones        ##修改区域配置文件zone "wl.com" IN {                ##正向解析"wl.com"区域type master;            ##类型为主区域file "wl.com.zone";        ##指定区域数据文件为"wl.com.zone"allow-update { none; };};zone "33.190.10.in-addr.arpa" IN {        ##反向解析的地址倒过来写,代表解析10.190.33段的地址type master;                ##类型为主区域file "wl.com.zone.lo";        ##指定区域数据文件为"wl.com.zone.lo"allow-update { none; };};

在这里插入图片描述

2.1.4.配置区域数据文件
cd /var/named/            ##切换目录到区域数据文件目录cp -p named.localhost wl.com.zone        ##需要保留源文件的权限和属主的属性复制(-p)vim wl.com.zone         ##修改区域数据文件“wl.com.zone”$TTL 1D            ##设置缓存解析结果的有效时间@       IN SOA  wl.com wl.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      wl.com.                        ##记录当前区域的DNS服务器的名称(必不可少)A       10.190.30.10                ##记录主机IP地址(必不可少)www  IN A       10.190.33.3              ##记录正向解析www.benet.com对应的IPmail IN A       10.190.33.20            ##邮箱的正向解析地址ftp  IN CNAME   www                ##CNAME使用别名, ftp是www的别名*    IN A       10.190.33.254            ##泛域名解析, "*" 代表任意主机名cp -p named.localhost wl.com.zone.lo        ##需要保留源文件的权限和属主的属性复制(-p)vim wl.com.zone.lo             ##修改区域数据文件“wl.com.zone.lo”$TTL 1D@       IN SOA  wl.com admin.wl.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      wl.com.A       10.190.33.103       PTR     www.wl.com.            #PTR为反向指针,反向解析10.190.33.3地址结果为www.wl.com.20      PTR     mail.            ###PTR为反向指针,反向解析10.190.33.20地址结果为mail.wl.com.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.1.5.启动服务、关闭防火墙
systemctl  start  named            ##启动服务“named”systemctl  stop  firewalld        ##停止服务“firewalld”setenforce  0            ##关闭防火墙

在这里插入图片描述

2.1.6.本地解析测试
vim /etc/resolv.conf        ##编辑"resolv.conf"文件# Generated by NetworkManagernameserver 10.190.33.10            ##修改DNS服务器为本机IPnslookup             ##使用"nslookup"命令解析
> www.wl.com        ##解析域名“www.wl.com”
Server:        10.190.33.10    ##默认DNS服务器
Address:    10.190.33.10#53        ##默认DNS服务器地址Name:    www.wl.com            ##需要解析的域名
Address: 10.190.33.3        ##解析后的地址
> 
> mail.wl.com
Server:        10.190.33.10
Address:    10.190.33.10#53Name:    mail.wl.com
Address: 10.190.33.20
>
> ftp.wl.com
Server:        10.190.33.10
Address:    10.190.33.10#53ftp.wl.com    canonical name = www.wl.com.
Name:    www.wl.com
Address: 10.190.33.3
> 
> 
> 
> 10.190.33.3
3.33.190.10.in-addr.arpa    name = www.wl.com.
> 10.190.33.20
20.33.190.10.in-addr.arpa    name = mail.
> 

在这里插入图片描述

2.1.7.客户端解析测试
1.win 10客户机
## 同时按win键+R键,(先win后R),调出“运行”对话框,然后输入cmd,点确定。ipconfig/all        ##查看本机所有网卡配置ping 10.190.33.10        ##pingDNS服务器地址,确保可以和DNS服务互相通信nslookup www.wl.com        ##解析域名“www.wl.com”nslookup mail.wl.com    nslookup 10.190.33.3

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

成功

2.C-7-2客户机
ping 10.190.33.10        ##pingDNS服务器地址,确保可以和DNS服务互相通信vim /etc/resolv.conf        ##编辑"resolv.conf"文件# Generated by NetworkManagernameserver 10.190.33.10            ##修改DNS服务器IPnslookup             ##使用"nslookup"命令解析
> www.wl.com        ##解析域名“www.wl.com”
Server:        10.190.33.10    ##默认DNS服务器
Address:    10.190.33.10#53        ##默认DNS服务器地址Name:    www.wl.com            ##需要解析的域名
Address: 10.190.33.3        ##解析后的地址
>
> 10.190.33.3
3.33.190.10.in-addr.arpa    name = www.wl.com.

在这里插入图片描述

成功

2.2、主从服务器及正反向解析

实验说明:基于实验“正反向解析”增加“主从服务器”实验。在**“C-7-1”虚拟机为主服务器,“C-7-3”虚拟机为从服务器**;“C-7-2”、"win 10"为客户机

2.2.1检查并修改DNS主服务器配置——新建服务器具体配置见2.1正反向解析
vim /etc/named.rfc1912.zoneszone "wl.com" IN {type master;            ##类型为主区域file "wl.com.zone";allow-update { none; };allow-transfer { 10.190.33.30; };          ##允许从服务器下载正向区域数据,这里添从服务器的IP地址};zone "33.190.10.in-addr.arpa" IN {type master;        ##类型为主区域file "wl.com.zone.lo";allow-update { none; };allow-transfer { 10.190.33.30; };          ##允许从服务器下载正向区域数据,这里添从服务器的IP地址};

在这里插入图片描述

2.2.2.建立DNS从服务器
yum makecache                ##检查yum仓库yum install -y bind            ##安装bind软件

在这里插入图片描述

2.2.3.修改DNS从服务器主配置
vim  /etc/named.conf
options  {listen-on port 53 { 10.190.33.30; };    ##监听53端口, Ip地址(DNS服务器的IP))使用提供服务的本地IP,也可用any表示所有#listen-on-v6 port 53 {::1; };          ##ipv6行如不使用可以注释掉或者删除directory  "/var/named";                ##/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";  ##内存统计文件的位置allow-query { any; };    ##允许使用本DNS解析服务的网段,也可用any,代表所有网段都可访问.....
}  

在这里插入图片描述

2.2.4.修改DNS从服务器区域配置文件
vim /etc/named.rfc1912.zoneszone "wl.com" IN {type slave;                            ##类型为从区域masters { 10.190.33.10; };            ##指定主服务器的IP地址file "slaves/wl.com.zone";       ##下载的区域数据文件保存到slaves/目录下};zone "33.190.10.in-addr.arpa" IN {    type slave;                        ##类型为从区域masters { 10.190.33.10; };         ##指定主服务器的IP地址file "slaves/wl.com.zone.lo";         ##下载的区域数据文件保存到slaves/目录下};

在这里插入图片描述

2.2.5.启动服务、关闭防火墙
  • C-7-1
systemctl  start  named            ##启动服务“named”systemctl  stop  firewalld        ##停止服务“firewalld”setenforce  0            ##关闭防火墙

在这里插入图片描述

  • C-7-3
systemctl  start  named            ##启动服务“named”systemctl  stop  firewalld        ##停止服务“firewalld”setenforce  0            ##关闭防火墙

在这里插入图片描述

2.2.6.客户端解析测试
1.win 10客户机
## 同时按win键+R键,(先win后R),调出“运行”对话框,然后输入cmd,点确定。ipconfig/all        ##查看本机所有网卡配置ping 10.190.33.10        ##pingDNS服务器地址,确保可以和DNS主服务互相通信ping 10.190.33.30        ##pingDNS服务器地址,确保可以和DNS从服务互相通信##在IP地址配置界面手动添加主DNS服务器地址:10.190.33.10,备用DNS服务器地址:10.190.33.30nslookup www.wl.com        ##解析域名“www.wl.com”  nslookup 10.190.33.3

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

关闭主服务器后测试

## 同时按win键+R键,(先win后R),调出“运行”对话框,然后输入cmd,点确定。ipconfig /flushdns        ####DNS缓存清理Windows IP 配置已成功刷新 DNS 解析缓存。nslookup www.wl.com        ##使用默认DNS服务器进行解析
DNS request timed out.timeout was 2 seconds.
服务器:  UnKnown
Address:  10.190.33.10DNS request timed out.timeout was 2 seconds.
DNS request timed out.timeout was 2 seconds.
DNS request timed out.timeout was 2 seconds.
DNS request timed out.timeout was 2 seconds.
*** 请求 UnKnown 超时##显示超时,因为主DNS服务器的named服务已经停止运行,所以无法解析
##因为Win系统bug,无法自动切换备用服务器nslookup www.wl.com 10.190.33.30        ##使用指定DNS服务器“10.190.33.30”进行解析
服务器:  UnKnown
Address:  10.190.33.30        ##DNS服务器地址10.190.33.30名称:    www.wl.com
Address:  10.190.33.3##解析成功nslookup 10.190.33.20 10.190.33.30
服务器:  UnKnown
Address:  10.190.33.30名称:    mail
Address:  10.190.33.20

在这里插入图片描述

2.C-7-2客户机
ping 10.190.33.10        ##pingDNS服务器地址,确保可以和DNS主服务互相通信ping 10.190.33.30        ##pingDNS服务器地址,确保可以和DNS从服务互相通信vim /etc/resolv.conf        ##编辑"resolv.conf"文件# Generated by NetworkManagernameserver 10.190.33.10            ##修改DNS主服务器IPnameserver 10.190.33.30            ##修改DNS主服务器从Pnslookup             ##使用"nslookup"命令解析
> www.wl.com        ##解析域名“www.wl.com”
Server:        10.190.33.10    ##默认DNS服务器
Address:    10.190.33.10#53        ##默认DNS服务器地址Name:    www.wl.com            ##需要解析的域名
Address: 10.190.33.3        ##解析后的地址
>
> 10.190.33.3
3.33.190.10.in-addr.arpa    name = www.wl.com.

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

关闭主服务器后测试

rm -rf /var/cache/bind/named_dump.dbnslookup www.wl.com        ##解析域名“www.wl.com”nslookup 10.190.33.3

在这里插入图片描述


http://www.ppmy.cn/devtools/19311.html

相关文章

【Pytorch】PytorchCPU版或GPU报错异常处理(10X~4090D)

Pytorch为CPU版或GPU使用报错异常处理 文章目录 Pytorch为CPU版或GPU使用报错异常处理0.检查阶段1. 在conda虚拟环境中安装了torch2.卸载cpuonly3.从tsinghua清华源安装不完善误为cpu版本4.用tsinghua清华源安装成cpu错误版本5.conda中torch/vision/cudatoolkit版本与本机cuda版…

Python编程----递归求解兔子的数量

描述 兔子的数量以这样的方式增长:每个月的兔子数量等于它前一个月的兔子数量加它前两个月的兔子数量,即f(n)f(n-1)f(n-2)。假设第1个月的兔子有2只,第2个月的兔子有3只,你能使用递归的方法求得第n个月的兔子有多少只吗&#xff…

微前端micro-app 子应用 调用父应用方法

参考:micro-app官方文档 场景描述 父应用存储一套vuex数据,其中包含登录信息token等,登录信息透传给子应用使用。 当子应用中的接口返回“登录失效”时,需要清空父应用vuex中的登录相关信息,并且跳转到登录页面。 原…

Nest.js项目小结2

1.配置了项目路径别名 tsconfig.json {"compilerOptions": {"module": "commonjs","declaration": true,"removeComments": true,"emitDecoratorMetadata": true,"experimentalDecorators": true,&quo…

SpringBoot教程(十九) | SpringBoot集成knife4j

首先介绍一下Knife4j. 就是一款接口文档框架,跟swagger类似。 但是整合了很多swagger的功能,页面比swagger美观。现在大有取代swagger之势 官方文档地址: https://doc.xiaominfo.com/docs/quick-start 其实主要的集成方式,在文档…

java中泛型(一)

泛型简介 在之前关于类的学习中我们知道,一个类中可以定义它的属性以及方法,在那里我们定义类的属性时不同的属性我们采用的是不同的数据类型,这就要求我们对每一个数据的类型进行声明操作。但是我们想到这样一个问题,如果这个类有…

持续集成和持续部署(CI/CD)

持续集成(Continuous Integration,简称CI)和持续部署(Continuous Deployment,简称CD)是现代软件开发中的重要实践,旨在提高开发团队的效率和软件交付的质量。 持续集成是指开发人员将代码频繁地…

STM32自己从零开始实操01:原理图

在听完老师关于 STM32 物联网项目的所有硬件课程之后,就是感觉自己云里雾里,明明课程都认真听完了,笔记也认真记录,但是就是感觉学到的知识还不是自己。 遂决定站在老师的肩膀上自己开始设计项目,将知识变成自己的&am…