Linux-DNS域名解析服务

系列文章目录

` 提示:仅用于个人学习,进行查漏补缺使用。
1.Linux网络设置
2.LinuxDHCP服务


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本章大概内容有:
       DNS的定义、域名结构、DNS查找顺序、域名解析的命令工具、域名解析流程、搭建本地DNS服务器、小结、补充等

提示:以下是本篇文章正文内容,下面案例可供参考

一.概述

  • DNS(域名系统)是一个分布式的数据库系统,它存储了域名的层级结构信息,以及域名与 IP 地址之间的映射关系。
  • DNS 域名解析是将域名转换为与之对应的 IP 地址的过程。这个过程对于用户能够通过容易记忆的域名来访问网络资源至关重要。
  • 在日常生活中人们习惯使用域名访问服务器,但机器间互相只认IP地址,域名与IP地址之间是多对一的关系,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

二.DNS的定义

  • DNS是“域名系统”的英文缩写。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
  • DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS。
  • 每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

三.域名结构

image.png

  • 例如:http://www.sina.com.cn./
  • http://主机名.子域.二级域.顶级域 根域/
  • 树状结构最顶层称为根域,用“.”表示,相应服务器称为根服务器,整个域名空间解析权都归根服务器所有,但根服务器无法承担庞大的负载,采用“委派”机制,在根域下设置了一些顶级域,然后将不同顶级域解析权分别委派给相应的顶级域服务器,如将com域的解析权委派给com域服务器,以后但凡根服务器收到以com结尾的域名解析请求,都会转发给com域服务器,同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机。
  • 根域
    • 位于域名空间最顶层,一般用一个 “.” 表示
  • 顶级域
    • 一般代表一种类型的组织机构或国家地区,
      • 如 .net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育机构)、.gov(政府部门)、.cn(中国国家域名)
  • 二级域
    • 用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理,
      • 如 .cn 顶级域名下面设置的二级域名:.com.cn、.net.cn、.edu.cn
  • 子域
    • 二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
  • 主机
    • 主机位于域名空间最下层,就是一台具体的计算机,
      • 如 www、mail都是具体的计算机名字,可用www.sina.com.cn.、mail.sina.com.cn. 来表示,这种表示方式称为 FQDN (完全合格域名,是指包含了所有域的主机名,其中包括根域),也是这台主机在域名中的全名
  • 补充
    • 组织域:.com .org .net .CC
    • 国家域:.cn .tw(台湾).hk(香港).iq .ir .jp(日本)反向域:114.114.114.114是国内移动、电信和联通通用的DNS手机和电脑端都可以使用。8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用
    • 223.5.5.5 和 223.6.6.6:阿里云DNS
    • IPV6 2400:3200::1 和 2400:3200:baba::1
    • 江苏省南京市(中国电信)
    • 首选DNS为:218.2.135.1 备用DNS为:61.147.37.1

四、DNS域名解析方式

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

五.DNS 域名解析的流程:

  1. 递归查询: 当一个用户尝试解析一个域名时,他们的 DNS 客户端(如 nslookupdig)会首先询问本地 DNS 服务器是否有该域名的记录。
  2. 迭代查询: 如果本地 DNS 服务器没有找到答案,它会询问根 DNS 服务器。根 DNS 服务器不直接提供域名解析,但它会指示查询应该联系哪个顶级域(TLD)的 DNS 服务器。
  3. 顶级域查询: 本地 DNS 服务器接着查询顶级域的 DNS 服务器,例如 .com、.org 或国家顶级域如 .cn。
  4. 二级域查询: 顶级域的 DNS 服务器会提供负责管理该域名的权威 DNS 服务器的地址。
  5. 权威 DNS 查询: 本地 DNS 服务器 finally queries the authoritative DNS server for the domain. The authoritative DNS server provides the IP address associated with the domain.
  6. 返回结果: 本地 DNS 服务器将获取到的 IP 地址返回给用户的 DNS 客户端。

六.Linux 中的 DNS 配置:

在 Linux 系统中,DNS 配置通常位于 /etc/resolv.conf 文件中。这个文件包含了用于解析域名的服务器地址。用户可以在这个文件中添加或修改 DNS 服务器的地址。
例如:

nameserver 8.8.8.8
nameserver 8.8.4.4
DNS 缓存:
  • 为了提高解析效率,Linux 系统通常会缓存 DNS 查询结果。这些缓存存储在 /var/cache/bind(如果使用了 BIND)或 /var/lib/dns 目录中。缓存会根据配置的缓存时间(如 /etc/resolv.conf 中的 cache-max-ttl 参数)自动更新。

七.DNS查找顺序

  1. 优先找缓存
  2. 看看DNS配置
    1. /etc/hosts [优先级最高 1:1解析]
    2. /etc/resolv.conf
    3. ifcfg-ens33 “DNS1”
  3. 找就近的DNS服务器(外部)
  4. 迭代和递归过程
    1. 先找就近的根域服务器 .
    2. 根据迭代和递归的方式,然后找顶级域DNS服务器,例如 .com .cn.
    3. 找二级域DNS服务器 .com.cn.
    4. 找子域DNS服务器 .sina.com.cn.
    5. 找主机名DNS服务器 www.sina.com.cn.
    6. 得到解析结果
    7. 获取到域名-IP解析内容

**_PS: _**Linux中有关DNS的映射文件: vim /etc/hosts
windows系统中有关DNS的映射文件: C:Windows\System32\drivers\etc\hosts

八.DNS服务器类型

  • (1)主域名服务器:负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改,具有唯一性。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。PS【权威为该主域名服务器亲自查找出的结果,非权威则为从缓存中查找出的结果】
  • (2)从域名服务器:当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
  • (3)缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
  • (4)转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
  • 小结:
    • 主域名服务器:管理和维护所负责解析的域内解析库的服务器
    • 从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本(数据文件)
    • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
    • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
    • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
    • 过期时长:从服务器联系不到主服务器时,多久后停止服务
    • 通知机制:主服务器解析库发生变化时,会主动通知从服务器

九.DNS 域名解析的命令工具

  • nslookup:这是一个用于查询 DNS 记录的工具,可以查看域名对应的 IP 地址。
  • dig:这是一个更强大的工具,可以查询域名的所有 DNS 记录,并允许用户指定查询的详细选项。
  • host:用于查询主机名对应的 IP 地址或反之。
  • ping:虽然主要用于测试网络连接,但也可以通过指定域名来测试与该域名的连接。
  • **dnslog:**可以记录所有 DNS 查询的详细信息,这对于调试和网络安全审计非常有用。

十.搭建本地DNS服务器

步骤1. 准备一台DNS服务器,关闭防火墙,并安装bind工具
systemctl stop firewalld					##1.关闭防火墙
systemctl disable firewalld				##2.禁止防火墙自启动
setenforce 0											##3.禁用SELinux的安全策略

rpm -qc bind  										##4.查询bind软件配置文件所在路径,没有的话则先安装
yum  install  bind -y 						##5.安装bind软件工具(必须网络源或光盘挂载)或rpm -ivh 前提挂载光盘(系统盘ISO镜像)

rpm -qc bind											##6.再次查看bind软件配置文件所在路径

##7.下面步骤将对以下3个文件进行配置
/etc/logrotate.d/named						###主【全局】配置文件 控制系统全局
/etc/named.rfc1912.zones					###区域配置文件 控制具体单个区域,定义解析规则
/var/named/named.localhost				###区域数据配置文件   区域信息,定义具体解析方式
......

image.png

步骤2.准本一台windows10虚拟机并关闭防火墙,作为测试步骤1DNS服务器的客户机,首先确保能ping通服务器

image.png
image.png
image.png

步骤3.修改主要【全局】配置文件
vim /etc/named.conf		###修改主要【全局配置】文件

#以下将对文件内参数进行解释
options {
        listen-on port 53 { 10.0.0.128; };		###监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有								
        listen-on-v6 port 53 { ::1; };			####ipv6行如不使用可以注释掉或者删除
        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     { any; };				###允许使用本DNS解析服务的网段,也可用any代表所有
}


zone "." IN {#正向解析“."根区域
type hint;#类型为根区域,hint为索引
file "named.ca";#区域数据文件为named.ca,#记录了13台根域服务器的域名和IP地址等信息
};


include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置

image.png
image.png

步骤4.修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones  

###以下将添加一些注释
zone "xy.com" IN{				###正向解析“xy.com.”区域,如果是逆向解析,这里的“xy.com.”将改为ip地址
        type master;			###类型为主区域		
        file "xy.com.zone";	###指定区域数据文件为xy.com.zone.
        allow-update{ none; };
};


注:这边“xy.com”与“xy.com.zone”加“ . ”运行错误
步骤5 .保留文件权限【为了安全】复制named.localhost文件【模板文件】到xy.com.zone文件【区域配置文件】
cd /var/named/				
cp -p named.localhost xy.com.zone			
###保留权限复制【保留权限是为了安全】,named.localhost为模板文件,xy.com.zone文件为上步骤设置的区域配置文件
步骤6.配置正向区域数据文件
vim /var/named/xy.com.zone			###配置正向区域数据文件

###以下将对内容加以注释
$TTL 1D																						####有效解析记录的生存周期
@       IN SOA  xy.com.  rname.invalid. (					#####“@"符号表示当前的DNS区域名
                                        0       ; serial     #更新序列号,可以是10位以内的整数
                                        1D      ; refresh		 #刷新时间,重新下载地址数据的间隔
                                        1H      ; retry			 #重试延时,下载失败后的重试间隔
                                        1W      ; expire		 #失效时间,超过该时间仍无法下载则放弃#
                                        3H )    ; minimum		 #无效解析记录的生存周期
        NS      xy.com.																			#记录当前区域的DNS服务器的名称																		##记录主机IP地址#记录主机IP地址#记录主机IP地址
        A       10.0.0.128																		#记录主机IP地址
www     IN      A     10.0.0.5															 #记录正向解析www.benet.com对应的IP
ftp     IN      CNAME    WWW															  #CNAME使用别名,ftp 是www的别名
*       IN      A     10.0.0.5														#泛域名解析,“*"代表任意主机名
~
~


步骤7 .启动服务,关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0
#如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages
#如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a
#对域名语法进行检查(named.conf)
named-checkconf -z /etc/named.conf
步骤8 .在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv .conf
#修改完后立即生效
nameserver 10.0.0.128
  或
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改完后需要重启网卡
DNS1=10.0.0.128
systemctl restart network
步骤9 测试DNS解析
nslookup 10.0.0.128

image.png

十一.小结

DNS 域名解析

  • 1.就近原则->详见7.DNS查找顺序
  • 2.DNS服务器类型
    • 1.缓存、引导/索引 -》 根域DNS服务器
    • 2.区域 域名解析
  • 3.DNS服务器使用场景
    • 通常为企业内网 - 》 DNS缓存使用、DNS解析使用
  • 4.DNS 配置方式
    • 3个核心配置文件,根据DNS服务器的定位
      • /etc/named/.conf #主配置文件【全局配置,如果仅配置此文件,则该DNS的类型定义为导引类型】
      • /etc/named.rfc1912.zones #区域配置文件 【确定是哪家公司以及公司经营性质—根据公司申报域名时提供的资质】
      • /var/named/named.localhost #区域数据配置文件 (正向解析/反向解析配置文件需要是 .zone结尾, 配置主机名-》页面主要性质是什么,以及分类映射ip地址)

十二.补充

SOA记录解析、P记录解析、A记录解析分别是什么SOA记录、PTR记录和A记录是DNS(域名系统)中常见的三种记录类型,它们各自有不同的作用:

  1. SOA记录(Start of Authority):
    • SOA记录是一种特殊的记录类型,它定义了该域名的权威DNS服务器及其相关属性。每个域至少有一个SOA记录。
    • SOA记录通常包含以下字段:
      • 主DNS服务器(Primary Server):负责该域的权威DNS服务器。
      • 负责人(Responsible Person):该域的联系人信息。
      • 序列号(Serial Number):一个递增的数字,用于记录DNS记录的版本。
      • 刷新时间(Refresh Time):刷新DNS记录的时间间隔。
      • 重试时间(Retry Time):当主DNS服务器不可用时,其他DNS服务器尝试联系主DNS服务器的间隔时间。
      • 过期时间(Expire Time):DNS记录在缓存中的最大生存时间。
      • 最小TTL(Minimum TTL):DNS记录的最小时间到 live(生存时间)。
    • SOA记录的格式通常如下:
@      IN    SOA    ns1.example.com.     admin.example.com. (
                                       2023082801      ;序列号
                                       3H              ;刷新时间
                                       15M             ;重试时间
                                       1W              ;过期时间
                                       1D )             ;最小TTL

其中,@代表当前域的名称,ns1.example.com.是主DNS服务器的名称,admin.example.com.是负责人的电子邮件地址,后面的数字是各个字段的值。

  1. PTR记录(Pointer Record):

    • PTR记录用于反向DNS查找,它将IP地址映射回其对应的域名。在IPv4网络中,通常用于解析in-addr.arpa.域,而在IPv6网络中,用于解析ip6.arpa.域。
    • 例如,如果一个IP地址是192.0.2.1,它的PTR记录可能指向host1.example.com.
    • PTR记录对于电子邮件服务尤其重要,因为它允许邮件系统验证发件人的IP地址,从而帮助防止垃圾邮件。
  2. A记录(Address Record):

    • A记录是最常见的DNS记录类型之一,它将域名映射到与之关联的IP地址。
    • 例如,example.com的A记录可能指向192.0.2.1
    • A记录是域名解析的基础,它允许用户通过域名访问网站或其他网络服务。

    这些记录一起工作,构成了一个全面的DNS系统,使得互联网上的资源能够通过易于记忆的域名来访问。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值