前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是DNS服务?域名解析的工作原理是什么?

什么是DNS服务?域名解析的工作原理是什么?

原创
作者头像
reload
修改2024-07-25 22:57:05
3510
修改2024-07-25 22:57:05
举报
文章被收录于专栏:Linux运维

今天来简单聊一聊DNS服务,众所周知,在网络中计算机之间是通过IP地址进行互相访问的,当我们访问某个域名时,其背后是DNS服务器进行了域名解析,并得到对应的IP地址。域名相比于IP地址而言,更加简单易记,从而可以更方便的访问。

一、背景引入及DNS概述

我们先从背景出发,然后具体介绍什么是DNS,最后通过搭建DNS服务器进行上手实战。

1、背景引入

公司内网中需要通过域名访问到开发的web应用,以获得更好的访问体验。为此需要在内网中搭建DNS服务器解析域名,通过内网DNS服务,访问到公司内部应用。

如下图例,我们PC端在访问某个域名时,其实背后是DNS服务器先进行了域名解析,得到对应的IP地址,域名只是一种访问的形式,其底层还是IP地址。

2、DNS概述

DNS(domain name system),即域名管理系统。域名由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,域名的好处是实现更方便的访问,而不用去记复杂的IP地址。

互联网中,计算机都是通过IP地址进行互相访问的。计算机 => IP地址

由于IP地址复杂难记,如192.168.91.10,所以一般使用域名进行访问

域名:代替IP实现计算机的访问(域名可以看作一种上层应用,其底层还是IP地址)

每个域名 => DNS服务器 => 对应的IP地址

二、DNS解析

1、DNS正向解析

域名的正向解析域名 => IP(A记录)

将主机域名转换为对应的IP 地址,以便网络程序能够通过主机域名访问到对应的服务器主机

2、DNS反向解析

域名的反向解析IP => 域名(PTR记录)

将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名

三、DNS结构

域名:如 www.baidu.com

DNS结构:www.baidu.com. => 从右向左解析

1、根域(.)

  • 在整个 DNS 系统的最上方一定是 . (小数点),这个 DNS 服务器称为 root或“根域”。
  • 根域 (全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本)

2、一级域名

常见的顶级域名如:com,cn,net,edu,gov,org,io等。

3、二级域名

需要自己购买管理,如 google.com.

四、DNS工作原理简述

1、工作原理概述

如下图例,当我们在PC端访问某个地址时,该访问请求首先会转到DNS服务器,并会在缓存cache中查找。如果该域名之前已经被访问过了,则缓存中就会有记录,此时直接把域名转换为IP而不用进行后续的步骤;如果在缓存中找不到对应的IP地址,就需要对其进行解析,有递归查询和迭代查询。顾名思义递归查询就是从根域开始查,逐步往下,只需查询一次便能得到结果,但比较耗时。

如果询问一次得到结果 => 递归查询

如果询问多次得到结果 => 迭代查询

一次递归,多次迭代。由于递归查询非常耗时,所以一般情况下使用迭代查询。

2、dig工具

使用dig工具来追踪DNS的解析过程

代码语言:powershell
复制
# 追踪DNS的解析过程
dig +trace www.baidu.com
# 正向解析	  
dig www.baidu.com	
# 反向解析		  
dig -x IP地址			    

五、DNS服务器搭建

1、Bind概述

Bind(Berkeley Internet Name Domain)是一款开放源码的DNS服务器软件,由美国加州大学Berkeley(伯克利)分校开发和维护,是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

如下图例,搭建了两台DNS服务器(一主一从),主DNS服务器通过udp协议对PC端访问的域名进行解析,得到对应IP地址,从而实现在内网web服务器上的访问,而主从之间的数据传输使用的是tcp协议。

注:DNS 的域名解析都是 udp/53,主从之间的数据传输默认使用tcp/53

2、DNS服务器搭建

2.1 环境准备

由模版机克隆出3台一模一样的机器,分别为Client、DNS和Web。

编号

主机名称

IP地址

备注信息

1

client.itweb.cn

192.168.91.12

client客户端,用于测试

2

dns.itweb.cn

192.168.91.11

dns服务器,用于实现域名解析

3

web.itweb.cn

192.168.91.10

web服务器,用于搭建内部web服务

1)更改主机名称与IP地址

代码语言:powershell
复制
# 更改主机名称
hostnamectl set-hostname client.itweb.cn
hostnamectl set-hostname dns.itweb.cn
hostnamectl set-hostname web.itweb.cn
# 切换使立即生效
su
# 打开网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 编辑
BOOTPROTO=none
IPADDR=192.168.91.10
# 或192.168.91.11或 192.168.91.12
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
DNS1=8.8.8.8
DNS2=114.114.114.114
# 更改UUID编号的后3位,必须是唯一的

更改完成后,重启网络

代码语言:powershell
复制
systemctl restart network

3台机器都分别做如上设置。需要更改的是IPADDR和UUID(改后3位)。

2)使用MX远程连接工具进行连接

3)关闭防火墙与SELinux

代码语言:powershell
复制
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动
systemctl disable firewalld
#获取SELinux的状态,并关闭
setenforce 0

vim /etc/selinux/config
SELINUX=disabled

涉及多台机器的相同操作时,可以使用MX的多执行功能(即在一台机器上输入的命令会同步到所有终端,实现多执行),如下

4)配置YUM源

有网配置公网YUM源、无网就配置光盘或自建YUM源

代码语言:powershell
复制
yum clean all
yum makecache
2.2 安装DNS软件

DNS服务器:

代码语言:powershell
复制
yum install bind -y

安装完成后,可以使用rpm -q查询是否安装成功:

代码语言:powershell
复制
rpm -q bind
# 查询软件安装时生成了哪些文件
rpm -ql bind

