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的数据,做出了一幅互动式的世界海底光缆分布图。

DNS 详解

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

域名层次结构
DNS 详解

域名注册
代理商:万网, 新网,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服务器发出查询请求,得到结果后转交给客户机

迭代查询(反复查询)

  • 一般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配置文件

资源记录
DNS 详解

配置样例:
DNS 详解

DNS 详解

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

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

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

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

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 模拟完全区域传送
DNS 详解
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,前者解决了主机的连接问题,后者解决了主机是谁的问题,提供了短小易记的方式。
    DNS 详解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章