DNS服务-了解篇
简介
DNS是用来名字解析的,名字解析成IP地址,IP地址解析成名字,正反操作,有服务器端和客户端即 S/C
DNS是应用层协议,基于UDP/53、TCP/53端口,缺一不可
分为正向解析和反向解析/递归查询、迭代查询
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
名称解析:主机名解析
把一种名称转换为另一种名称的过程
根据用户提供的名称,去查询解析库,以得到另一种名称
hosts:文本文件
用户自定义了对应的解析列表即要解析的FQDN与IP地址对应关系
有时候hosts很好的解决了DNS服务器访问不了的情况
如:某个域所在的权威DNS服务器出问题了,网站图片不显示等,这时候在hosts文本里写上对应的FQDN和IP地址就可。
备注:FQDN也就是我们所说的网址,如www.xxx.com
如果在本机定义了hosts文本则优先本列表,本列表没有再去DNS库查询
递归查询
用户向第一个DNS服务发请求,DNS收到后,如果它这有直接的结果就直接给你,如果没有就会向根DNS服务询问,层层询问直到问道结果返回给你,负责到底
迭代查询
上述过程中去问根,根给你推荐别人,你去问它,这就是迭代查询,不会负责到底
DNS域结构图
备注:如 www.xxx.com
www:可以是主机或别名
xxx.com:是域名
DNS服务器类型
主DNS服务器
从DNS服务器
缓存DNS服务器(转发器)
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
解析答案:
肯定答案:
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:你请求的dns服务器正好是负责这个链接域的dns
非权威答案:dns服务器问别人,别人告诉它的,有时候会是假的,比如国外某些网站访问不了,就是dns告诉给你一个错误的答案,不让你访问(DNS的污染,信息篡改了)
备注:名字解析成不成功和能不能上网是两码事
资源记录
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,
必须位于解析库的第一条记录
A:internet Address,作用,FQDN --> IP
AAAA: FQDN --> IPv6
PTR:PoinTeR,IP --> FQDN
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
资源记录定义的格式:
语法:
name(名称) [TTL](生命期) IN(intnet记录) rr_type(资源记录的类型)value(值)
rr_type类型:有 A(ipv4)、 AAAA(ipv6)、SOA、NS(这两种最重要)
注意:
(1) TTL可从全局继承
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询
方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值
进行定义;此仅表示通过多个不同的名字可以找到同一个主机
记录介绍
MX记录:邮件交换器
注意:
(1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
DNS服务器 bind配置文件说明
named.conf主配置文件说明
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { // 定义全局变量 listen-on port 53 { 127.0.0.1; }; // ipv4 监听端口 listen-on-v6 port 53 { ::1; }; // ipv6 监听端口 directory "/var/named"; // 制定装载zone区域文件的目录 dump-file "/var/named/data/cache_dump.db"; // cache statistics-file "/var/named/data/named_stats.txt"; // statistics memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; }; // 允许访问列表 recursion yes; //递归查询 dnssec-enable yes; //DNS确保应答报文的完整性 dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; }; // "}"后也得分号结束 logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { // "."代表根区域 type hint; // 根区域的类型就为hint file "named.ca"; // 指定zone文件,默认已经生成 }; include "/etc/named.rfc1912.zones"; //存放自定义的区域文件
备注:配置文件总体来说分为三大块选项、日志、区域

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何带领平均入职2.6个月的新人,完成一次系统重构?
一、背景 我们旧版首页系统属于集中化设计:「全能类」FeedBase加main函数。基本上所有功能耦合在一起。每维护一行代码,必须异常谨慎,以免影响其它逻辑。在这里,先把大致背景给大家介绍一下:系统有6.6万行代码,首页逻辑的学习成本至少3个月;增加一个新feed类型工作量是7个工作日;首页扩展一个Tab工作量是约3周;没有完善的链路跟踪,线上Bug无从下手;首页目前服务端响应p95高达870ms;部分逻辑处于无人维护状态;…… 二、我们该怎么做 其实呢,思路「很」清晰——解耦模块,优化性能。 可是怎么去解耦、解耦成什么、如何优化性能?Java/Go/C……重写? 2018年2月,为了支持兄弟团队业务,首页输出了我们几乎全部的工程师。事实上,目前首页仅有三个工程师、一个实习生。最资深的员工入职只有6个月,其余基本新入职,平均入职2.6个月,且都没有大型项目维护经验。换句话说,全是新人。 以这种现状,我们怎么去重构? 大家都知道重构是一个高大上的事,每个人都很积极,每个人都想做好一些事。但大家之前都在做普通业务,面向PM开发侵染了太多底色。似乎快速完成功能、快速上线比什么都重要,似乎只有...
- 下一篇
简化React中的Action的写法,不要中间件,不写dispatch
我们在写React应用时,通常用到redux做状态管理,然后会用到一些中间件来支持异步action,比如redux-thunk.通常我们的代码类似下面这样的: //ActionType R.js export ActionType{ TYPE1:'type1', TYPE2:'type2', TYPE3:'type3', // others } //reducer reducer.js import {ActionType as AT} from 'R' export default function(state={},action){ switch(action.type){ case AT.TYPE1: return { ...state, ...action.data, // or other } case AT.TYPE2: //... default: return state } } //Action Action.js import {ActionType as AT} from 'R' const act = { action1:data=>dispatch=&g...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- MySQL8.0.19开启GTID主从同步CentOS8