#(部分列举如下)
# 日志轮转文件
/etc/logrotate.d/named
# 配置文件目录
/etc/named
# 主配置文件
/etc/named.conf
# zone文件,定义域
/etc/named.rfc1912.zones
# 服务管理脚本
/usr/lib/systemd/system/named.service
# 二进制程序文件
/usr/sbin/named
# 检测配置文件
/usr/sbin/named-checkconf
# 检测域文件
/usr/sbin/named-checkzone
# 根域服务器
/var/named/named.ca
# 正向解析区域文件模板
/var/named/named.localhost
# 反向解析区域文件模板
/var/named/named.loopback
# dns服务器下载文件的默认路径
/var/named/slaves
# 进程pid
/var/rum/named

注:find主要用来搜索计算机中的文件,而rpm主要用来检查计算机中是否安装过某个软件

3、DNS正向解析配置

正向解析实现从域名到IP。DNS服务主要有主要有 named.conf和 named.rfc1912.zones两个配置文件。

/etc/named.conf:主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器)

/etc/named.rfc1912.zones:主要定义域名如何解析(正向解析),解析到具体哪个IP地址

1)对named.conf、named.rfc1912.zones进行备份,防止改错后方便还原

代码语言:powershell
复制
cp /etc/named.conf /etc/named.conf.bak
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

2)详解named.conf主配置文件(访问权限控制)

代码语言:powershell
复制
vim /etc/named.conf

添加任何主机都可以访问的权限:

3)zones子配置文件(域名应该指向哪个IP地址)

代码语言:powershell
复制
# 打开配置文件
vim /etc/named.rfc1912.zones
# 编辑
...
zone "itweb.cluster" IN {
        type master;
        file "itweb.cluster.zone";
        allow-update { none; };
};

vim小技巧:

把19-23行copy到42行的后面

代码语言:powershell
复制
:19,23 co 42

4)在/var/named目录创建 itweb.cluster.zone文件,定义正向解析

代码语言:powershell
复制
cd /var/named
# 复制named.localhost,并重命名为itweb.cluster.zone
cp -p named.localhost itweb.cluster.zone

注:-p代表复制文件时保留文件的原有属性

5)编辑 itweb.cluster.zone文件,定义域名的指向

代码语言:powershell
复制
vim itweb.cluster.zone

添加记录的目的:实现当访问 www.itweb.cluster时,就会自动访问 192.168.91.10这个地址。

扩展:zone文件的格式说明

代码语言:powershell
复制
zone文件详解
# $TTL  缓存的生存周期
# @ = zonename = itcast.com  当前域
# IN  互联网
# SOA 开始授权
# NS  dns服务端	nameserver
# A   ipv4 正向
# AAAA IPV6
# CNAME 别名
# MX  邮件交互记录  5 数字代表优先级 数字越小优先级越高

# 0       ; serial    更新序列号	
# 1D      ; refresh   更新间隔(从服务器下载数据)
# 1H      ; retry     失败重试
# 1W      ; expire    区域文件的过期时间
# 3H )    ; minimum   缓存的最小生存周期

# D Day、H Hour、W Week

4、检查文件

检查named.conf与zones文件是否有误。

代码语言:powershell
复制
# 以下若没有任何提示,说明文件无误。
named-checkconf /etc/named.conf
named-checkconf /etc/named.rfc1912.zones

# 检查itcast.cluster.zone文件,若提示OK,说明无误
cd /var/named
named-checkzone itweb.cluster.zone itweb.cluster.zone

以上若没有任何提示,说明文件无误。

5、启动DNS服务

代码语言:powershell
复制
# 重启服务
systemctl restart named
# 查看服务的端口占用情况
netstat -tnlp |grep named

6、Web服务搭建

代码语言:powershell
复制
# 安装Apache(httpd)服务
yum install httpd -y
# 启动服务
systemctl start httpd
# 使用echo命令将文本写入到index.html文件中
echo 'DNS Test ...' > /var/www/html/index.html

此时访问Web服务器的IP地址,显示如下说明Web服务搭建成功

六、测试正向解析

在Client客户端服务器上进行操作

1、添加DNS服务器

1)临时添加

代码语言:powershell
复制
echo 'nameserver 192.168.91.10' > /etc/resolv.conf

注:电脑重启,网络刷新(restart network),VMware挂起,临时DNS都会失效

2)永久添加

代码语言:powershell
复制
# 编辑网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

DNS=192.168.91.10

这样当我们客户端访问某域名时,确保都是由该DNS服务器进行解析

这里只是进行测试,使用临时添加即可。

2、检测正向解析是否生效

代码语言:powershell
复制
# 使用 nslookup命令
nslookup www.itweb.cluster
# 或 crul命令
curl http://www.itweb.cluster

好了,以上就是本次的内容,希望能对你有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景引入及DNS概述
    • 1、背景引入
      • 2、DNS概述
      • 二、DNS解析
        • 1、DNS正向解析
          • 2、DNS反向解析
          • 三、DNS结构
            • 1、根域(.)
              • 2、一级域名
                • 3、二级域名
                • 四、DNS工作原理简述
                  • 1、工作原理概述
                    • 2、dig工具
                    • 五、DNS服务器搭建
                      • 1、Bind概述
                        • 2、DNS服务器搭建
                          • 2.1 环境准备
                          • 2.2 安装DNS软件
                        • 3、DNS正向解析配置
                          • 4、检查文件
                            • 5、启动DNS服务
                              • 6、Web服务搭建
                              • 六、测试正向解析
                                • 1、添加DNS服务器
                                  • 2、检测正向解析是否生效
                                  相关产品与服务
                                  云服务器
                                  云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档