CentOS7 DNS详解

一、DNS基础

DNS(Domain Name System),域名系统是互联网的一项非常重要的基础设施,它将人类可读的主机名转换成计算机可读的IP地址,DNS系统是一种分布式数据库系统,它由许多DNS服务器组成,这些服务器通过共同工作来完成DNS查询请求。

在DNS中,域名被分为多个层次,每个层次中包含多个子域名。例如,edu.cn是一个域名,它包含了.edu和.cn两个子域名。在DNS树形结构中,最顶层是根域名点,它并不包含其他子域名,而是包含了所有顶级域名,如.com、.edu等。下面是一张DNS树形结构示意图:

.
|
+--com
|  |
|  +--example
|  |
|  +--...
|
+--edu
   |
   +--china
   |
   +--...

当我们在浏览器中输入一个域名时,浏览器首先从本地DNS缓存中寻找是否有该域名的解析结果。如果没有,则向本地DNS服务器发送查询请求。本地DNS服务器将查询请求进一步转发到更高层次的DNS服务器,直到找到该域名对应的IP地址,然后将结果返回给浏览器,浏览器再通过该IP地址访问对应的服务器。

二、CentOS7下的DNS配置

CentOS7默认使用的是systemd-resolved服务,该服务通过systemd来管理,并且已经被集成到systemd的网络配置中,作为CentOS7下的系统级DNS服务器。在CentOS7中,可以通过以下命令来查看systemd-resolved服务的状态:

systemctl status systemd-resolved

如果该服务没有启动,则可以通过以下命令来启动:

systemctl start systemd-resolved

CentOS7下的DNS配置文件为/etc/resolv.conf,该文件保存了系统级别的DNS解析配置。使用该文件可以设置DNS服务器地址、域名搜索路径等信息,格式如下:

nameserver DNS服务器地址
search 域名搜索路径

在/etc/resolv.conf文件中如果添加了nameserver和search配置,则查询DNS时会优先使用这里配置的DNS服务器和域名搜索路径,如果没有配置,则会使用127.0.0.53作为DNS服务器,默认使用systemd-resolved服务解析。

三、使用DNS查询命令

DNS的查询工具有很多,其中最常用的工具是nslookup和dig。

1、nslookup

nslookup是一个非常常用的DNS查询命令工具,它可以查询指定主机的DNS信息,例如主机名、IP地址、域名Server等。使用该命令可以检查DNS服务器是否能够正确解析域名。例如,通过以下命令可以查询baidu.com的IP地址:

nslookup baidu.com

执行结果为:

Server:    8.8.8.8
Address 1: 8.8.8.8
Address 2: 8.8.4.4

Name:      baidu.com
Addresses: 220.181.38.148
           220.181.57.217
           39.156.66.14
           180.101.49.11

在查询域名时,nslookup也会自动读取/etc/resolv.conf文件中的DNS服务器信息,并使用它来进行DNS解析。

2、dig

dig是另一个强大而又灵活的DNS查询命令,它不仅可以查询DNS解析结果,还可以输出DNS的详细信息、控制查询策略等。例如,通过以下命令可以查询baidu.com的IP地址:

dig baidu.com

执行结果为:

; <> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13440
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		212	IN	A	39.156.69.79
baidu.com.		212	IN	A	39.156.69.83
baidu.com.		212	IN	A	39.156.69.84
baidu.com.		212	IN	A	39.156.69.85

;; Query time: 0 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jul 15 10:02:01 CST 2020
;; MSG SIZE  rcvd: 87

与nslookup类似,dig也会从/etc/resolv.conf文件中读取DNS服务器信息,然后使用它进行DNS解析。

四、BIND的安装和配置

BIND是一个非常流行的DNS服务器软件,它支持大多数的UNIX和Linux操作系统,以及Windows等。在CentOS7中,我们可以使用yum来安装BIND:

yum install bind bind-utils

安装完成之后,可以通过以下命令来启动BIND服务:

systemctl start named

BIND服务的配置文件保存在/etc/named.conf文件中,该文件包含了DNS服务器的配置信息,我们可以通过修改该文件来配置BIND服务器。例如,以下是一个基本的named.conf配置文件示例:

options {
        listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { none; };
        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";
        allow-query     { localhost; };
        recursion yes;
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

以上named.conf配置文件中包含了DNS的基本设置,可以根据实际情况进行修改。

五、使用BIND服务器

在使用BIND服务器时,我们需要将其配置为系统级别DNS服务器,即将/etc/resolv.conf文件中的nameserver地址修改为BIND服务器地址,如:

nameserver 192.168.0.1
search mydomain.com

然后重启named服务:

systemctl restart named

现在,我们就可以使用nslookup或dig来查询BIND服务器配置的DNS解析结果了。例如:

nslookup www.baidu.com
dig www.baidu.com

六、总结

本文简单介绍了CentOS7下的DNS服务和两个常用的DNS查询命令nslookup和dig,以及如何安装、配置和使用BIND服务器。通过不断深入学习和实践,我们可以更好地理解和掌握DNS系统相关的知识和技能。

原创文章,作者:SQHTF,如若转载,请注明出处:https://www.506064.com/n/370777.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
SQHTFSQHTF
上一篇 2025-04-22 01:14
下一篇 2025-04-22 01:14

相关推荐

  • CentOS 6如何删除resolv.conf的DNS

    本文将介绍在CentOS 6操作系统下如何删除resolv.conf文件中的DNS配置信息。 一、备份resolv.conf文件 在修改resolv.conf文件之前,建议首先备份…

    编程 2025-04-29
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论