DNS 详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,前者解决了主机的连接问题,后者解决了主机是谁的问题,提供了短小易记的方式。
以上是关于DNS 详解的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段