DNS 介绍

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。
一、DNS功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。主机名到IP地址的映射有两种方式:
1.静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2.动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。[1] 
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
二、DNS解析过程
DNS常用的资源记录类型
A:地址 此记录列出特定主机名的 IP 地址。这是名称解析的重要记录。
CNAME:标准名称 此记录指定标准主机名的别名。
MX:邮件交换器此记录列出了负责接收发到域中的电子邮件的主机。
NS:名称服务器此记录指定负责给定区域的名称服务器。
采用的工具:
1.在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。
2.在Linux Shell下通过dig查询
FQDN名的解析过程:
若想跟踪一个FQDN名的解析过程,在LinuxShell下输入dig www +trace,返回的结果包括从根域开始的递归或迭代过程,一直到权威域名服务器。
GeniePro DNS 应对DNS劫持和DNS缓存中毒攻击的关键性机制:一致性检查
每个Geniepro节点将自身的DNS记录发送给工作组内其他节点请求一致性检查;
每个Geniepro节点将自身的记录与收到的记录进行比较;
每个Geniepro工作组的通信协调节点将获得的DNS记录更新发送给其他组的通信协调节点请求一致性检查;
每个Genipro工作组的通信协调节点向上一级DNS服务器请求更新记录并与收到的其他通信协调节点的记录进行比较。
一致性仲裁:

如果一致性检查发现记录不一致情况,则根据策略(少数服从多数、一票否决等)决定是否接受记录的变化 根据结果,各Geniepro节点将自身记录进行统一通信协调节点选举 选举出的通信协调节点在任期内具有更新组内节点的权限 选举过程满足不可预测性和不可重复性DNS资源记录 如前所述,每个 DNS 数据库都由资源记录构成。一般来说,资源记录包含与特定主机有关的信息,如 IP 地址、主机的所有者或者提供服务的类型。

查询跟踪日志:

# dig www.cnnic.cn +trace

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> www.cnnic.cn +trace
;; global options:  printcmd
.                       20032   IN      NS      a.root-servers.net.
.                       20032   IN      NS      b.root-servers.net.
.                       20032   IN      NS      c.root-servers.net.
.                       20032   IN      NS      d.root-servers.net.
.                       20032   IN      NS      e.root-servers.net.
.                       20032   IN      NS      f.root-servers.net.
.                       20032   IN      NS      g.root-servers.net.
.                       20032   IN      NS      h.root-servers.net.
.                       20032   IN      NS      i.root-servers.net.
.                       20032   IN      NS      j.root-servers.net.
.                       20032   IN      NS      k.root-servers.net.
.                       20032   IN      NS      l.root-servers.net.
.                       20032   IN      NS      m.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 70 ms

cn.                     172800  IN      NS      ns.cernet.net.
cn.                     172800  IN      NS      e.dns.cn.
cn.                     172800  IN      NS      d.dns.cn.
cn.                     172800  IN      NS      c.dns.cn.
cn.                     172800  IN      NS      b.dns.cn.
cn.                     172800  IN      NS      a.dns.cn.
;; Received 293 bytes from 198.41.0.4#53(a.root-servers.net) in 149 ms

cnnic.cn.               86400   IN      NS      b.cnnic.cn.
cnnic.cn.               86400   IN      NS      c.cnnic.cn.
cnnic.cn.               86400   IN      NS      d.cnnic.cn.
cnnic.cn.               86400   IN      NS      e.cnnic.cn.
cnnic.cn.               86400   IN      NS      a.cnnic.cn.
;; Received 190 bytes from 202.112.0.44#53(ns.cernet.net) in 6 ms

www.cnnic.cn.           300     IN      A       159.226.6.133
cnnic.cn.               600     IN      NS      a.cnnic.cn.
cnnic.cn.               600     IN      NS      b.cnnic.cn.
cnnic.cn.               600     IN      NS      d.cnnic.cn.
cnnic.cn.               600     IN      NS      c.cnnic.cn.
cnnic.cn.               600     IN      NS      e.cnnic.cn.
;; Received 206 bytes from 203.119.26.5#53(b.cnnic.cn) in 21 ms

