Liunx_DNS域名解析服务

目录

DNS术语

域名分层

[顶级域名(Top-Level Domain, TLD)](#顶级域名(Top-Level Domain, TLD))

[二级域名(Second-Level Domain, SLD)](#二级域名(Second-Level Domain, SLD))

子域名(Subdomain)

[FQDN(Fully Qualified Domain Name)](#FQDN(Fully Qualified Domain Name))

域名分层的意义

域名解析

域名解析过程:

[DNS 客户端检测工具](#DNS 客户端检测工具)

host命令

dig命令

[DNS Checker](#DNS Checker)

配置DNS方式

1.本机文件解析

2.使用本地DNS服务器解析

3.修改网卡配置文件定义DNS


DNS(Domain Name System,域名系统)是互联网的核心服务之一,用于将人类可读的域名(如 example.com)转换为计算机可用的 IP 地址(如 192.0.2.1)。它是互联网中的关键组件,使用户可以通过易记的域名访问网站和服务,而无需记住复杂的数字 IP 地址。

域名解析,英文是 "Domain Name Resolution",是指将域名转换为 IP 地址的过程。它是互联网的关键服务之一,使用户可以通过易记的域名访问网站和其他在线服务,而不必记住复杂的数字 IP 地址。

DNS术语

(以下术语要知道是什么)

  1. 域名(Domain Name) :由字符组成的地址,用于标识特定的网站或网络服务。例如,www.example.com 是一个域名。

  2. IP 地址(IP Address) :网络设备的唯一标识符,通常是四组数字的组合,用于在网络上定位设备。例如,192.0.2.1

  3. 域名解析(DNS Resolution):将域名转换为 IP 地址的过程。通过 DNS 服务器查询以找到对应的 IP 地址。

  4. DNS 服务器(DNS Server):用于存储域名与 IP 地址映射关系的服务器。包括权威 DNS 服务器和递归 DNS 服务器。

  5. 权威 DNS 服务器(Authoritative DNS Server):存储特定域名的权威信息,回答对该域名的查询请求。

  6. 递归 DNS 服务器(Recursive DNS Server):负责处理 DNS 查询请求,通常会与其他 DNS 服务器通信以获取答案。

  7. 根服务器(Root Server):最高级别的 DNS 服务器,管理互联网的顶级域名。全球共有 13 台根服务器。

  8. 顶级域名(Top-Level Domain, TLD) :域名的最高级别分类,通常是最后一部分,如 .com.org.net

  9. 二级域名(Second-Level Domain, SLD) :顶级域名下的一部分,通常是域名的主体部分,例如 exampleexample.com 的二级域名。

  10. TTL(生存时间,Time to Live):DNS 记录的有效时长,过了这个时间后需要重新查询。

  11. DNS 记录(DNS Record):存储在 DNS 服务器中的信息,包含域名与 IP 地址的关联关系。常见的记录类型有 A 记录、CNAME 记录、MX 记录等。

  12. 缓存(Cache):DNS 服务器暂时存储查询结果的机制,以提高后续查询的速度。

DNS记录类型:(这些记录带颜色要知道)

  1. A 记录(A Record) :将域名映射到 IPv4 地址。每个域名可以有多个 A 记录,以实现负载均衡或容错。

  2. AAAA 记录(AAAA Record) :将域名映射到 IPv6 地址,类似于 A 记录,但用于 IPv6。

  3. CNAME 记录(CNAME Record) :别名记录,用于将一个域名指向另一个域名。例如,www.example.com 可以是 example.com 的 CNAME。

  4. MX 记录(Mail Exchange Record) :邮件交换记录,指定域名的邮件服务器及其优先级。用于处理电子邮件的传递。

  5. NS 记录(Name Server Record) :名称服务器记录,指定管理某个域名或子域名的权威 DNS 服务器。

  6. TXT 记录(Text Record) :文本记录,可用于存储任意文本数据。常用于验证域名的所有权、配置电子邮件的防垃圾邮件策略等。

  7. SRV 记录(Service Record):服务记录,用于指定某个服务的主机名和端口号。常用于基于 DNS 的服务发现。

  8. PTR 记录(Pointer Record):指针记录,用于反向 DNS 解析,即将 IP 地址映射到域名。通常用于确定与 IP 地址关联的域名。

  9. SOA 记录(Start of Authority Record):授权起始记录,指定区域文件的基本信息,包括主要名称服务器、管理员电子邮件、序列号、刷新间隔等。

  10. CAA 记录(Certification Authority Authorization Record):认证机构授权记录,用于指定哪个认证机构可以为该域名颁发证书。它有助于防止未经授权的证书颁发。

  11. SPF 记录(Sender Policy Framework Record):发送者策略框架记录,用于指定发送电子邮件时的授权邮件服务器列表。帮助防止电子邮件欺骗。

  12. DKIM 记录(DomainKeys Identified Mail Record):域名密钥识别邮件记录,包含公钥,用于电子邮件的加密签名验证。

域名分层

域名系统(Domain Name System,DNS)采用分层架构,允许互联网用户通过友好的域名访问网站,而不必记忆复杂的 IP 地址。这种分层结构使得互联网的域名管理和组织变得灵活且可扩展。以下是域名的分层结构及其解释:

顶级域名(Top-Level Domain, TLD)

这是域名的最顶层部分,通常是域名的最后一部分。TLDs 包括:

  • 通用顶级域名(gTLDs) :常见的通用域名,如 .com.org.net.info 等。近年来,ICANN 扩展了 gTLD 的范围,增加了诸如 .xyz.tech 等许多新域名。

  • 国家或地区顶级域名(ccTLDs) :代表特定国家或地区的域名,如 .cn(中国)、.uk(英国)、.jp(日本)等。

  • 基础设施顶级域名 :如 .arpa,用于特定的互联网基础设施目的。

二级域名(Second-Level Domain, SLD)

这是紧随顶级域名之后的部分,通常是域名的主要标识部分。二级域名是互联网公司或组织通常用于标识其服务的部分。例如,在 example.com 中,example 是二级域名。

在 ccTLDs 的情况下,二级域名有时用于进一步划分特定类别。例如,在英国的 ccTLD 中,.co.uk 通常用于商业实体,.ac.uk 用于学术机构。

子域名(Subdomain)

子域名是在二级域名基础上进一步划分的部分,通常用于指定特定的服务、部门、地点等。子域名可以继续嵌套。例如,在 www.example.com 中,www 是子域名。更多示例包括:

  • 子域名的常见用途
    • blog.example.com:用于博客。
    • mail.example.com:用于邮件服务。
    • shop.example.com:用于电子商务。

FQDN(Fully Qualified Domain Name)

完全限定域名是指包含所有层次的域名,包括子域名、二级域名、顶级域名,以及每个部分之间的点分隔符。例如,www.example.com 是 FQDN。

比如:www.aliyun.com.

  • DNS里面顶层是: "." 表示根域 ( 一共有十三台根服务器)

  • ".com"是顶级域名;分类:职能:com域,.org域(非营利机构),edu域名(教育)国家:.cn ,.us ,

  • "aliyun.com"是主域名(二级域),主要指企页名;

  • "example.aliyun.com"是子域名(也可称为托管三级域名);

  • "www.example.aliyun.com"是子域名的子域(也可称为托管四级域名)。

域名分层的意义

域名分层提供了灵活性和可扩展性:

  • 组织灵活性:允许公司、机构等根据需要创建子域名,组织他们的服务和部门。

  • DNS 管理:DNS 的分层结构使得管理变得更加容易和清晰。每个层次可以有不同的权威 DNS 服务器。

  • 简化用户体验:通过使用域名而不是 IP 地址,用户可以更容易地访问网站和网络服务。

域名解析

域名是分层结构,域名DNS服务器也是对应的层级结构。有了域名结构,还需要有域名DNS服务器去解析域名,且是需要由遍及全世界的域名DNS服务器去解析,域名DNS服务器实际上就是装有域名系统的主机。域名解析过程涉及4个DNS服务器,分别如下:

  1. 根域名服务器(Root DNS Servers) :这是最高级别的域名服务器,它管理全球的顶级域名,如 .com.org.net 等。

  2. 顶级域名服务器(Top Level Domain Servers) :这些服务器管理二级域名。例如,.com顶级域名服务器就管理诸如 google.comfacebook.com 等域名。

  3. 权威域名服务器(Authoritative DNS Servers):对于特定域名,这些服务器有最终的授权信息。它们包含主机的IP地址与域名的映射。

  4. 本地域名服务器或缓存域名服务器(Local DNS Servers):也称为 ISP DNS 服务器。ISP(Internet Service Provider,网络服务提供商)为用户提供这样的域名服务器。它们在域名解析过程中起着重要的作用,能收集并缓存大量的 DNS 着陆信息。

这些服务器一起工作,帮助你解析你想访问的网站的域名,转化为相应的IP地址。这个过程涉及到多级别的服务器查询,直到找到正确的IP地址。

除此之外,在域名解析过程中,还可能涉及到一些变换应用和服务,比如在中国大陆,为了网络审查,有以防火长城(Great Firewall)为代表的一些网络审查工具会对DNS进行干预,构造伪造的DNS回应,这通常被称为DNS污染。

++每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器。
每一级域名服务器都知道下级域名服务器的IP地址,以便于一级一级向下查询。
++

域名解析过程:

当你在浏览器中输入一个网站的URL,如 www.example.com后,DNS解析的详细过程通常会按照以下步骤进行:

(在浏览器中访问,通常浏览器会最先查看浏览器缓存,如果浏览器没有缓存找不到就会进行如下步骤寻找)

  1. 检查 /etc/hosts 文件:Linux系统首先会查找/etc/hosts文件中是否包含所请求的域名。如果找到,系统将返回对应IP;如果没有找到,进行下一步。

  2. 调用 resolver 库:然后Linux将请求转发给本地的DNS解析器库(被称为 resolver)。它读取 /etc/resolv.conf 文件以获得 DNS 服务器的 IP 地址。

  3. 访问 DNS 服务器 :在/etc/resolv.conf文件定义的DNS服务器中进行查询。一般这个服务器是你的本地路由器或者是ISP提供的服务器。如果之前所有的步骤都未能解析该域名,网络服务提供商(ISP)会接收到解析请求。ISP运行他们自己的DNS服务器,这些服务器保存着大量的域名和IP地址记录。

  4. 递归搜索:如果你的ISP的DNS服务器也不知道你的域名,它会开始一个递归搜索。请求会被发送到根DNS服务器,然后是顶级域名(TLD)服务器,然后是权威DNS服务器。

    • 根DNS服务器: 这些服务器不知道域名的具体信息,但知道去哪里查找这些信息。如对于.com域名,它会转向查找.com的顶级域名服务器。
    • 顶级域DNS服务器(TLD):接下来,请求将会被发送到TLD DNS服务器(如.com或.org)。这些服务器无法直接提供有关你的域的请求的详细条目信息,但是它能告诉哪些服务器拥有这些信息。
    • 权威DNS服务器:权威服务器是最后能为你的请求提供一个答案的服务器。它有一份带有你域名的IP地址的记录,将这个地址返回给DNS递归服务器,然后这个服务器终于可以回答在此传递过程之初所提出的问题 --- 这个域名的IP地址是什么。
  5. 获取 IP 地址:最终,在整个过程结束时,请求的应用程序将收到它要找的 IP 地址。然后这个IP地址将被应用程序用于与目标服务器进行通信。

这是一个一般的过程,特定的行为可能因发行版和系统配置的不同而有所不同。

DNS 客户端检测工具

使用这些命令需要安装bind-utils 包

bash 复制代码
yum install -y bind-utils

host命令

它可以解析域名对应的 IP 地址和别名等信息。例如,你可以使用 host www.example.com 来获取 www.example.com 的相关 DNS 记录。详细的命令和用法可以在 这里 找到。

  • -t TYPE:指定查询的记录类型。

    • 例如,host -t A example.com 查询A记录(IPv4地址),host -t AAAA example.com 查询AAAA记录(IPv6地址),host -t MX example.com 查询MX记录(邮件交换),host -t CNAME example.com 查询CNAME记录。
  • -a :查询所有可用的DNS记录。这是host -t ANY的简写。

  • -v:显示详细输出。在一些实现中,它可以提供额外的调试信息。

  • -s:使用简洁模式输出结果,通常用于减少输出的冗余。

  • -W SECONDS:指定等待DNS响应的超时时间。默认值取决于系统设置。

  • -R NUMBER :指定DNS重试次数。如果初始查询失败,host将尝试再次查询,NUMBER代表重试次数。

  • -d:启用调试模式,显示更多关于DNS查询的内部信息。

  • -T:使用TCP而非默认的UDP进行查询。TCP通常用于较大的DNS响应或需要可靠的传输。

  • DNS服务器:在命令末尾指定一个DNS服务器,用于查询特定域名的DNS信息。

    • 例如,host example.com 8.8.8.8 使用Google Public DNS服务器查询 example.com
  • -m:以机器可读的格式输出结果,适合脚本自动化处理。

  • -C:检查DNS名称服务器的一致性。

bash 复制代码
基本域名查询(会返回ipv4地址和ipv6地址)
host example.com

查询基本 A 记录(IPv4 地址)
host -t A example.com
获取 example.com 的 IPv4 地址。

查询 MX 记录(邮件交换记录)
host -t MX example.com
获取与邮件相关的 DNS 信息。

查询 NS 记录(名称服务器记录)
host -t NS example.com
找出一个域名的权威名称服务器。

查询 CNAME 记录(别名记录)
host -t CNAME www.example.com
查看某个域名是否是其他域名的别名。

查询所有 DNS 记录
host -a example.com
获取 example.com 相关的所有 DNS 记录。

指定 DNS 服务器
host example.com 8.8.8.8
使用指定的 DNS 服务器(在这里是 Google Public DNS)查询 example.com。

查询 AAAA 记录(IPv6 地址)
host -t AAAA example.com
查询 IPv6 地址。

设置超时时间
host -W 5 example.com
设置超时时间为 5 秒,以避免查询过长时间没有响应。

使用 TCP
host -T example.com

dig命令

Dig 是一个非常流行的 DNS 诊断工具,用于查询 DNS 记录并测试 DNS 服务器响应。举例来说,你可以输入 dig www.example.com 来查询 www.example.com 的 DNS 记录。dig功能与 nslookup 类似,建议使用 dig 来取代 nslookup

  1. 指定查询类型

    • -t TYPE: 指定查询的记录类型。常用的类型包括 A、AAAA、MX、CNAME、NS、SOA、TXT 等。例如:dig -t MX example.com 查询邮件交换记录。
  2. 指定 DNS 服务器

    • @DNS_SERVER: 使用 @ 符号后接 DNS 服务器的 IP 地址或主机名来指定查询使用的 DNS 服务器。例如:dig @8.8.8.8 example.com 使用 Google Public DNS 查询 example.com
  3. 简化输出

    • +short: 仅显示 DNS 查询的答案部分,适合简洁输出。例如:dig +short example.com
  4. 详细信息

    • +trace: 执行递归查询,显示整个查询路径。这对于调试 DNS 问题非常有用。
    • +stats: 显示查询的统计信息,包括查询耗时、数据包大小等。
    • +noall: 关闭默认输出的所有部分。
    • +answer: 只显示答案部分,与 +noall 一起使用以减少输出。
  5. 域名信息

    • -x IP_ADDRESS: 进行反向 DNS 查询,将 IP 地址转换为域名。例如:dig -x 8.8.8.8
  6. 指定查询类

    • -c CLASS: 指定查询的 DNS 类,默认是 IN (Internet)。其他类包括 CHAOS 等。
  7. 调试和性能

    • +tcp: 使用 TCP 而不是默认的 UDP 进行查询。这对于较大的 DNS 响应或要求更可靠的传输很有用。
    • +dnssec: 查询时启用 DNSSEC 支持,检查 DNSSEC 记录。
  8. 区域传送

    • AXFR: 尝试进行区域传送(zone transfer),获取整个 DNS 区域的数据。需要 DNS 服务器允许此操作。
bash 复制代码
基本查询
dig example.com
这将查询域名 example.com 的默认记录,通常是 A 记录。

指定查询类型
dig -t MX example.com
使用 -t 参数可以指定查询类型。常用类型包括 A、AAAA、MX、CNAME、NS、SOA、TXT、SRV 等。

查询名称服务器
dig @8.8.8.8 example.com
使用 @ 后跟 DNS 服务器的地址来指定查询应使用哪个 DNS 服务器。在这里,使用 Google Public DNS。

启用详细输出
dig +noall +answer example.com
默认情况下,dig 返回大量信息。+noall 关闭所有输出,+answer 仅显示 DNS 响应的答案部分。这是查看关键结果的一种简洁方式。

查询 NS 记录
dig -t NS example.com
这将返回 example.com 的权威名称服务器。

查询域名的 SOA 记录
dig -t SOA example.com
SOA 记录(Start of Authority)包含域名的基本信息,如主名称服务器、域名管理员、刷新间隔等。

递归查询
dig +trace example.com
启用 +trace 可以进行递归查询,查看查询在 DNS 体系结构中的完整路径。这对于排查 DNS 问题非常有用。

查询 TXT 记录
dig -t TXT example.com
TXT 记录常用于存储任意文本信息,例如 SPF 或 DKIM 记录。

获取查询时间
dig +stats example.com
使用 +stats 可以查看查询的统计信息,包括查询所需的时间。

以简洁方式输出
dig +short example.com

DNS Checker

这是一个在线的免费 DNS 检测工具,它可以检查域名的 DNS 设置并给出建议和优化技巧。你可以访问 dnschecker.org 来使用该工具。访问不到就需要点加速魔法。

配置DNS方式

1.本机文件解析

配置 /etc/hosts 文件

/etc/hosts 文件用于本地解析主机名到IP地址,是DNS查询的第一个检查点。它的格式是IP地址,紧接着是主机名,后面是别名(可选)。

  1. 打开 /etc/hosts 文件 使用文本编辑器打开文件:

    bash 复制代码
    vim /etc/hosts
  2. 添加本地解析记录 添加解析记录,格式如下:

    bash 复制代码
    192.168.1.10 my-server my-alias 
    10.0.0.5 another-host

    这里,127.0.0.1 通常用于解析 localhost,可以根据需要添加其他记录。

  3. 保存并退出 保存文件并退出编辑器。/etc/hosts 文件中的更改会立即生效。

2.使用本地DNS服务器解析

/etc/resolv.conf 文件用于指定DNS服务器和其他与DNS相关的配置。注意,许多系统会自动生成此文件,因此直接编辑可能会被覆盖。理想情况下,应该通过网络管理工具(如 NetworkManager)进行配置。

  1. 打开 /etc/resolv.conf 文件 如果需要查看或修改,可以打开文件:

    bash 复制代码
    vim /etc/resolv.conf
  2. 查看DNS服务器配置 查看当前配置的DNS服务器。通常会看到 nameserver 指令,后面跟着DNS服务器的IP地址。

    bash 复制代码
    [root@localhost ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 192.168.226.2
  3. 手动设置DNS服务器 如果要手动设置,可以暂时编辑 /etc/resolv.conf

    bash 复制代码
    vim /etc/resolv.conf

    然后添加或修改DNS服务器:

    bash 复制代码
    nameserver 8.8.8.8 
    nameserver 8.8.4.4 
    
    #8.8.8.8 和 8.8.4.4 是 Google Public DNS 的两个公共 DNS 服务器
    #是 Google 提供的免费、公开的 DNS 解析服务,面向全球用户。这些 IP 地址可以用于快速、可靠地解析域名到 IP 地址。
    #上述是配置得语法演示

3.修改网卡配置文件定义DNS

在centos7中修改网卡配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens33 当然因系统不同,网卡配置文件的名字会有不同。

  1. 找到网卡配置文件 通常位于 /etc/sysconfig/network-scripts/ 目录中,文件名类似于 ifcfg-eth0

  2. 添加 DNS 配置 编辑网卡的配置文件,添加或修改 DNS 服务器行:

    bash 复制代码
    #编辑网卡配置文件的命令
    vim /etc/sysconfig/network-scripts/ifcfg-ens33 
    bash 复制代码
    #这是在网卡配置文件的最后行要添加的内容
    DNS1=8.8.8.8
    DNS2=8.8.4.4

    在我们配置静态IP时,其中有一项就是配置这个dns,当时一般都dns填写的都是局域网的网关ip
    当然,我们最多可以添加三个 DNS 服务器。这种配置方式提供了冗余和故障转移的能力。在 DNS 解析过程中,#客户端会按照指定顺序查询这些 DNS 服务器。如果第一个服务器不可用,系统会尝试查询下一个,直到找到 响应。

  3. 重启网络服务 在更改后,重启网络服务以应用配置:

    bash 复制代码
    systemctl restart network
相关推荐
mubeibeinv10 分钟前
项目搭建+图片(添加+图片)
java·服务器·前端
无为之士20 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
秋名山小桃子30 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉1213831 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
岑梓铭37 分钟前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉37 分钟前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei41 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
7yewh1 小时前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
Arenaschi1 小时前
在Tomcat中部署应用时,如何通过域名访问而不加端口号
运维·服务器
小张认为的测试1 小时前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试