Linux的DNS域名解析服务

一.DNS基础

1.1 DNS简介

        DNS域名系统 (Domain Name System 缩写为:DNS)是因特网的一项核心服务,它作为可以将 域名 和 IP地址 相互映射的一个分布式数据库,能够使人更加方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

         实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区域(包含 IP 地址到域名的解析记录)。

TCP 53号端口:连接DNS服务器

UDP 53号端口:解析DNS

DNS作用:将域名转换成ip地址的协议

正向解析: 根据域名查找对应的IP地址(A记录)

反向解析: 根据IP地址查找对应的域名(反垃圾邮件的验证)(P记录)

分离解析: 同一个dns服务器,同一个域名情况下,不同网段进行访问会解析出不同的IP地址。

1.2 DNS 数据结构分布

树状结构最顶层称为根域,用“.”表示,相应服务器称为根服务器,整个域名空间解析权都归根服务器所有,但根服务器无法承担庞大的负载,采用“委派”机制,在根域下设置了一些顶级域,然后将不同顶级域解析权分别委派给相应的顶级域服务器,如将com域的解析权委派给com域服务器,以后但凡根服务器收到以com结尾的域名解析请求,都会转发给com域服务器,同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机。

例如:www.baidu.com.

.(最右边)    根域

.com          顶级域(一级域)

.baidu        二级域

www          主机名

解析:

根的dns服务器只能解析   主机名+根域

顶级域的dns服务器只能解析   主机名+顶级域+根域

二级域的dns服务器只能解析   主机名+二级域+一级域+根域

根. 根域名DNS服务器:专门负责根域名

一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)

.com(工商 企业)

.net(网络供应商)

.edu(教育机构)

.cn(中国国家域名)

.org(团体组织)

.gov (政府部门)

二级DNS服务器:专门负责二级域名的解析

.net.cn

.edu.cn

.com.cn

子域名DNS服务器:专门负责子域名的解析 也称为三级域名

.ina.com.cn

.pku.edu.cn

主机站点

tts9

tts6

mail

www

1.3 DNS系统类型

缓存域名服务器:

        只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,

但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定

其他 DNS 服务器作为解析来源。

主域名服务器:管理和维护所负责解析的域内解析库的服务器

从域名服务器:

从主服务器或从服务器"复制"(区域传输)解析库副本

序列号:解析库版本号,主服务器解析库变化时,其序列递增

刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔

重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔

过期时长:从服务器联系不到主服务器时,多久后停止服务

通知机制:主服务器解析库发生变化时,会主动通知从服务器

IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1

IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从

1.4 查询方式

递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)

迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)

递归和迭代都能得到结果

递归只需要问一次

迭代需要问多次

1.5 一次dns解析过程

访问www.baidu.com服务器

① 先看我主机的hosts文件,如果有直接访问,如果没有就去找你设置缓存的dns

② 如果缓存服务器有,直接反馈结果(递归),如果没有就需要迭代查询,直接去找根域服务器

③ 由于根域服务器只能解析根,无法解析www.baidu.com 但是根域服务器让你去找一级域服务器

④ 一级域发现自己也解析不了,让你去找二级域

⑤ 二级域发现这台服务在自己的管理范围内,直接反馈结果给缓存服务器

⑥ 缓存服务器再交给客户

1.6 实现方式

① 通过hosts 文件(优先级最高)  分散管理

文件格式:

ip地址   域名

② 安装 dns 服务相关的软件来实现dns解析

 集中管理:内网  bind

DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns

  • bind:服务器

  • bind-libs:相关库

  • bind-utils: 客户端

  • bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/

分布式的管理:外网   一级管一级

1.7 本地名称解析配置文件

Linux:   /etc/hosts

windows :   c:/windows/system32/drivers/etc/hosts


[root@localhost ~]#vim /etc/nsswitch.conf
#修改dns的优先级
hosts:      files dns myhostname
#修改 files和 dns的先后  优先级就不同。如果files在前面,那么file优先级就比较高

1.查看优先级

2. 在配置文件里面设置域名和地址对应

3.使用优先级高的ip

4.进入 /etc/nsswich.conf 调换优先级

二:正向解析资源记录及配置

① 先安装软件

bind  安装包的名字

named   程序的名字

        named程序的主要文件:

/etc/named.conf   主配置文件

/etc/named.rfc1912.zones   子配置文件  域名配置文件

/var/named/数据库文件     定义了域名和ip地址的对应关系

② 主配置文件 /etc/named.conf

③ 域名配置文件 /etc/named.rfc1912.zones

④ 配置正向区域数据文件

在新创建配置文件里面进行设置

SOA 记录类型:

A  正向解析(将域名地址翻译成ip地址)

NS   域名服务器

CNAME   别名

PTR   反向解析(将ip地址解析成域名)  

⑤ 关闭防火墙和防护,启动 named 服务