三、DNS的资源记录
我们要查询这些庞大数据当然要有专门的主机负责这些工作了,提供查询、存储DNS数据服务的主机我们称之为DNS服务器。网络上为了方便域名的注册、管理、解析,将DNS域名映射到特定类型的资源信息,我们称之为资源记录。资源记录是有类型:

SOA:起始授权,只能有一个,而且必须是第一个
NS:域名服务器,用于表示DNS服务器的域名地址
MX:邮件交换器,用于一个域下的邮件使用
A:域名->IP,我们经常用到的就是它了
PTR:IP->域名,和A记录相反,用于反向解析
AAAA:域名->IPv6,基本不用
CNAME:别名记录,用于作A记录的域名的别名

等等。。。

四、国内服务商

国内常用DNS服务提供商:

CNNIC云解析:http://sdns.cn/
ZDNS云服务:http://www.zdns.cn/
DNSpod:https://www.dnspod.cn/
DNS.La:https://www.dns.la/
八戒DNS:http://www.8jdns.com/
还有一些域名注册服务提供商:万网新网等。

参考:免费DNS解析服务介绍
五、DNS开源软件

1.bind
Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。
官网地址:https://www.isc.org/downloads/BIND/
下载地址:

http://www.isc.org/downloads/
ftp://ftp.isc.org/isc/bind9/
2.dnspod-sr
DNSPod Security Recursive DNS Server(简称DNSPod-sr)是一个运行在 Linux 平台上的高性能的递归 DNS 服务器软件,依托于 DNSPod 多年运营和优化 DNS 服务的经验,针对国内复杂的网络情况,对递归 DNS 进行了一系列的优化,不管是性能上、业务上还是运营上均适合国内的国情,非BIND等软件可比拟,且比所有流行的开源 DNS 软件性能高出2倍以上。
项目地址:https://github.com/DNSPod/dnspod-sr#dnspod-security-recursive-dns-server
3.PowerDNS
PowerDNS Authoritative Server (PDNS) 是一个高性能的权威 DNS 名字服务器,支持文本的 BIND 配置,也可将配置存储与 MySQL, Oracle, PostgreSQL, SQLite, MongoDB 等数据库,后端可使用多种编程语言进行扩展。
官网地址:https://www.powerdns.com
项目地址:https://github.com/PowerDNS
下载地址:https://www.powerdns.com/downloads.html
4.Knot DNS
Knot DNS 是一个高性能的权威 DNS 服务器,支持所有 DNS 系统的关键特性,包括区域转换、动态更新以及 DNSSEC。
官网地址:https://www.knot-dns.cz/
5.Eagle DNS
Eagle DNS 是一个用 Java 语言开发的功能强大的多线程的平台无关的DNS服务器,基于 dnsjava 类库,支持 Primary Zones 和 Secondary Zones。
官网地址:http://www.unlogic.se/projects/eagledns
下载地址:http://www.unlogic.se/projects/eagledns/page/download
5.robdns
robdns 是一个高速的 DNS 服务器,设计用于公众互联网环境,可应付大量的攻击。其思路是在防火墙内隐藏主服务器,关键的特性的内建自定义 TCP/IP 堆栈可在 1个 CPU 核上每秒钟处理几百万的 DNS 查询请求。
项目地址:https://github.com/robertdavidgraham/robdns
DNS先关工具
1.OpenDNSSEC是一个实现了 DNSSEC 的开源解决方案,用来在发布到认证的域名服务器之前保护 zone 数据。
2.dnsjava是DNS协议的一个Java开源实现。
DNS管理工具
1.wddns

wddns是一套基于bind+mysql构建开发,web在线管理的智能DNS系统,安装方便,快速,让你可在最短时间内架构一套DNS/智能DNS系统.目前支持电信/网通/教肓网/移动/铁通/广电/按省份解析(31个省份)/搜索引擎蜘蛛等多线路,具有强大的监控功能,服务器健康检测,即宕机检测和切换,DNS服务器健康监控,宕机切换,防攻击检测,可选自动屏蔽攻击者IP,易扩展DNS服务器,数据自动同步等
2.xbaydns

参考文章:

1.DNS百科

2.DNS服务介绍

3.DNS服务及基于BIND实现

4.DNS学习站点

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值