企业常见服务(二):DNS服务详解

艺帆风顺 发布于 2025-04-07 23 次阅读


DNS 概述

DNS是域名系统(Domain Name System)的缩写,它是互联网上的一项核心服务

DNS的主要功能是将人类易于记忆的域名转换为计算机能够理解的IP地址。在互联网上,每个设备都需要一个唯一的IP地址来进行通信,但由于IP地址通常是一串难以记忆的数字,使用IP地址也能访问,但人们更倾向于使用域名来访问网站和网络服务。因此,DNS的作用就是将域名解析为对应的IP地址,从而使设备能够相互通信和访问互联网上的各种服务和资源。

域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。而不需要记住复杂的IP地址。

DNS 服务器的层次结构

从上到下依次为根域名服务器、顶级域名服务器和二级域名服务器。域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。

DNS域名解析过程

  • 用户输入域名:用户在浏览器中输入想要访问的域名。

  • 本地DNS服务器查询:浏览器会向本地DNS服务器发送查询请求,询问域名对应的IP地址。

  • 递归查询:如果本地DNS服务器有该域名的记录,它会直接返回IP地址;如果没有,它会向上一级DNS服务器发送查询请求。

  • 根DNS服务器查询:根DNS服务器会返回下一级DNS服务器的地址,继续递归查询过程,直到找到包含该域名的IP地址的DNS服务器。

  • DNS服务器返回IP地址:最终,本地DNS服务器会将从上级DNS服务器获得的IP地址返回给浏览器。

  • 浏览器访问目标服务器:浏览器使用从DNS服务器获得的信息,通过IP地址连接到目标服务器并访问相应的页面内容。

域名解析包含两种查询方式,分别是递归查询迭代查询

递归查询

        递归查询是一种从主机到本地域名服务器的查询方式。当主机向本地域名服务器发出查询请求时,本地域名服务器会向其他 DNS 服务器发送多次查询请求,直到找到所需的 IP 地址为止。递归查询需要 DNS 服务器不断地向其他 DNS 服务器请求,直到找到所需的 IP 地址为止。递归查询在查询过程中会一层一层地向下递归,直到找到所需的域名对应的 IP 地址,然后将查询结果返回给请求的主机。

迭代查询

        迭代查询是一种从本地 DNS 服务器向根域名服务器发出查询请求的方式。当本地 DNS 服务器向根域名服务器发出查询请求时,根域名服务器会给出查询结果或者告诉本地 DNS 服务器下一步应该向哪个服务器进行查询。本地 DNS 服务器会根据根域名服务器给出的提示,向指定的域名服务器发出查询请求。迭代查询的查询过程是一层一层地向上迭代,直到找到所需的域名对应的 IP 地址。

递归查询和迭代查询的区别在于,递归查询是在本地 DNS 服务器上进行的,而迭代查询是在根域名服务器上进行的。递归查询需要 DNS 服务器向其他 DNS 服务器发送多次查询请求,直到找到所需的 IP 地址为止。而迭代查询则是本地 DNS 服务器向根域名服务器发送单个查询请求,根域名服务器会给出查询结果或者告诉本地 DNS 服务器下一步应该向哪个服务器进行查询。

搭建DNS服务器

1、安装bind软件包

[root@localhost ~]# yum install -y bind bind-utils
  • bind:提供dns server程序,以及几个常用的测试工具。

  • bind-utils:bind客户端程序集,提供dig,nslookup,dig等工具

2、修改主配置文件:named.conf

修改前备份配置文件

[root@localhost ~]# cp -p /etc/named.conf /etc/named.conf.bak

修改配置文件

[root@localhost ~]# sed -i 's/127.0.0.1/172.25.250.103/g' /etc/named.conf[root@localhost ~]# sed -i 's/allow-query { localhost; };/allow-query { any; };/g' /etc/named.conf

3、配置bind服务的区域文件:named.rfc1912

修改前先备份

[root@localhost ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

对源区域文件进行配置,添加liyb zone

[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "liyb.com" IN { type master; file "liyb.com.conf"; allow-update { none; };};

说明:

  • 第一行的liyb.com是域名

  • 第三行的liyb.com.conf是要做映射的解析文件

4、配置DNS解析文件

首先进入/var/named/后,拷贝 named.localhost为test.com.zone

[root@localhost ~]# cd /var/named/[root@localhost named]# cp -p named.localhost liyb.com.conf[root@localhost named]# vi liyb.com.conf$TTL 1D@ IN SOA @ liyb.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS www.liyb.com.;@ IN A 172.16.1.27www IN A 172.16.1.27harbor IN A 172.16.1.26


5、启动named服务

启动前先检查配置文件

[root@localhost ~]# named-checkzone harbor.liyb.com /var/named/liyb.com.confzone harbor.liyb.com/IN: loaded serial 0OK


启动named,并设置开机自启

[root@localhost ~]# systemctl enable named --now

6、检查域名

使用nslookup解析域名,Linux和window都可以使用该方式进行解析。

[root@localhost ~]# nslookup www.liyb.comServer: 172.16.1.27Address: 172.16.1.27#53

Name: www.liyb.comAddress: 172.16.1.27


7、修改域名

直接修改/var/named/liyb.com.conf文件。

注意:生产环境修改前一定要备份。

$TTL 1D@ IN SOA @ liyb.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS www.liyb.com.;@ IN A 172.16.1.27www IN A 172.16.1.27harbor IN A 172.16.1.26blog In A 172.16.1.26

重启:

[root@localhost named]# systemctl restart named

解析新增的域名

[root@localhost named]# nslookup blog.liyb.comServer: 172.16.1.27Address: 172.16.1.27#53

Name: blog.liyb.comAddress: 172.16.1.26