⑥ 正向解析

6.1 查看dns是否生效

解析

如果是当前主机想使用此dns解析

6.2 dig   解析域名

dig    www.pj.com    @192.168.44.10    使用192.168.44.10服务器来解析

6.3 检查文件格式  

##
检查启动文件格式

named-checkconf

named-checkzone  pj.com   /var/named/pj.com.zone

三.反向解析

① 在正向解析的基础上

修改区域配置文件

② 复制正向解析文件到指定位置

③ 修改数据库文件

④ 重新启动

4.1 rndc  指令

rndc是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作。 

⑤ 开始反向解析

四.主从服务

设置备胎dns,也就是有至少两个dns

我们拿192.168.44.10为主  192.168.44.20为从

① 192.168.44.10 主的配置

主的主配置文件

主的从配置文件

主的数据库文件配置

检查一下

② 192.168.44.20 从的配置

再添加一个DNS

从的主配置文件配置

从的从服务器的配置文件

验证一下

③ 测试:

④ 主从同步小问题:

192.168.44.10 里面的数据库文件进行了修改

192.168.44.20里面解析还是之前的

主 来解析

从 来解析

4.1 分析

从只会定时向主汇报更新,如果想快速的,这就需要主主动去寻找从

4.2 解决方法:

效果:

五. 分离解析

5.1 了解分离解析

DNS分离解析即将内外网的相同域名解析为不同的IP地址。现实网络中一些电商网站为了让用户有更好的体验效果解析速度更快,就把来自不同运营商的用户解析到相对应的服务器这样就大大提升了访问速度。

比如:有两台服务器A和B,其中A在北京,B在上海,我们当然希望北京的用户访问北京的服务器,上海的用户访问上海的服务器,但是服务器对外的地址只有一个,比如www.baidu.com,对内而言我们希望实现分离解析,我们需要一台服务器C,在用户发访问A或B的之前,判断他们属于哪个城市,然后给他们分配服务器.

分离解析的作用:

1.能够区分客户机的来源

2.为不同类别的客户机提供不同的地址解析
 

5.2 方案:

① 服务器设置

② 从配置文件

③ 数据库文件配置

pj.com.yang   对应 192.168.44.0 段

pj.com.peng  对应 10.0.0.0 段

④ 对应网卡配置

ens33网卡对应192.168.44.0 段

ens36网卡对应10.0.0.0 段

⑤ 重启网卡,然后开启服务

⑥ 测试:

在 win 7 里解析 ,效果应该是 10.0.0.10 解析 

win 10 这里我们用linux测试,效果一样。对应的是 192.168.44.1 解析

六 域名解析工具

6.1 nslookup

6.2 dig

格式: dig  www.pj.com   @192.168.44.10   

        使用192.168.44.10 服务器来解析

6.3 host

七. CDN 内容分发网络

① 内容分发网络(Content Delivery Network,CDN)是建立并覆盖在承载网上,由不同区域的服务器组成的分布式网络。
② CDN将源站资源缓存到分属各地域的边缘服务器,利用全球调度系统使用户能够就近获取,有效降低访问延迟,降低源站压力,提升服务可用性。
③ CDN通过广泛的网络节点分布,提供快速、稳定、安全、可编程的全球内容分发加速服务,支持将网站、音视频、下载等内容分发至接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。

资源分类:

静态资源:不需要服务器二次处理的(图片  text  视频)

动态资源:需要服务器进行二次处理的资源(java  php  python)

5开头代表服务端错误

4开头代表客户端错误

200 代表正确

304 跳转缓存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/314066.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CCNet】《CCNet:Criss-Cross Attention for Semantic Segmentation》

ICCV-2019 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 Experiments on Cityscapess5.3 Experiments on ADE20K5.4 Experiments on COCO 6 Conclusion(own) 1 Ba…

GEM5 McPAT教程:源代码解读McPAT NoC功耗 arbiter部分

简介 McPAT用的很多,大多只是写个python或perl脚本替换xml文件.没有深入到为什么xml脚本这些值要换,以及这写填进去xml的值是怎么影响计算的.本问从源代码一步步读下来,解释每一步是如何计算的. power 构成: 动态功耗其实更相关于energy McPAT的power 核心是两类,动态和静态…

新年的第一个项目管理计划借助工具制定,真高效!

年终总结刚提交没多久,新年的第一个项目就接踵而来了,是一个中大型项目,也是我做的比较少的类型。之前主要做一些中小型项目,项目的交付周期不长、所需资源也较少,基本上都能顺利的交付,所以一般简要规划下…

【设计模式-6】建造者模式的实现与框架中的应用

建造者模式又被成为生成器模式,是一种使用频率比较低,相对复杂的创建型模式,在很多源码框架中可以看到建造者的使用场景,稍后我们会在本文末尾展示几个框架的使用案例。  建造者模式所构造的对象通常是比较复杂而且庞大的&#x…

