DNS 详解

1、DNS 简介

DNS的名字很意思,服务名称叫dns,软件包名叫bind,执行程序叫named。
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。(百度百科)

DNS是一个互联网基础服务,网络的接入对于它也是关键性问题,需要有光缆连接与全球。海底光缆是国际互联网的骨架。光缆的多少,代表一国与互联网的联系是否紧密。有人利用微软的Bing地图,以及wikipedia的数据,做出了一幅互动式的世界海底光缆分布图。

全世界一共有13台根DNS服务器。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

域名层次结构

域名注册
代理商:万网, 新网,godaddy

1.1名词解释

域名空间 树的最大深度不得超过127层,每个节点最多可以存储63个字符

FQDN 完全正式域名/完全合格域名,根域、顶级域、二级域、子域 域名采用层次化的方式进行组织,每一个点代表一个层级表示出其相对于DNS根域的位置。

FQDN命名规则 长度不能超过256字节 允许【 a-z A-Z 0-9 - . 】 域名不区分大小写

  • com 商业公司
  • org 组织/协会
  • net 网络服务
  • edu 教育
  • gov 政府
  • mil 军事

正向解析 查找域名对应IP的过程。

反向解析 查找IP对应域名的过程。

解析器 即resolver,处于DNS客户端的一套系统,用于实现正向解析或者反向解析。

Linux DNS服务器

  • 主DNS服务器
  • 次DNS服务器
  • 第三DNS服务器

Windows DNS服务器

  • 主DNS服务器
  • 备用DNS服务器

    完整的查询请求经过的流程:
    Client --> hosts文件 --> DNS Service
    Local Cache --> DNS Server recursion--> Server Cache --> iteration -->

建议:
一般我们建议客户端DNS地址写一个,一是因为慢的DNS地址在前面会影响解析效率,不如直接找一个靠谱的,就写一个就可以了。即便写了多个DNS地址,第一个DNS服务器解析不到,绝对不会使用第二个DNS服务器。当第一个DNS服务器不在线的时候或找不到的时候,才会找第二个DNS服务器,不是解析不到是找不到的时候。所以要把最快的DNS服务器放在最前面

递归查询

  • 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机

迭代查询(反复查询)

  • 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求

公共DNS
公共DNS属于递归DNS。其典型特征为对外一个IP,为所有用户提供公共的递归查询服务。

权威DNS
处于DNS服务端的一套系统,该系统保存了相应域名的权威信息。权威DNS即通俗上“这个域名我说了算”的服务器。

2、DNS 服务

DNS主要解决两方面的问题:域名本身的增删改查以及域名到IP如何映射。
程序包:
bind 【主包服务程序】
bind-libs 【通用库文件】
bind-utils 【客户端工具】

DNS服务器的类型:

  • 主域名服务器(master server)
  • 辅助域名服务器(slave server)
  • 缓存域名服务器(caching only server)

2.1安装dns服务

配置好yum源,用yum安装bind软件包
rpm包安装
# yum install -y bind bind-utils

源码安装

            # tar
            # cd
            # groupadd -r -g 53 named
            # useradd -r -u 53 -g 53 named
            # ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
            # make
            # make install

2.2、dns配置文件

资源记录

配置样例:

缓存名称服务器的配置:
监听外部地址即可
缓存服务器应用场景,内外网带宽较低时会用到

主从复制:
1、应该为一台独立的名称服务器
2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
4、主服务器得允许从服务器作区域传送; 【区域传送可获得所有记录数据,比较危险注意权限设置】
5、主从服务器时间应该同步,可通过ntp进行
6、bind程序的版本应该保持一致;否则,应该从高,主低

转发服务器:
必须允许递归查询转发列表若为多个,则一次尝试,直到获得信息
被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行

技巧
转发列表配置精简
避免链接转发器
减少转发器负荷
避免转发器配置错误

2.3 dns启动

# /etc/init.d/named start
# chkconfig named on

2.4 检查命令

检查主配置文件:# named-checkconf
检查区域配置文件:# named-checkzone "redone.com" /var/named/redone.com.zone
检查DNS解析命令
nslookup www.xxx.com
dig -t A www.xxx.com
dig www.xxx.com
dig -x 114.114.114.114
dig +trace www.baidu.com
dig -t axfr 区域名称 @server 模拟完全区域传送

host www.xxx.com

4、DNS域名安全

安全事件
已有30年的历史,DNS仍然是整个互联网中最脆弱的一环。下面盘点一下近年来比较严重的DNS安全事件。
2009年5月19日南方六省断网事件。一起由于游戏私服私斗打挂dnspod,殃及暴风影音域名解析,然后进一步殃及电信local dns,从而爆发六省大规模断网的事故。事件影响深远。
2010年1月12日百度域名劫持事件。baidu.com的NS记录被伊朗网军(Iranian Cyber Army)劫持,然后导致www.baidu.com无法访问。事件持续时间8小时,是百度成立以来最严重的故障事件,直接经济损失700万人民币。
2013年5月4日DNS劫持事件。由于主流路由器厂商安全漏洞而导致的全网劫持事件,号称影响了800万用户。
2013年8月25日CN域被事件。cn域dns受到DoS而导致所有cn域名无法解析事故。
2014年1月21日全国DNS故障。迄今为止,大陆境内发生的最为严重的DNS故障,所有通用顶级域

