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
相关推荐
爱吃青椒不爱吃西红柿‍️12 分钟前
华为ASP与CSP是什么?
服务器·前端·数据库
IT果果日记13 分钟前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教16 分钟前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特29 分钟前
环境变量简介
linux
小陈phd1 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
是阿建吖!1 小时前
【Linux】进程状态
linux·运维
hzyyyyyyyu1 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
明明跟你说过2 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
Komorebi.py3 小时前
【Linux】-学习笔记05
linux·笔记·学习