Linux系统下搭建DNS服务器——DNS原理总结
2017-03-09 15:40
267 查看
2017-01-07 整理
DNS原理
域名到IP地址的解析过程
IP地址到域名的反向域名解析过程
抓包分析DNS报文和具体解析过程
DNS服务器搭建和配置
这个东东也是今年博主参见校招的时候被很多公司问过的,虽然理论性比较强,但是作为一个程序员,个人认为熟悉DNS是非常重要的,要理解它并能帮助解决一些实际问题。
用过 Linux 么?你用它平时都做什么事情啊?(首先是在该环境下写代码,搭建过一些集群,当然还有一些服务器的搭建,比如本文内容)
DNS 是基于 TCP 还是 UDP 的?端口号是多少?
具体忘了,说到了负载均衡的请求分发(聊了DNS的分发功能)
什么是DNS劫持?
虽然当时回答了,但是还是感觉得系统总结下,备忘。
View Code
以上是12字节的DNS包头
| 报文头 |
+---------------------+
| 问题 | 向服务器提出的查询记录
+---------------------+
| 回答 | 服务器回复的资源记录
+---------------------+
| 授权 | 权威的资源记录
+---------------------+
| 格外的 | 格外的资源记录
+---------------------+
Queries为查询或者响应的正文,如下是请求报文里的问题部分
View Code
此外,为了减轻单台DNS服务器的负载,有时要将同一DNS区域的内容保存在多个DNS服务器中(主从备份,分布式存储),这时,就要用到DNS的“区域传输”功能。在分布式的DNS数据库中,当一个域的辅助名字服务器在启动时,将从该域的主名字服务器执行区域传送。辅助服务器将定时(通常是3小时)向主服务器进行查询以便了解主服务器数据是否发生变动,如果有变动,为了数据一致性,将执行一次区域传送,区域传送将使用TCP,因为传送的数据远比一个查询或响应多。
故DNS主要使用UDP,TCP为辅,如果是UDP,那么无论是名字解析器还是名字服务器都必须自己处理超时和重传。此外,DNS不像其他的使用UDP的应用一样,大部分操作集中在局域网上,DNS查询和响应通常经过广域网。分组丢失率和往返时间的不确定性在广域网上比局域网上更大。这样对于DNS客户程序,一个好的重传和超时程序就显得更重要。
域名服务器 (named)
DNS 解析库函数
DNS 服务器运行调试所用的工具
Bind 是一款开源的 DNS 服务器软件,由美国加州大学 Berkeley 分校开发和维护的,按照 ISC 的调查报告,BIND 是世界上使用最多最广泛的域名服务系统,通过搭建私有的 DNS 服务器,可以把国外的一些不可描述的 ip 地址放到自己的 DNS 服务器中畅快浏览。
安装环境本地ubuntu,客户端和服务器都是使用的一台机器
ACL_百度百科
View Code
View Code
DNS原理
域名到IP地址的解析过程
IP地址到域名的反向域名解析过程
抓包分析DNS报文和具体解析过程
DNS服务器搭建和配置
这个东东也是今年博主参见校招的时候被很多公司问过的,虽然理论性比较强,但是作为一个程序员,个人认为熟悉DNS是非常重要的,要理解它并能帮助解决一些实际问题。
面试实录
打开一个URL,在网络层面都发生了哪些事情?(当中说到了DNS原理,这个是绕不过的)用过 Linux 么?你用它平时都做什么事情啊?(首先是在该环境下写代码,搭建过一些集群,当然还有一些服务器的搭建,比如本文内容)
DNS 是基于 TCP 还是 UDP 的?端口号是多少?
具体忘了,说到了负载均衡的请求分发(聊了DNS的分发功能)
什么是DNS劫持?
虽然当时回答了,但是还是感觉得系统总结下,备忘。
DNS原理和理解
DNS的本质是什么?
Domain Name System = DNS(域名系统)其实是一个数据库,是用于 TCP/IP 程序的分布式数据库,同时也是一种重要的网络协议。DNS储存了网络中的 IP 地址与对应主机的信息,邮件路由信息和其他网络应用方面的信息,用户通过询问解决库(解决库发送询问并对DNS回应进行说明)在 DNS 上查询信息。DNS的作用是什么?
DNS是网络分层里的应用层协议,事实上他是为其他应用层协议工作的,简单说就是把域名,或者说主机名转化为IP地址(同时也提供反向域名查询的功能),类似字典,比如访问 www.baidu.com,实际访问的是它的IP地址,因为机器识别的是拥有固定格式和含义的IP地址,而域名可以千奇百怪,甚至是中文,不利于识别。还有比如公司内部的域验证,通过分配给员工的域账号登录内网就必须通过DNS来找到域名权限服务器,来认证身份,故有些书上说:DNS是因特网世界里不可缺少的东西。比如,使用host命令进行DNS查询
hostView Code
然后是查询的问题数
View Code以上是12字节的DNS包头
然后是DNS的报文身体部分(问题or回答部分)
+---------------------+| 报文头 |
+---------------------+
| 问题 | 向服务器提出的查询记录
+---------------------+
| 回答 | 服务器回复的资源记录
+---------------------+
| 授权 | 权威的资源记录
+---------------------+
| 格外的 | 格外的资源记录
+---------------------+
Queries为查询或者响应的正文,如下是请求报文里的问题部分
View Code
下面看DNS响应报文
View CodeDNS使用的网络层协议
DNS同时支持UDP和TCP访问,当名字解析器发出一个查询请求,并且返回响应报文中的TC位设置为1时,名字解析器通常使用TCP重发原来的查询请求,TCP能将用户的数据流分为一些报文段,用多个报文段来传送任意长度的用户数据,即允许返回的响应超过512个字节。此外,为了减轻单台DNS服务器的负载,有时要将同一DNS区域的内容保存在多个DNS服务器中(主从备份,分布式存储),这时,就要用到DNS的“区域传输”功能。在分布式的DNS数据库中,当一个域的辅助名字服务器在启动时,将从该域的主名字服务器执行区域传送。辅助服务器将定时(通常是3小时)向主服务器进行查询以便了解主服务器数据是否发生变动,如果有变动,为了数据一致性,将执行一次区域传送,区域传送将使用TCP,因为传送的数据远比一个查询或响应多。
故DNS主要使用UDP,TCP为辅,如果是UDP,那么无论是名字解析器还是名字服务器都必须自己处理超时和重传。此外,DNS不像其他的使用UDP的应用一样,大部分操作集中在局域网上,DNS查询和响应通常经过广域网。分组丢失率和往返时间的不确定性在广域网上比局域网上更大。这样对于DNS客户程序,一个好的重传和超时程序就显得更重要。
DNS熟知的端口号
DNS服务器使用的熟知端口号无论对UDP还是TCP都是53本地私有 DNS 服务器搭建
BIND (Berkeley Internet Name Domain)是DNS协议的一个实现,提供了DNS主要功能的开放实现,包括域名服务器 (named)
DNS 解析库函数
DNS 服务器运行调试所用的工具
Bind 是一款开源的 DNS 服务器软件,由美国加州大学 Berkeley 分校开发和维护的,按照 ISC 的调查报告,BIND 是世界上使用最多最广泛的域名服务系统,通过搭建私有的 DNS 服务器,可以把国外的一些不可描述的 ip 地址放到自己的 DNS 服务器中畅快浏览。
安装环境本地ubuntu,客户端和服务器都是使用的一台机器
安装配置BIND
View Code配置 DNS 主服务器(最好是设置主备)
View CodeACL_百度百科
服务器环境测试
View Code重启 BIND
View Code配置 DNS 客户端
找一台机器作为DNS客户端,将客户端的 DNS 修改为刚刚搭建的DNS服务器的 ip 地址View Code
使用nslookup验证
使用nslookup来查询服务器(若使用其他的客户端, ip 地址 需要加入到 "trusted" ACL 里面)。View Code
相关文章推荐
- Linux系统下搭建DNS服务器——DNS原理总结
- centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns 第三十节课
- DNS查询原理总结
- DNS服务器概念的简单的介绍,与搭建一个简单的DNS名称缓存服务器,实现域名解析(一)
- DNS原理总结及其解析过程详解
- DNS原理总结及其解析过程详解
- 什么是DNS?DNS端口号是多少?什么是DNS服务,DNS服务器?DNS域名解析原理
- dnscrypt-proxy+dnsmasq搭建无污染DNS服务器
- DNS BIND 搭建企业内部高可用DNS服务器
- DNS服务器原理详解与Centos6.x下搭建DNS服务器
- DNS的功能和原理?(总结)
- 什么是DNS?DNS端口号是多少?什么是DNS服务,DNS服务器?DNS域名解析原理
- DNS服务器的搭建以及DNS的正向-反向解析、主从同步、子域授权。 推荐
- 什么是DNS,怎么用虚拟机搭建DNS服务器
- DNS原理总结及其解析过程详解
- Linux系统下内存申请应用的方法原理总结
- DNS服务器系列之一:DNS服务原理、安装及主从配置
- DNS原理总结及其解析过程详解
- 2-7-RHEL6.5搭建DNS服务器案例分析与总结(Red Hat Enterprise Linux Server6.5)@
- DNS域名服务及搭建缓存DNS服务器详解(2)