PaddleSeg的训练与测试推理全流程(超级详细)

LeNet模型量化 参考文档一.下载项目地址:https://gitee.com/paddlepaddle/PaddleSeg/tree/release%2F2.5/特别注意下载版本: 二.paddlepaddle-gpu安装1.环境安装参考文档:https://gitee.com/paddlepaddle/PaddleSeg/blob/release/2.8/docs/in…

x-cmd pkg | pypinyi - 汉字拼音转换工具

目录 简介首次用户功能特点相关工具进一步探索 简介 pypinyin 是一个汉字拼音转换工具,支持多种词库,多种输出格式,支持自定义词组拼音库或单字拼音库。 首次用户 使用 x env use pypinyin 即可自动下载并使用 在终端运行 eval "$(cur…

计算机中vcruntime140.dll丢失如何修复,马上教会你

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“VCRuntime140.dll丢失”。VCRuntime140.dll是Visual C Redistributable Packages的一部分,它提供了许多常用的运行时函数。当这个文件丢失或损坏时,可能会导致某些应…

Python如何对csv文件进行操作

csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存储为csv文件,文件内容是: No.,Name,Age,Score1,mayi,18,99 2,jack,21,89 3,tom,25,95 4,rain,19,80 假设上述csv文件保存…

基于STM32F103C8T6单片机的DHT11温湿度传感器与OLED显示屏实时动态数据监测系统设计

标题: 摘要: 本文提出了一种利用STM32F103C8T6微控制器,结合DHT11数字温湿度传感器和OLED显示屏实现环境温湿度实时、直观显示的方法。该系统通过低功耗且精确的DHT11传感器获取环境温湿度信息,并借助于STM32F103C8T6强大的处理能…

大模型学习之书生·浦语大模型3——基于InternLM和LangChain搭建知识库

基于InternLM和LangChain搭建知识库 1 大模型开发范式 LLM的局限性 知识受限:最新知识无法实时获取专业能力有限:有广度无深度定制化成本高:训练成本高 RAG VS Finetune RAG: 无需重新训练组织外挂加入知识容易受基座模型的影响…

软件测试|解读Python的requirements.txt文件:管理项目依赖的完整指南

简介 在Python项目中,管理依赖库是必不可少的。requirements.txt文件是一种常用的方式,用于列出项目所需的所有依赖库及其版本。本文将详细介绍requirements.txt的用法,帮助你更好地管理项目的依赖。 使用步骤 创建requirements.txt文件&am…

Linux之Iptables简易应用

文档形成时期:2009-2024年 和iptables打交道有15年了,经过无数实践后,形成一个简易应用文档。 文档主题是简易应用,所以其原理不详述了。 因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。 文章目…

强化app广告变现用户隐私合规,移动广告变现合规技巧

移动广告技术的发展帮助开发者极大提升了广告变现效率,APP作为用户个人信息处理的重要载体,自从《个人信息保护法》颁布以来,个人信息的使用已经成为监管重点,开发者强化合规意识,让广告变现业务“细水长流”&#xff…

无公网ip如何随时随地远程查看本地群晖NAS存储的文件资源

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是前排提醒: 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机:1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

Cylinder3D论文阅读

Cylindrical and Asymmetrical 3D Convolution Networks for LiDAR Segmentation(2020年论文) 作者:香港中文大学 论文链接:https://arxiv.org/pdf/2011.10033.pdf 代码链接:https://github.com/xinge008/Cylinder3D …

BP神经网络(公式推导+举例应用)

文章目录 引言M-P神经元模型激活函数多层前馈神经网络误差逆传播算法缓解过拟合化结论实验分析 引言 人工神经网络(Artificial Neural Networks,ANNs)作为一种模拟生物神经系统的计算模型,在模式识别、数据挖掘、图像处理等领域取…

【工具栏】RestfulTool 插件的使用(接口开发规范)

目录 1. 安装 2.使用 1. 安装 2.使用 点开控制层,该控制层写了什么接口一目了然 跳转对应的接口,查看代码

基于JAVA+ssm智能旅游线路规划系统设计与实现【附源码】

基于JAVAssm智能旅游线路规划系统设计与实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql…

【Jmeter之get请求传递的值为JSON体实践】

Jmeter之get请求传递的值为JSON体实践 get请求的常见传参方式 1、在URL地址后面拼接,有多个key和value时,用&链接 2、在Parameters里面加上key和value 第一次遇到value的值不是字符串也不是整型,我尝试把json放到value里面&#xff0…

迅为RK3588开发板编译 Buildroot单独编译图形化界面三

第三步:编译 Recovery 首先在 linux 源码目录下输入以下命令进入编译的 UI 界面,进入之后如下所示: ./build.sh 然后将光标移动到第四个 recovery,点击回车即可开始 recovery 的编译,编译过程如下所示: 编…