域名服务器的安全相关

  • acl控制语句
  • 普通用户身份运行named
  • chroot环境
  • TSIG技术
  • DNSSEC技术

    5、总结

    互联网用到的2个关键协议:route、dns,前者解决了主机的连接问题,后者解决了主机是谁的问题,提供了短小易记的方式。

原文地址:https://blog.51cto.com/redone/2372168

时间: 2024-08-28 20:37:13

DNS 详解的相关文章

Centos 6.5 DNS详解

Centos 6.5  DNS详解 为什么会出现DNS?为了让你上网浏览网页时不必直接输入IP地址而是输入更易记忆和理解的主机名字 主机间通信依靠IP地址.计算机诞生之初是没有DNS概念的,当时的主机数量寥寥无几,主机通信依靠的是写在host文件中的主机名到IP地址的对应关系来查询IP地址,然后使用IP进行通信.但是随着时间的推移,主机数量急剧增长,host文件的弊端显露无疑.此时急需一种高效方便的解决方案.DNS应时而生.是的DNS就是用于主机名到IP的解析的. 下面结合下图分析dns解析过程

05-Linux中DNS详解(二)

接"04-Linux中DNS详解(一)" 六.在Linux上测试域名解析1.先检查DNS是否设置正确 cat /etc/resolv.conf [resolv.conf] # Generated by NetworkManager nameserver 192.168.80.100 2.使用nslookup来测试域名解析a.常规解析法 nslookup wwww.zhangyujia.cn ----- Server: 192.168.80.100 Address: 192.168.80

Linux系统DNS详解(BIND)

一.Linux运维实战之DNS基础    DNS服务作为网络的一种基础架构,在网络中有举足轻重的地位.它担负着整个网络用户计算机的名称解析工作.没有正确的名称解析,服务器就无法识别各客户机.我们在日常进行的浏览网页等上网活动,无一例外都在使用DNS服务.*******************************************************************************    DNS的基本知识:        DNS服务器的组成        DNS域名称

linux DNS详解

DNS服务 DNS:域名服务(domain  nsme  service) 作用:将域名解析成IP(正向解析)或者把IP解析成域名(反向解析) DNS顶级域的分类: 组织域:.com  .net  .org ..... 国家域:.cn   .tw   .jp  ..... 反向域:将ip解析为域名 DNS记录类型: A:正向解析条目 PTR:反向解析条目 NS:代表域内的DNS服务器 MX:代表域内的邮件服务器 CNAME:别名 SOA:用于标识域内的DNS服务器 注意:每添加一条NS记录,就应

linux架构学习第二十四天-DNS详解及bind搭建各种DNS测试

内容: 一.DNS 1.域名系统概述 2.域名的结构 3.域名服务器 4.域名解析过程 5.域名服务器的资源记录(resource record RR) 二.bind搭建DNS服务器 1.bind的安装 2.搭建DNS服务器 3.搭建主从DNS服务器 4.实现DNS子域 5.实现DNS视图view(智能DNS) 一.DNS 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么

DNS详解及DNS主从配置

DNS 全称domain name system域名系统的缩写,它是一种将IP地址转换成对应的主机名或者将主机名转换成对应的IP的一种服务机制.其中通过域名解析出IP叫做正向解析,通过IP解析出域名叫做反向解析.DNS使用TCP和UDP协议,端口号都是53,但它主要使用UDP,服务器之间备份使用TCP.全世界只有13台"根"服务器,一个主根服务器放在美国,其他12台为辅根服务器,DNS服务器根据角色可分为:主DNS,从DNS,缓存DNS服务器,DNS转发服务器. 首先来看看域名的结构组

Linux进阶:DNS详解

DNS服务和BIND 本章内容 名字解析 DNS服务 实现主从服务器 实现子域 实现view 编译安装 压力测试 DNS排错 DNS服务 DNS:Domain Name Service 应用层协议 C/S,53/udp, 53/tcp BIND:Bekerley Internat Name Domain ISC (www.isc.org) 本地名称解析配置文件:hosts /etc/hosts %WINDIR%/system32/drivers/etc/hosts 122.10.117.2 ww

DNS详解(一)

一.域名系统(Domain Name System, DNS) 在Internet网络中,计算机相互识别彼此靠的是IP,IP就是用句号分割的一串数字,如202.156.36.89.然而对于人类而言,这样的数字是不容易记忆的,于是给这些数字起名字,这些名字就是所谓的域名.每个域名只能对应一个IP地址(此语似乎有误,但尚未理解,欢迎拍砖),但是同一个IP可以有几个名字,其中一个称为规范主机名,其他的称为别名. 说到起名字,是不能乱起的.DNS发展过程中,人们逐渐规范了域名的命名方式,即采用句点分隔的

DNS详解

许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统. 因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS. 名字到 IP 地址的解析是由若干个域名服务器程序完成的.域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器. 因特网的域名结构 因特网采用了层次树状结构的命名方法. 任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名. 域名的结构由标号序列组成,各标号

Linux 下DNS详解

配置之前先了解一下bind DNS服务器软件:BIND是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件.它是互联网上最广泛使用的一种DNS服务器,对于类UNIX系统来说,已经成为事实上的标准. 为了构架DNS服务器来解析域名或ip地址,我们得安装BIND和caching-nameserver.为了TCP和UDP53数据包能通过,我们也有必要配置路由器. 安装 BIND 软件包 1.安装 # yum -y install bind cach