商务服务
Linux系统下搭建DNS服务器——DNS原理总结
2024-11-05 04:16
  • DNS原理
  • 域名到IP地址的解析过程
  • IP地址到域名的反向域名解析过程
  • 抓包分析DNS报文和具体解析过程
  • DNS服务器搭建和配置
  • 这个东东也是今年博主参见校招的时候被很多公司问过的,虽然理论性比较强,但是作为一个程序员,个人认为熟悉DNS是非常重要的,要理解它并能帮助解决一些实际问题。

    Linux系统下搭建DNS服务器——DNS原理总结

  • 打开一个URL,在网络层面都发生了哪些事情?(当中说到了DNS原理,这个是绕不过的)
  • 用过 Linux 么?你用它平时都做什么事情啊?(首先是在该环境下写代码,搭建过一些集群,当然还有一些服务器的搭建,比如本文内容)
  • DNS 是基于 TCP 还是 UDP 的?端口号是多少?
  • 具体忘了,说到了负载均衡的请求分发(聊了DNS的分发功能)
  • 什么是DNS劫持?
  • 虽然当时回答了,但是还是感觉得系统总结下,备忘。

    DNS的本质是什么?

    Domain Name System = DNS(域名系统)其实是一个数据库,是用于 TCP/IP 程序的分布式数据库,同时也是一种重要的网络协议。DNS储存了网络中的 IP 地址与对应主机的信息,邮件路由信息和其他网络应用方面的信息,用户通过询问解决库(解决库发送询问并对DNS回应进行说明)在 DNS 上查询信息。

    DNS的作用是什么?

    DNS是网络分层里的应用层协议,事实上他是为其他应用层协议工作的,简单说就是把域名,或者说主机名转化为IP地址(同时也提供反向域名查询的功能),类似字典,比如访问 ,实际访问的是它的IP地址,因为机器识别的是拥有固定格式和含义的IP地址,而域名可以千奇百怪,甚至是中文,不利于识别。还有比如公司内部的域验证,通过分配给员工的域账号登录内网就必须通过DNS来找到域名权限服务器,来认证身份,故有些书上说:DNS是因特网世界里不可缺少的东西。

    比如,使用host命令进行DNS查询

    host命令用来做DNS查询。如果命令参数是域名,命令会输出关联的IP;如果命令参数是IP,命令则输出关联的域名。

    为什么叫域名系统,什么是域名?

    人和人要互相识别和记忆,需要名字作为辅助,而对于网络世界,在因特网内也需要一种命名系统来做类似的事情,该系统使用了域来划分,任何一个网络里的主机(或者路由器)都有独一无二的域名(类似国家代码),域又能继续划分为子域(类似每个国家有不同的省份代码),子域还能继续划分(每个省都有自己的各个城市的代码)……在因特网内对应的就是顶级域名(com,net,cn,org等),二级域名……注意这仅仅是一种逻辑的划分。而这些域名系统在形式上组成了一种树结构。

    名字(也叫标号)组成只能是英文或者数字,目前中文也支持了,长度不大于63个字符,总共完整域名长度不超过255个字符,英文域名不区分大小写,从右到左,域名级别依次降低。www是表示万维网,不属于域名。

    域名空间树结构

    域名的名字空间是一个树结构,根没有名字,各个树叶是单台计算机名,不能继续划分。

    域名服务器

    DNS服务器管理范围的单位是区,不是域,因为区才是DNS服务器管理的实际范围,区是域的子集,同一个区里的主机节点必须互通,它们都有一个统一的访问权限,该访问权限在通过一个权限域名服务器管理。比如,公司a,有两个部门x,y,部门x又有两个分部q和r,a会设立一个区叫(区和域可以同名),这是一个大的权限范围,然后下属再设立一个区,叫,那么区和都属于域。

    DNS服务器也是类似域名空间树一样的树结构,依次分为根域名服务器(知道所有的顶级域名服务器的域名和IP,最重要,它要是瘫痪,整个DNS就完蛋),然后是顶级域名服务器(管理二级域名),其次是权限域名服务器(负责区的域名服务器)。

    最后是本地域名服务器(也叫默认域名服务器),本地域名服务器离主机很近(书上说不超过几个路由器),速度很快,其实本地域名服务器本质不属于域名服务器架构。

    如图就是Linux的本地域名服务器配置

    如图是Windows下本地DNS服务器配置

    分布式域名系统

    因为因特网规模很大,所以整个因特网只使用一个域名服务器是不行的。为了可靠,使用了分布式的域名系统,即使单个计算机除了故障,也不会妨碍整个DNS系统的正常运行。并采用c/s方式。DNS使大多数名字都在本地解析(resolve),仅有少量解析需要在因特网上通信,因此分布式DNS系统借助分布式的主机备份和缓存机制,非常强壮和有足够的性能。

    DNS劫持及解决办法

    DNS劫持又称域名劫持,说白了就是当用户请求DNS解析的时候,对正常的DNS请求报文进行拦截,偷到请求的域名,然后就可以做手脚,比如常常遇到访问某个健康的网址的时候,明明输入的网址是,结果却跳转到了不可描述的网站……即把审查范围,或者权限范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,效果就是让人误以为断网(360网络诊断里经常说的,打的开QQ,但是无法浏览网页的现象),或者得到了假网址,黑客们经常利用漏洞或者程序的缺陷对用户的DNS进行篡改,进行钓鱼网站的欺诈活动。

    解决办法可以手动修改本地DNS域名服务器地址,首选DNS服务器:114.114.114.114,是国内第一个、全球第三个开放的DNS服务地址,又称114DNS,或8.8.8.8(google提供的DNS服务器)等,然后修改宽带密码,路由器密码,主机密码。

    当一个应用需要把主机名解析为IP地址时,该应用进程就调用地址解析程序,它自己就变为了DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP方式先发给本地域名服务器,本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回,应用程序获得目的主机的IP地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时称为DNS的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

    域名的解析过程

    主机向本地域名服务器的查询一般都是采用递归查询

    如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户端的身份(递归思想),向根域名服务器继续发出查询报文(替主机查询),不让主机自己进行查询。递归查询返回的结果或者是IP,或者报错。这是从上到下的递归查询过程。

    本地域名服务器向根域名服务器查询一般采用迭代查询

    当根域名服务器收到本地域名服务器的查询请求,要么给出ip,要么通知本地域名服务器下一步应该去请求哪一个顶级域名服务器查询(并告知本地域名服务器自己知道的顶级域名的IP),让本地域名服务器继续查询,而不是替他查询。同理,顶级域名服务器无法返回IP的时候,也会通知本地域名服务器下一步向谁查询(查询哪一个权限域名服务器)……这是一个迭代过程。

    到底采用哪种查询,取决于原始查询报文的设置,不绝对。

    DNS缓存

    DNS中使用了高速缓存,因为域名到地址的映射不常变,故为提高效率而设,主机在启动时从本地服务器下载名和地址的全部数据,并维护存放自己最近使用的域名的缓存,并且只在从缓存中找不到名字时才使用根域名服务器发起查询。实际中,当一个 DNS 服务器接收到一个 DNS 回答后,会将其信息缓存一段时间,当再有一个对相同域名的查询时,便可直接回复。通过 DNS 缓存,大部分查询都只需要本地 DNS 服务器便可完成解析。

    DNS缓存污染

    本地域名服务器在接收到DNS请求时,先查找DNS缓存,如果缓存命中直接返回结果,如果黑客攻入路由器,对部分域名的缓存进行了更改,比如将缓存的结果指向不可描述的页面,那么即导致用户的正常请求被转移……,此时可以清除各级缓存(浏览器,系统,路由器,DNS缓存)。貌似无法避免,只能是提高安全意识,即使使用了 HTTPS也不行,因为DNS解析过程发生在HTTPS请求交互前。

    FQ方法之——hosts 文件

    Hosts是一个没有扩展名的系统文件,作用是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”, 其实 hosts 文件可以看作是一个小型的本地 DNS 服务器。

    实际上网时域名的解析过程

    优先顺序是:当用户在地址栏输入一个URL之后,浏览器首先查询浏览器的缓存,找不到就去查询Hosts文件和本地DNS缓存,如果hosts和本地DNS缓存都没有找到域名对应的IP,则自动进入路由器的缓存中检查,以上均为客服端DNS缓存,若在客户端DNS缓存还是没找到,则进入ISP DNS缓存中查询,还是找不到,最终才向 根DNS 服务器发出 DNS 查询报文,再找不到就报错……

    先了解下DNS报文,稍后会分析

    哎,这个报文格式和名字也是醉了,不过不碍事,当在浏览器内输入URL时,便开始了DNS解析过程,最后会把找到后的IP地址告知浏览器客户端,方便它继续发出 HTTP(s)请求,该过程中,浏览器提出的查询记录类型叫A记录(address)查询,其他查询记录类型常见的有A(地址)记录、CNAME(别名)记录、MX(邮件交换)记录等。

    比如问:的A记录是什么?

    是 220.181.110.181

    这个A记录意思是从域名解析得到IP地址。那么反过来,从IP地址得到域名的解析过程也需要一个记录,叫PTR记录(和A记录功能相反),可以使用nslookup命令查询,可以通过查询IP地址的PTR记录来得到该IP地址指向的域名,达到反查的目的。

    反向域名查询和垃圾邮件过滤

    IP反向解析主要应用到邮件服务器中来阻拦垃圾邮件,比如用 xxx@xxx.com 给邮箱 xxxxx@qq.com 发了一封信。qq邮件服务器会查看信头文件,信头文件显示信是由哪个IP地址发出的,然后根据IP地址反向解析,如反向解析到这个IP所对应的域名是 (不在黑名单)那么就接受,否则拒绝。

    了解反向域名-arpa

    如上是通常情况下的DNS报文,基于UDP数据报封装(同时DNS也支持TCP),并且要知道DNS服务器的默认端口是53

    如图,第一行是DNS查询报文,第二行是DNS回答报文。

    证实了DNS确实为应用层的协议,目的端口号确实是53,传输层一般情况下采用UDP也是ok的,网络层是IP协议,数据链路层有以太网帧。

    对应的抽象报文格式图

    然后是查询的问题数

    以上是12字节的DNS包头

    然后是DNS的报文身体部分(问题or回答部分)

    下面看DNS响应报文

    大体和查询报文一致,响应包就是多出了一个Answers字段

    响应报文的answer字段,第一个是请求的域名,然后cname记录表示出别名为,这个别名的地址看下面具体的回答

    DNS同时支持UDP和TCP访问,当名字解析器发出一个查询请求,并且返回响应报文中的TC位设置为1时,名字解析器通常使用TCP重发原来的查询请求,TCP能将用户的数据流分为一些报文段,用多个报文段来传送任意长度的用户数据,即允许返回的响应超过512个字节。

    此外,为了减轻单台DNS服务器的负载,有时要将同一DNS区域的内容保存在多个DNS服务器中(主从备份,分布式存储),这时,就要用到DNS的“区域传输”功能。在分布式的DNS数据库中,当一个域的辅助名字服务器在启动时,将从该域的主名字服务器执行区域传送。辅助服务器将定时(通常是3小时)向主服务器进行查询以便了解主服务器数据是否发生变动,如果有变动,为了数据一致性,将执行一次区域传送,区域传送将使用TCP,因为传送的数据远比一个查询或响应多。

    故DNS主要使用UDP,TCP为辅,如果是UDP,那么无论是名字解析器还是名字服务器都必须自己处理超时和重传。此外,DNS不像其他的使用UDP的应用一样,大部分操作集中在局域网上,DNS查询和响应通常经过广域网。分组丢失率和往返时间的不确定性在广域网上比局域网上更大。这样对于DNS客户程序,一个好的重传和超时程序就显得更重要。

    DNS服务器使用的熟知端口号无论对UDP还是TCP都是53

    BIND (Berkeley Internet Name Domain)是DNS协议的一个实现,提供了DNS主要功能的开放实现,包括

  • 域名服务器 (named)
  • DNS 解析库函数
  • DNS 服务器运行调试所用的工具
  • Bind 是一款开源的 DNS 服务器软件,由美国加州大学 Berkeley 分校开发和维护的,按照 ISC 的调查报告,BIND 是世界上使用最多最广泛的域名服务系统,通过搭建私有的 DNS 服务器,可以把国外的一些不可描述的 ip 地址放到自己的 DNS 服务器中畅快浏览。

    安装环境本地ubuntu,客户端和服务器都是使用的一台机器

    安装配置BIND

    配置 DNS 主服务器(最好是设置主备)

    服务器环境测试

    重启 BIND

    配置 DNS 客户端

    找一台机器作为DNS客户端,将客户端的 DNS 修改为刚刚搭建的DNS服务器的 ip 地址

        以上就是本篇文章【Linux系统下搭建DNS服务器——DNS原理总结】的全部内容了,欢迎阅览 ! 文章地址:http://lianchengexpo.xrbh.cn/news/13787.html 
         资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://lianchengexpo.xrbh.cn/mobile/ , 查看更多   
    最新新闻
    二胎概念火了!任泽平:未来四胎五胎可能给奖励
      人口政策问题再次广受关注。  昨日晚间,央行微信公众号发布题为《关于我国人口转型的认识和应对之策》的工作论文,聚焦了
    全球下载量突破20亿时TikTok遭遇“围剿”,张一鸣对公司员工说了啥
    抖音短视频国际版TikTok近日在美国的遭遇不断反转、不断刷新。虽然特朗普对其封禁令尚未最终拍板,但TikTok在海外年轻人中的火爆
    如何查询手机流量?查询手机流量方法教学
      手机是一个我们现在广泛使用的电子产品,我们除了利用手机进行通话之外,最多的就是利用手机上网了。如果想要利用手机上网的
    孙楠:希望自己的音乐带给观众快乐
      中新网杭州6月25日电 (胡小丽 刘文彬)1990年,孙楠发行了首张个人专辑《弯弯的月亮》,从此走上职业歌手的道路。到今天,已
    【夜读】7条成长建议,送给正在努力的你
    01改变自己会痛苦,不改变自己会吃苦不抗拒改变、不用陈旧的方式去处理新问题,是一个人走向成熟的标志。很多时候,只是一个细节
    tiktok前身是什么发展历史,一文带你了解tiktok发展历程
    在互联网发展如此迅速的今天,各种的媒体社交改变了我们的生活,带来了更多的便利条件,让我们了解这个周围以及世界的最新咨询。
    中考倒计时,科学备考秘籍请收好
      本报记者潘洁婷通讯员王晓敏  今年是“双减”政策实施以来的首次中考,距离2022年中考还有不足一个月时间。备考冲刺阶段,
    千万粉丝!他突然全网被封
    近日,在抖音拥有1800多万粉丝的倪海杉账号被平台封禁。关于倪海杉账号被封原因,网络上有多种猜测。另外,倪海杉在快手上拥有50
    全新 Model 3 发布!内外饰全面焕新,屏幕换挡进入全民时代
    6年前,特斯拉为 Model 3的亮相开了一场盛大的发布会,特斯拉首席执行官、首席设计官悉数到场。Model 3是公司当前的头等要事。马
    一部具有重大警世意义和很高文学价值的力作——评屈全绳的长篇小说《鹅头岭》
    作者:汪守德一按一般人的想象,有着数十年从军经历的老将军,离休之后不再为公务缠身,不再因百事纠结,或写一点回忆录之类的轻
    本企业新闻
    推荐企业新闻

    点击拨打: