DNS的工作方式(共14篇)(共14篇)
1.DNS的工作方式 篇一
DNS服务器工作原理
DNS分为Client和Server,Client扮演发问的角色,也就是问 Server 一个Domain Name,而Server必须要回答此Domain Name的真正IP地址,DNS是怎么来作名称解析的?
DNS的工作原理
DNS分为Client和Server,Client扮演发问的角色,也就是问Server一个Domain Name,而Server必须要回答此Domain Name的真正IP地址,而当地的DNS先会查自己的资料库。如果自己的资料库没有,则会往该DNS上所设的的DNS询问,依此得到答案之后,将收到的答案存起来,并回答客户。
DNS服务器会根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。
在每一个名称服务器中都有一个快取缓存区(Cache),这个快取缓存区的主要目的是将该名称服务器所查询出来的名称及相对的IP地址记录在快取缓存区中,这样当下一次还有另外一个客户端到次服务器上去查询相同的名称时,服务器就不用在到别台主机上去寻找,而直接可以从缓存区中找到该笔名称记录资料,传回给客户端,加速客户端对名称查询的速度。例如:
当DNS客户端向指定的DNS服务器查询网际网路上的某一台主机名称 DNS服务器会在该资料库中找寻用户所指定的名称 如果没有,该服务器会先在自己的快取缓存区中查询有无该笔纪录,如果找到该笔名称记录后,会从DNS服务器直接将所对应到的IP地址传回给客户端,如果名称服务器在资料记录查不到且快取缓存区中也没有时,服务器首先会才会向别的名称服务器查询所要的名称。例如:
DNS客户端向指定的DNS服务器查询网际网路上某台主机名称,当DNS服务器在该资料记录找不到用户所指定的名称时,会转向该服务器的快取缓存区找寻是否有该资料,当快取缓存区也找不到时,会向最接近的名称服务器去要求帮忙找寻该名称的IP地址 ,在另一台服务器上也有相同的动作的查询,当查询到后会回复原本要求查询的服务器,该DNS服务器在接收到另一台DNS服务器查询的结果后,先将所查询到的主机名称及对应IP地址记录到快取缓存区中,最后在将所查询到的结果回复给客户端 。
范例
我们举例说明,假设我们要查询网际网路上的一个名称为www.test.com.cn,从此名称我们知道此部主机在中国CN,而且要找的组织名称test.com.cn此网域下的www主机,以下为名称解析过程的每一步骤。
《Step 1》在DNS的客户端(Reslover)键入查询主机的指令,如:
c:pingwww.test.com.cn
pingingwww.test.com.cn【192.72.80.36】with 32bytes of data
reply from 192.72.80.36 bytes time <10ms ttl 253
《Step 2》而被指定的DNS服务器先行查询是否属于该网域下的主机名称,如果查出改主机名称并不属于该网域范围,之后会再查询快取缓存区的纪录资料,查是否有此机名称,
《Step 3》查询后发现缓存区中没有此纪录资料,会取得一台根网域的其中一台服务器,发出说要找www.test.com.cn的Request。
《Step 4》在根网域中,向Root Name Server询问,Root Name Server记录了各Top Domain分别是由哪些DNS Server负责,所以他会响应最接近的Name Server为控制CN网域的DNS伺服主机。
《Step 5》Root Name Server已告诉Local DNS Server哪部Name Server负责.cn这个Domain,然后Local DNS再向负责发出找寻www.test.com.cn的名称Request。
《Step 6》在.cn这个网域中,被指定的DNS服务器在本机上没有找到此名称的的纪录,所以会响应原本发出查询要求的DNS服务器说最近的服务器在哪里?他会回应最近的主机为控制com.cn网域的DNS伺服主机。
《Step 7》原本被查询的DNS服务器主机,收到继续查询的IP位置后,会再向com.cn的网域的DNS Server发出寻找www.test.com.cn名称搜寻的要求。
《Step 8》com.cn的网域中,被指定的DNS Server在本机上没有找到此名称的记录,所以会回复查询要求的DNS Server告诉他最接近的服务器在哪里?他就回应最接近为控制test.com.cn的网域的DNS主机。
《Step 9》原本被查询的DNS Server,在接收到应继续查询的位置,在向test.com.cn网域的DNS Server发出寻找www.test.com.cn的要求,最后会在test.com.cn的网域的DNS Server找到www.test.com.cn此主机的IP。
《Step 10》所以原本发出查询要求的DNS服务器,再接收到查询结果的IP位置后,响应回给原查询名称的DNS客户端。
两种真正DNS的查询模式
有两种询问原理,分为Recursive和Interactive两种。前者是由DNS代理去问,问的方法是用Interactive方式,后者是由本机直接做Interactive式的询问。由上例可以看出,我们一般查询名称的过程中,实际上这两种查询模式都是交互存在着的。
递归式(Recursive):DNS客户端向DNS Server的查询模式,这种方式是将要查询的封包送出去问,就等待正确名称的正确响应,这种方式只处理响应回来的封包是否是正确响应或是说是找不到该名称的错误讯息。
交谈式(Interactive):DNS Server间的查询模式,由Client端或是DNS Server上所发出去问,这种方式送封包出去问,所响应回来的资料不一定是最后正确的名称位置,但也不是如上所说的响应回来是错误讯息,他响应回来告诉你最接近的IP位置,然后再到此最接近的IP上去寻找所要解析的名称,反复动作直到找到正确位置。
2.DNS的工作方式 篇二
现阶段大量的信息系统是WEB服务的形式展现,使用者访问都是通过域名来访问,对外开放的信息系统可以直接在外网通过域名直接访问,如果对外的DNS域名解析服务出现故障,当故障时间超过了DNS记录的有效时间,外网域名的解析记录就会清除掉,外网就不能访问到单位的信息系统,内网的信息系统的域名解析信息仅存在于DNS服务器中,如果DNS解析服务故障将导致内网信息系统全部中断,导致有关系统的工作都无法展开。现在的使用环境是内外同用一个服务器,当内网服务突然增长时服务器的性能会下降,当外网的服务量突然增加的时候容易出现故障或当机,导致系统内所有的DNS服务不可用。现在DNS配置有外网的主机解析信息和内网的主机解析信息,外网的主机解析信息用来解析对外开放的主机公网IP信息,通过该接口将信息传递给上层的服务器,内网的主机信息主要用来解析只在内网使用但不对外开放的主机,内网或外网来源引起的主机故障都会影响整个全系统的系统服务。
2 问题分析
恶意访问导致的响应缓慢,当恶意DNS访问请求产生时,首先出现的情况时DNS服务设备的CPU使用率升高,然后会产生大量的日志信息导致磁盘空间占用率迅速上升,进行影响到系统服务的正常缓存空间使用,导致DNS服务响应慢或不可用。恶意攻击导致的服务停止,DNS服务受到来自外网的恶意攻击,系统出现响应故障并伴有DNS记录无法正常解析,大量的无用数据包拦截了正常的DNS解析数据,内外网用户无法得到正常的DNS服务,并且有可能DNS解析记录被恶意修改且被重定向到有恶意软件的网址,导致全网出现访问故障安全威胁漏洞。硬件故障导致的服务停止:DNS的主机出现硬件故障,导致主机无法开机且无法提供服务,因为DNS服务做的操作是进行主机记录的查询及日志信息的写入,这样的操作会经常读写系统硬盘,反复的读写会缩硬件的使用周期,正常情况的DNS解析服务会产生同数量级的日志,当DNS被恶意访问解析的时候会产生大量的无用日志,硬盘读写操作就会成倍增长,由于DNS的数据与日志都存在硬盘中,当日志大量写入导致的硬盘发生硬件错误时,由于系统程序及DNS服务数据都在硬盘,数据读取错误进而导致DNS服务无法工作。
3 改进的方案
对前面的问题进行分析后,总结出部署架构着重关注负载大时的自动化性能调整优化、系统的可靠性、服务的稳定性提升等方面,再综合考虑DNS服务的有效性、高效性、稳定性、安全性、可控性等因素后,整体结构采用主从DNS服务模式、内外DNS服务分离、前端负载均衡、实时分析过滤相结合的方式实现DNS部署,具体为内网使用主从二台DNS服务器,前置负载用来平衡分流主从两台DNS的解析任务,外网DNS服务采用单独的主机部署方式,一台性能监控及日志分析服务器采集各设备的性能信息及日志。
3.1 增加前端的智能负载均衡
通过前端负载设备来保证后端服务的安全与稳定性,按照方案后端部署的主从DNS做为服务端,当其中一个DNS服务器负载较大或性能差时,智能负载设备能够有效的检测到该信息并避开该服务器,保证前端服务的稳定性,部署方式是在内网主从DNS服务器加前端负载均衡服务器部署,出于稳定性要求按服务类型对部分客户端配置定向分流。
3.2 内外网数据同步
采用上述DNS部署方式存在的问题是内网DNS与外网DNS分别存放二份本域DNS的解析数据,在内网DNS与外网DNS服务器上均存入本域主机的内外网解析信息,采用视图配置方案保证客户端访问时能够得到实际需要的数据,考虑到安全性的问题,数据是内网DNS的数据为基准,为保证外网DNS的安全且可独立配置性,外网DNS服务器不采用从服务器的模式来使用,而单独配置一台DNS设备,数据的准确性是以内网节点为标准,在内网DNS主服务器配置一个定期脚本每分钟周期性检查内网与外网DNS服务器上的本域的域名解析记录文件校验值,一旦发现二台机器上的本域域名解析记录文件不同,内网主DNS通过预设的脚本代码主动发送记录文件到外网DNS服务器,并远程让外网DNS重新载入解析记录文件,进而保证本域记录解析文件的统一性。
3.3 最小化工作负载
内网DNS负载解析的工作量较大,主要包括本单位所有内网域名的解析工作与对其它域名服务的请求转发工作,为了保障DNS服务的稳定,采用主、从二台内网DNS服务器来处理响应请,在负载一般的情况下仅公布从DNS服务器作为服务对象,在出现异常大的请求或故障时通过前端负载均衡设备让内网主DNS加入服务队例进行应急处理。外网DNS的解析工作仅包括单位域名下对外网开放的域名信息解析,其它域的解析采用配置进行了过滤与屏蔽,以最小化的服务项来保障外网DNS的性能可靠。
view "internal"{match-clients{"internal_ip";};allow- re-cursion{any;};....}
view"world"{match-clients{"world_ip";};allow-recursion
{none;};....}
3.4 实时性能分析与报警
配置并开启每台DNS服务器的SNMP监控数据采集服务,当某台出现故障不能服务时必须及时做出警告响应,用于采集主机CPU、内存、NAMED程序CPU、内存使用比例、网络接口数据流量、系统总的进程数等信息,并在监控主平台下配置好相应的预警条件,当各类数值达到预警条件、DNS不可服务、数据采集失败等情况出现时,监控平台及时发送报警信息提醒工作人员,保证DNS服务在最短的故障时间内被恢复。
3.5 恶意访问的过滤处理
恶意攻击和访问一直是困扰服务正常运行的问题,DNS服务也存在着这类问题,特别在外网DNS服务器上经常会出现些频繁的域名解析请求,该类IP地址发出的域名解析请求经常是一些无效的域名,做这些处理会让DNS浪费掉很多性能,为改善这种局面引入可疑IP名单与黑名单机制来保障服务,名单的获取依赖于DNS服务的查询、解析、安全等日志。
category queries{query_log;};
category resolver{resolver_log;};
category security{security_log;};
在DNS服务器端配置每8小时为记录日志文件的周期,在监控平台服务器上配置每8 小时采集最近的DNS服务的日志文件,同时监控平台的日志分析程序分析刚采集的DNS服务的各类日志文件,提取出里面的恶意解析请求信息及来源IP,同时将该IP添加到DNS服务的world_ip.acl的禁止服务IP名单中并归为可疑IP,如果在配置拒绝该IP的DNS解析请求后,该IP还是在频繁的发出访问请求,日志分析程序通过分析DNS服务的安全日志信息可以发现该IP,日志分析程序将该IP将被划入黑名单,同时通过预设脚本把该IP直接划入防火墙的拒绝列表。
4 总结与思考
3.DNS的工作方式 篇三
在Linux下实现动态DNS不仅需要Bind 8以上的DNS软件,还要有DHCP Server v3.0以上版本,因为只有3.0以上的版本才完全实现了对DDNS的支持。因此,本文的实现环境采用Slackware Linux 9.0作为DDNS服务器,其上同时运行DNS和DHCP服务,其中DNS Server采用Bind 9.2.2,DHCP Server采用DHCP Server v3.0pl2。
下面详细介绍Linux环境下安全、动态DNS的实现方法。
创建密钥
要实现DNS的动态更新,首先要考虑的是怎样保证安全地实现DDNS。由ISC给出的方法是创建进行动态更新的密钥,在进行更新时通过该密钥加以验证。为了实现这一功能,需要以root身份运行以下命令:
root@slack9:/etc# dnssec-keygen -a HMAC-MD5 -b 128 -n USER myddns
Kmyddns.+157+37662
上述dnssec-keygen命令的功能就是生成更新密钥,其中参数-a HMAC-MD5是指密钥的生成算法采用HMAC-MD5;参数-b 128是指密钥的位数为128位;参数-n USER myddns是指密钥的用户为myddns。
该命令生成的一对密钥文件如下:
-rw------- 1 root root 48 Jan 14 18:26 Kmyddns.+157+37662.key
-rw------- 1 root root 81 Jan 14 18:26 Kmyddns.+157+37662.private
可以查看刚生成的密钥文件内容:
root@slack9:/etc# cat Kmyddns.+157+37662.key
myddns.INKEY02157 4gEF1Mkmn5hrlwYUeGJV3g==
root@slack9:/etc# cat Kmyddns.+157+37662.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: 4gEF1Mkmn5hrlwYUeGJV3g==
仔细阅读该密钥文件就会发现,这两个文件中包含的密钥是一样的,该密钥就是DHCP对DNS进行安全动态更新时的凭据。后面需要将该密钥分别添加到DNS和DHCP的配置文件中。
修改DNS的主配置文件
密钥生成后就要开始对/etc/named.conf文件进行编辑修改,主要目的是将密钥信息添加到DNS的主配置文件中。本文给出修改后的/etc/named.conf的一个实例:
options {
directory “/var/named”;
file://指定区域数据库文件的存放目录
};
zone “.” IN {
type hint;
file “caching-example/named.ca”;
};
zone “localhost” IN {
type master;
file “caching-example/localhost.zone”;
allow-update { none; };
};
zone “0.0.127.in-
4.本地DNS的修改方法 篇四
事实上,在网络连接以及目标服务器都正常的情况下,造成网页无法打开现象最可能的原因就是DNS服务发生了意外,导致网站地址被无法正常解析,而且DNS服务运行不正常的现象十分常见。那么我们如何能够在最短的时间内确认网页打开故障就是DNS服务引起的呢,遇到DNS服务运行不正常时,我们又该如何让DNS服务快速恢复常态呢?下面,本文就从DNS服务运行不正常的现象、判断以及应对出发,来让DNS服务尽快恢复常态!
通常情况下,我们访问某个目标网站时都是通过输入形如“”格式的网址来完成访问任务的,这个网址其实也是目标网站的域名;但是,我们知道主机与主机之间相互访问、通信时,都是通过IP地址来相互识别、确认的,这么说来我们只有知道了目标网站的IP地址才能够成功地打开该网站。不过,考虑到IP地址不便于记忆,因此我们几乎都以域名的形式来访问网站内容,输入的网站地址往往会被指定的DNS服务器自动解析翻译成IP地址;能够提供DNS服务功能的服务器可以是本地计算机,也可以是网络中特定的一台计算机,但是一旦DNS服务器运行不正常,无法为用户提供地址解析服务或者将域名解析成错误的IP地址时,我们就无法通过网站域名的形式打开目标站点的页面内容了。DNS服务运行不正常的最明显现象就是访问目标网站的IP地址时正常,访问它的网站域名时就会发生错误。
在遇到网页内容无法打开,并且怀疑DNS服务运行不正常时,我们首先要做的事情就是利用Windows系统自带的nslookup命令来确认一下本地的DNS服务是否真的运行不正常,下面就是确认DNS服务运行是否正常的具体操作步骤:
首先在本地工作站系统桌面中打开“开始”菜单,并执行其中的“运行”命令,从弹出的系统对话框中输入字符串命令“cmd”,单击“确定”按钮后,将系统屏幕切换到MS-DOS命令行工作模式;
其次在DOS命令行中输入字符串命令“nslookup -q=ns www.45it.com”,单击回车键后要是在地址解析过程中DNS服务运行不正常的话,那我们会在结果界面中只看到“DNS request timed out,timeout was 2 seconds”这样的提示信息。
在确认网站内容无法打开是由于地址不能被解析后,我们下一步要做的工作就是检查一下本地工作站所使用的DNS服务器自身是否运行正常,如果DNS服务器运行不正常的话,DNS服务当然无法为网站地址提供解析服务了。在检查DNS服务器自身是否运行正常时,我们可以按照如下步骤来进行:
首先按照前面的操作步骤,将系统运行状态切换到MS-DOS命令行窗口,在该窗口的命令提示符下输入字符串命令“ipconfig /all”,单击回车键后,打开如图2所示的结果界面, 对应DNS SERVERS位置处的信息就是本地工作站所使用的DNS服务器地址,比方说这里的DNS服务器地址就是“61.177.7.1”;
其次根据IP地址来判断DNS服务器是位于内网还是外网,例如笔者在这里指定的DNS服务器位于外网,因此当我们发现使用该DNS服务器无法正常解析网站地址时,不妨进入到本地工作站的TCP/IP属性设置窗口,将DNS地址更换成其他能够运行正常的DNS服务器地址,就能解决无法打开网页的问题了;要是指定的DNS服务器位于内网,那么在使用该DNS服务器无法正常解析网站地址时,就可以请单位网络管理人员检查一下局域网内部的DNS服务器是否运行正常,只要解决了DNS服务器的运行故障,一般就能够顺利解决网页无法打开故障了,
当以网站域名形式访问目标站点页面内容时,本地工作站并不一定都要寻求DNS服务器的帮助,因为有的工作站事先已经把频繁访问站点的域名和IP地址对应关系保存到本地的HOSTS文件中了,所以当本地工作站访问某个目标站点的域名时往往会自动先查看本地的HOSTS文件,如果该文件中包含目标站点的域名和IP地址对应关系,那么目标站点的网站地址就能够被顺利解析了。根据上面的分析思路,我们可以用手工方法将那些无法打开网页内容的站点域名和IP地址对应关系添加到本地的HOSTS文件中,以便实现成功解析目标站点的目的,下面就是往HOSTS文件中手工添加目标站点域名和IP地址对应关系的具体操作步骤:
首先打开本地工作站系统的资源管理器窗口,并在该窗口中依次展开“x:windowssystem32driversetc”文件夹,在对应“etc”子文件夹窗口中找到HOSTS文件,当然我们也可以依次执行“开始”/“搜索”命令,来通过文件搜索的方法找到目标HOSTS文件;
其次用记事本之类的文本编辑程序打开HOSTS文件,在随后弹出的文件编辑窗口中我们可以一目了然地看到HOSTS文件中所有的站点域名和IP地址对应关系了,在缺省状态下该文件只包含“127.0.0.1 localhost”这一行内容,其中开头带“#”的行都不是有效的内容,只是具体的帮助信息而已;
接下来我们就可以将那些无法访问的站点解析条目手工输入添加到本地HOSTS文件中了,具体添加格式应该是先输入目标站点域名所对应的IP地址,之后输入空格并连接具体的域名信息,比方说笔者在这里手工添加了“61.129.51.27 www.45it.net”;在确认信息输入正确后,再依次执行文件编辑窗口中的“文件”/“保存”命令,将上面输入的内容按原名保存后,如此一来我们日后就能顺利将目标网站的域名解析成IP地址了。
当我们以域名形式访问过目标网站后,该网站的域名和IP地址对应关系就会自动保存到本地工作站的DNS缓存列表中,日后IE浏览器会优先访问DNS缓存列表中的信息,不过一旦此时目标站点的域名和IP地址对应关系发生变动的话,DNS缓存列表中的对应解析记录不会跟着同步变化,那么日后我们再次以域名形式访问目标站点时就容易发生DNS解析不成功的故障。这个时候,我们可以通过刷新本地DNS缓存列表的方法来解决网页无法打开的故障,下面就是具体的刷新本地DNS缓存列表的操作步骤:
首先在本地工作站系统桌面中打开“开始”菜单,并执行其中的“运行”命令,从弹出的系统对话框中输入字符串命令“cmd”,单击“确定”按钮后,将系统屏幕切换到MS-DOS命令行工作模式;
其次在DOS命令行中,输入字符串命令“ipconfig /flushdns”,单击回车键后,我们将从如图4所示的结果界面中看到“successfully flushed the dns resolver cache”这样的提示, 这就意味着本地工作站DNS缓存列表中的信息已经被成功刷新了。之后,我们重新以域名形式访问目标站点时,相信目标网站的页面内容就能被正确打开了。
5.DNS重新绑定对浏览器的影响 篇五
使用DNS重新绑定的易受攻击性,攻击者需要进行直接套接字访问,这种访问通过DNS使用Flash与Java重新绑定,其请求仅具有从目标主机读取HTTP响应的能力。这种攻击有两种典型防火墙欺骗和IP劫持。
1 防御DNS重新绑定攻击
防御DNS重新绑定攻击可以在浏览器、插件、DNS解析、防火墙和服务器中实现。
1.1 修复防火墙欺骗攻击
网络系统防御防火墙欺骗攻击通过禁止外部主机解析到内部IP地址,这样能够有效地防御攻击者重命名到目标服务器。如果不能重命名到目标服务器,攻击者就不能汇聚众多目标服务器到其控制下的区域源内。这样恶意绑定就能够在防火墙端通过过滤包而被阻止,或者通过在客户端修改DNS解析而阻止。
1.2 修复浏览器拒绝缺省套接字
通过拒绝缺省方式直接套接字访问可以阻止相关DNS重新绑定的攻击。如果浏览器插件缺省设置成拒绝套接字访问,对于使用Flash或TCP连接,这些防御是可行的。像Java以及一些未知名的插件请求套接字连接访问是被允许的。
1.2.1 检查主机报头
HTTP请求用户代理,该代理包括一个在HTTP请求中Hos头,该HTTP请求详细描述服务器的主机。这个特性广泛应用于HTTP代理与Web服务器,去定位大多数虚拟主机到一个IP地址。如果拒绝缺省套接字访问,Host头能够可靠地指向正连接到服务器的浏览器所使用的主机,这是因为XMLHTTP请求限制欺骗Host头。对于服务器而言,防御这些攻击是通过拒绝引入不是预知的Host头的HTTP请求。
1.2.2 细化区域源
防御:DNS重新绑定攻击还可以通过提取包括额外信息的区域源,这些额外信息可以是服务器的IP地址或者公钥等,这样当攻击者重新绑定其域名到目标主机时,浏览器将认为该重新绑定主机作用一个新区域。
IP地址:使用IP地址的细化区域比使用单一浏览会话的插件更具有可靠性,单一浏览会话策略可能会使从一个IP地址转换到另一个IP地址时出错。当这种转换错误发生时,很可能破坏已经运行存在的AJAX应用程序,这是因为它们将被阻止使用XMLHTTP请求新IP地址,用户能够通过使用单击浏览器刷新按钮来重载该请求。
公钥:使用公钥增加区域源预防可以使两类HTTPS网页服务免受来自相同区域源的攻击,避免相同区域源使用不同的公钥去读取其状态值。这种防御应用于用户丢失HTTPS无效证书警告的情况下,其主要防御用于攻击只有HTTPS的个人安全设置。
2 智能插件策略
为了减少重新绑定攻击,浏览器可以实现更为智能的插件策略。插件策略是为了防御DNS重新绑定,而使解析域名更加安全。RFC1035提出一个较小值的(甚至是0)TTLs使动态DNS成为可能,这些TTLs不允许重新绑定攻击。浏览器可以实现不同插件的持续时间策略,这样提高了浏览器的稳定性。但是,TTLs不是能够改变插件策略的惟一参数。
如果允许主机重新绑定到一组IP地址,使浏览器能够改变其插件的宽度,这样可以用到一些相似的策略。选择最佳宽度与持续时间使安全与稳定性间的转换成为可能,而不是单独持续时间的优化。一个较好的策略是允许在一个网络内重新绑定。例如,如果一台主机解析到202.117.112.10,客户端可能也允许另一个IP地址开始于202.117.112.内。Firefox扩展功能采用了该智能插件策略。
当浏览器使用一个C类网络插件时,攻击者可能定位那个受攻击的服务器在其相同的C类网络作为其目标,这样使重新绑定攻击定位更加困难。如果攻击者协助定位到一个服务器,这个服务器使用相同协作定位的设备,或者这个协助定位的服务器具有交叉脚本嵌入的弱点,这种攻击也是可能的。
浏览器能够在公网与内网IP地址之间预防重新绑定,这对于不安全的数据通过与动态DNS提供了更加稳定性。在实现公网与内网IP地址转换中,Java Script插件的Firefox扩展时使用了LocalRodeo。对于安全而言,内外网间IP地址的插件很大程度上预防了防火墙欺骗。但是在一些特殊情况下,不但不能保护IP欺骗也不能预防防火墙欺骗,这些特殊情况是防火墙保护非私有IP地址。
更宽的插件策略可以预防一些合法的DNS重新绑定。由组织机构掌管的公网主机通常有两个IP地址,一个私有IP地址内部用户防火墙使用,一个公用IP地址由Internet用户使用。插件可以防御内部员工完全地连接到这些服务器之后又连接到该组织的VPN,又要防御公网IP地址重新绑定到私有IP地址。
2.1 通用插件数据库
为了消除多插件的攻击,基于插件的防御需要所有的浏览器共享一个通用的插件数据库。许多插件,当发出HTTP请求时就已经使用了浏览器的插件,这是因为它们通过浏览器发出这些请求。为了共享DNS插件给其它类型的网络访问,另外一些浏览器可能暴露其插件数据库的一个接口,或者操作系统可能插入它的DNS解析。浏览器暴露了这些接口与操作系统插件,要么是为了其它应用程序而改变DNS的语义,要么需要操作系统处理浏览器与不同应用程序的插件。
2.2 基于策略的插件
如果不使用插件的策略,可以让浏览器使用服务器替代策略以确定重新将插件从一个IP地址转换到另一个IP地址的主机什么时候是安全的,其条件是不使用非正规的安全机制提供稳定性。为了重新插入安全性,浏览器必须获得一个来自于新旧IP地址主机的策略,这是因为一些攻击者首先绑定到攻击者,反之另外一些首先绑定目标主机。服务器在一些定位中能够提供这种策略,例如逆向DNS解析。
缓存:浏览器与所有插件的缓存必须通过改进才可以预防重新绑定攻击。通常,存储在缓存中目标主机通过URL重新得到而不管其最初的IP地址,建立一个重新绑定攻击,当攻击者主机绑定到目标主机时,从攻击者来的缓存脚本可能稍后运行。为了预防这种攻击,缓存中的目标必须通过URL与最初的IP地址重新获得。当浏览器插进一个新的IP地址时就可以降低系统性能,当第一次IP地址定位失败时这种降低性能就成为可能,用户启动一个新的浏览器进程,或者用户的网络连接发生改变。
document.domain:即使使用最严谨的插件,如果主机打开执行下面的似乎无缺陷Java脚本的网页:document.domain=document.domain,服务器也是易受重新绑定攻击的。
在页面属性设置域属性值之后,浏览器允许具有交叉区域源的页面与其它页面相互访问,这些页面已经设置了相同的域属性值。通过使用Java脚本库的值,在受攻击者控制的当前主机的情况下,达到设置域属性值的目的。
3 主机认证策略
为了代替预防主机免受来自一个IP地址到另一个IP地址重新绑定攻击,另一种防御重新绑定攻击的策略就是预防攻击者命名目标服务器。如果不具备命名目标服务器能力,攻击者就不可能登录到DNS重新绑定攻击到目标服务器。这种方法防御重新绑定攻击,能够允许使用缺省值进行套接字访问,也能够保护动态DNS的稳定性。
在互联网中,客户端需要附加信息以确定一个给定IP地址主机设置的有效性。网络服务器广播主机的设置,并且服务器认为它们自身是有效的,客户端在绑定主机到IP地址之前检查这些广播,以确定这些主机名能够映射到这些IP地址。主机名认证能够预防重新绑定攻击,这是因为真实的主机不能广播这些被攻击者控制的主机名。
逆DNS已经提供了一个从IP址到主机的映射。具有IP地址的用户委派授权命名认证该IP到其域名,同时存储一个PTR记录,该记录包括与其IP地址相关联的主机名。这些记录对于主机认证还是不够的,这是因为一个单IP地址能够有许多有效的主机名,现有的PTR记录不可以预示那些另外的主机名是无效的。
逆向DNS系统在向后不兼容时不能扩展认证主机。为了认证主机到IP地址(例,a.b.c.d),IP地址的所有者可以插入下面的DNS记录:
为了使策略可以解析主机,首先按正常情况解析一组IP地址的主机名,然后按下面步骤验证每个IP地址的有效性:
(1)解析主机名auth.ip.in-addr.arpa。
(2)如果主机名存在,ip是策略使能(policy-enabled)同时接受仅仅已经验证的主机名,否则,ip不是策略使能同时接受任何主机名。
(3)最后,如果ip是策略使能,解析主机名www.eg.com.auth.ip.in-addr.arpa,以确定主机名是否已经验证通过。
IP地址ip验证每一个由*.auth.ip.in-addr.arpa组成的主机名,预防不正确的递归策略检查。对于具有多个IP地址的主机名,只有通过验证的IP地址才可以包括在其结果中。如果没有IP地址通过验证,其结果是没有找到。如果IP地址不是策略使能,那么DNS重新绑定攻击就能够减少在拒绝缺省套接字中的使用。
由相关机构或ISP运行控制的策略检查能够在DNS解析中实现,显然这样可以保护大量计算机免受IP地址劫持攻击。像浏览器与插件这样的用户代理也能进行策略记录检查,这是因为它们存储了记录且使用HTTP请求时执行策略检查。标准DNS缓存减化了大量的过多的策略检查。当进行进一步优化时,具有策略使能的解析能够在DNS请求附加部分中包括策略记录,允许逆向解析缓存。
主机认证策略的特点是IP地址的拥有者与ISP可能不是那个IP地址主机的拥有者。当且仅当ISP愿意授权anth子域给拥有者或者插入适当的DNS记录,主机才可能广播那组已经验证的主机。相反,主机可能广播已经验证的主机在HTTP已知的定位中,类似Flash的crossdomain.xml。
4 总结
攻击者能够使用DNS重新绑定的缺点绕过防火墙和劫持IP地址。典型防御与插件技术具有防御基本DNS重新绑定攻击的能力,减少了稳定性与保护使用了插件的浏览器失败就导致允许攻击者直接访问客户端的主机。这些攻击能够劫持成千上万的IP地址主机进行发送垃圾邮件与点击欺骗。预防DNS重新绑定攻击欺骗防火墙可以使用阻止外部DNS域名解析到内部IP地址的策略。对于防火墙欺骗与IP劫持提出两种防御方案:基于策略的智能插件与主机名认证。
摘要:本文分析了DNS重新绑定攻击影响使用插件的浏览器以及浏览器与其插件的相互作用,其用于防火墙欺骗、发送垃圾邮件、点击欺骗与IP地址劫持的攻击。详细阐述了防御DNS重新绑定攻击以保护Web浏览器,修复防火墙欺骗攻击,修复拒绝缺省套接字访问,检查主机报头,细化区域源,智能插件策略。提出了基于策略的智能插件用于阻止外部DNS域名解析到内部IP地址,提出了主机认证策略用于允许套接字的访问及保持动态DNS的稳定性。
关键词:域名服务器,重新绑定,智能插件,主机认证
参考文献
[1]闫伯儒,方滨兴,等.DNS欺骗攻击的检测和防范[J].上海:计算机工程.2006.
[2]何旭.DNS重新绑定对Web浏览器的影响[J].上海:计算机工程.2010.
[3]宗兆伟,黎峰,翟征德.基于统计分析和流量控制的DNS分布式拒绝服务攻击的检测及防御[C].北京:2009全国计算机网络与通信学术会议.2009.
[4]任勉.DNS安全与防护[D].北京邮电大学.2007.
[5]李军利,卜晓燕,张根耀,张震.恶意DNS流量攻击研究[J].北京:计算机应用与软件.2007.
6.DNS的工作方式 篇六
姓名:张均诚
特长:Windows系统漏洞研究
使用工具:DNS服务器漏洞利用工具
自白:最近Windows系统的DNS出现了0day漏洞,自从这个安全漏洞的代码被披露,攻击这个漏洞的Nirbot蠕虫已经出现了各种变体。如果这个漏洞被 利用,那么系统就会被 完全控制。
DNS漏洞打开系统防线
Windows DNS如果存在这个漏洞,那么它在工作时,RPC接口如果处理到有非常规的畸形连接请求,就会向外释放管理员权限,让 可以利用这种漏洞完全控制系统。 可以通过向有这个漏洞的系统发送一个经过特别设计的RPC数据包,就能够获得该系统的管理员权限,远程执行任意指令。
小知识:什么是RPC
远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务。由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。
此前,RPC中也出现过数个漏洞,其中包括导致Blaster蠕虫大爆发的那个漏洞。这一最新的漏洞是一个堆栈溢出漏洞,给微软和Windows用户带来了很 烦。
根据微软发布的消息,Windows XP和Windows Vista不会受到这一DNS漏洞的影响,Windows 2000 Server SP4、Windows Server 2003 SP1、Windows Server 2003 SP2则存在这一漏洞。
轻松利用DNS漏洞
打开系统的命令提示符,接着跳转到DNS服务器漏洞利用工具所在的命令,然后执行该漏洞利用工具(图1)。
在该漏洞的利用程序中执行命令:dns.exe -h 127.0.0.1 -t 1 -p 445,因为我是在本地计算机上进行测试的,所以其中的IP地址为127.0.0.1,而且需要根据服务器版的语言设置参数。当利用工具提示溢出成功以后,就可以利用telnet命令或程序nc连接存在漏洞的服务器中的4444端口,比如telnet 127.0.0.1 4444(图2),
需要说明的是,该工具的成功率并不是特别的高,所以在测试的时候需要多进行几次
当我们成功利用漏洞进行溢出以后,就可以在命令行输入:net user pcw 1234 /add,回车确定后如果显示命令成功,就说明已经成功的添加了一个用户名为pcw密码为1234的用户。
然后我们再在命令行输入:net localgroup administrators pcw /add,成功执行的话就表示将该用户已经添加到管理员组(图3)。
现在只要利用Windows系统自带的远程桌面功能,接着连接到该DNS服务器的IP地址,然后利用我们刚刚创建的用户名进行登录,就可以进行适时地远程管理操作了(图4)。
如果远程服务器没有开通终端服务功能,也可以通过溢出得到的命令提示符窗口,通过FTP或Tftp命令上传我们的木马程序,这样也可以进行有效的远程管理操作。
漏洞危害大,不可不防
由于这个安全漏洞影响到Windows 2000 Server和Windows Server
7.DNS的工作方式 篇七
218.2.135.1
221.228.255.1
江阴移动(铁通)宽带DNS:
112.4.0.55
221.131.143.69(南京移动的DNS)
211.136.18.171(上海移动的替补DNS)
江阴广电宽带DNS:
221.6.4.66(南京市联通)
111.208.55.7
PS:这2个DNS是我打江阴广电,网络工程部电话86897575问到的江阴网通宽带DNS:
221.6.4.6658.240.57.33
Google推出免费DNS解析服务器:
8.8.8.8 8.8.4.4
PS:适用于任何电脑使用;有人反映说访问大陆网站比较慢,没试过
==============
8.DNS的工作方式 篇八
因此,如何根据校外用户IP,智能动态解析校园内部网络应用,使校外用户能通过最快线路访问到校园内部服务器,已成为各高校校园网急需解决的问题。
1 DNS域名解析和智能DNS
DNS域名解析的功能是实现主机域名和主机IP地址之间的相互转换[3]。当用户在应用程序中输入主机域名时,DNS服务器可以将此域名解析为与之对应的IP地址。这种域名解析一般是静态的,即域名与IP地址是一一对应的。
智能DNS最基本的功能是DNS服务器可以智能的判断访问主机的用户,然后根据不同的访问者和事先设定的策略,把域名分别解析到不同的服务器[4]。
2 智能DNS在多出口校园网中的实现
2.1 校园网环境
2.1.1 校园网拓扑结构
湖南城市学院校园网现有教育网、电信和联通三个出口。网络拓扑如图1所示。
2.1.2 静态策略路由
校内用户对外网的访问方式,是通过在路由器上设置静态路由来匹配访问线路,具体路由配置情况如下。
2.1.3 NAT映射及域名解析
我校的校园网提供的网络应用主机名和IP地址之间的对应关系如表1所示。
2.2 智能DNS配置
2.2.1 智能域名解析软件BIND
BIND是互联网上使用最为广泛的域名解析软件[5],由加州大学伯克利分校开发,目前有BIND8.x和BIND 9.x两个不同发展方向的版本,其中BIND 8.x中融合了许多提高效率、增强稳定性和安全性的技术。而BIND 9.x则增加了一些新的应用功能,如支持Ipv6、提供公开密钥加密、支持多处理器、提供线程安全操作、提供增量区传送等。
2.2.2 BIND配置
BIND可以在Unix、Linux或windows的环境下运行,本文以windows 2003为背景,采用最新的BIND9.8.0-P1软件,可在http:/www.isc.org下载使用。[6,7]
1)安装BIND
下载BIND9.8.0-P1.zip,解压后双击BINDInstall.exe安装,默认安装路径是C:WINDOWSsystem32dns。安装完毕后给dns文件夹更改权限(NTFS分区必备操作),添加named用户对此文件夹有读写权限。
2)配置BIND
(1)生成rndc.key和rndc.conf文件
以命令行模式进入C:WINDOWSsystem32dnsbin,
a执行rndc-confgen-a命令,将在dnsetc文件夹下生成rndc.key文件。
b执行rndc-confgen>rndc.conf命令,将在dnsbin目录下生成rndc.conf文件。
(2)生成named.root文件
a通过ftp://ftp.rs.internic.net/domain/下载。
b通过dig工具生成。以命令行模式进入C:WINDOWSsystem32dnsbin,执行dig>../etc/named.root,将在etc文件夹里生成named.root文件。
(3)新建named.conf文件
新建文本文档命名为named.conf,并建立以下内容。
(4)新建cnc.conf和cernet.conf文件
(5)新建cnc.def、cernet.conf、telecom.def和hncu.edu.cn.txt文件
在C:WINDOWSsystem32dnsmaster下,新建cnc.def、cernet.def、telecom.def文件和cnc、cernet、telecom文件夹,并在cnc、cernet和telecom文件夹里分别建立hncu.edu.cn.txt文件。
3 运行并测试
Bind安装配置后,在win32下将自己注册成服务,服务名叫ISC BIND,程序名为named.exe。
以不同ISP的用户,运行CMD,输入:nslookup www.hncu.net x.x.x.x(DNS服务器的IP地址),如果能解析并显示的为配置文件中的IP则配置运行正常。
4 结束语
本文针对目前国内大部分高校校园网的多出口应用现状,提出了利用智能DNS技术来解决问题的方法。并基于windows操作系统下的BIND 9.x域名解析软件,详细介绍了智能DNS的配置技术和过程。采用智能DNS技术,使校园网资源在多出口访问环境中的外网访问效果得到显著改善,在较大程度上提高了公网用户访问校园网资源的性能。
参考文献
[1]裴玮.浅析互联网互联互通现状与监管[J].电信网技术,2007(2):2-4.
[2]刘海韬,黄家林.策略路由技术在多出口校园网中的应用[J].电脑与信息安全,2002(4):51-53.
[3]Tanenbaum A S.Computer Networks(Fourth Edition)[M].北京:清华大学出版社,2008
[4]Thomson P S.Dynamic Updates inthe Domain Name System(DNS UPDATE)[R].RFC 2136,1997.
[5]Internet Systems Consortium.BIND 9 Administrator Reference Manual(9.3.2)[EB/OL].(2005).http://www.bind9.net/manuals.
[6]黄震.利用DNS-views实现策略域名解析[J].安徽建筑工业学院学报,2009,17(3):97-100.
9.DNS的工作方式 篇九
前面在介绍命令格式的时候,已经指出:完整的命令格式是:先是Dnscmd,随后是服务器名称变量,然后才是命令和参数,这里为了节省篇幅,直接从命令开始分析。
命令: /Info
用途:利用/Info 命令,可以列出指定的DNS服务器的指定属性。显然,这需要在命令参数中指定要显示的属性。如果不指定属性,执行这一命令后列出的将是所有的属性。
用法:
dnscmd ServerName /Info [Property]
参数:
ServerName
服务器名称在上一篇中已经介绍过,此处省略。
[Property] 方括号中参数是可选的,这里是指定的、需要显示的属性。如果不指定属性,则命令执行之后将显示全部属性。
下面是该命令使用的一个比较完整的例子:
在执行相应的命令后,系统会输出英文的显示信息。在下面输出的文本中的中文是由本人加入的解释,并不是原输出所带。DNS服务器的IP地址假设为172.16.12.1:
dnscmd 172.16.12.1 /info 只使用命令而不使用参数
输出的信息:
DNS Server 172.16.12.1 Information:
C:>dnscmd 172.16.12.1 /info
Query result: 查询结果
Server info: 服务器信息
ptr = 00074718 端口
server name = myserver.microsoft.com 服务器名称
version = C005 版本
DS container = c DS“容器”
Configuration: 配置信息 这些信息的含义请参考有关资料
dwLogLevel = 00000000
dwDebugLevel = 00000000
dwRpcProtocol = FFFFFFFF
dwNameCheckFlag = 00000002
cAddressAnswerLimit = 0
dwRecursionRetry = 3
dwRecursionTimeout = 15
dwDsPollingInterval = 300
Configuration Flags: 配置标志 这些标志值就是目前该标志所处的状态。其含义请参考有关资料
fBootMethod = 3
fAdminConfigured = 1
fAllowUpdate = 1
fDsAvailable = 1
fAutoReverseZones = 1
fAutoCacheUpdate = 0
fSlave = 0
fNoRecursion = 0
fRoundRobin = 1
fLocalNetPriority = 1
fStrictFileParsing = 0
fLooseWildcarding = 0
fBindSecondaries = 1
fWriteAuthorityNs = 0
Aging Configuration:
ScavengingInterval = 0
DefaultAgingState = 0
DefaultRefreshInterval = 168
DefaultNoRefreshInterval = 168
ServerAddresses:
Addr Count = 1
Addr[0] =>172.16.12.1
ListenAddresses:
NULL IP Arr
10.DNS欺骗 篇十
【摘要】
DNS欺骗可以用来上BBS隐藏ip,但其作用远远不止这些,
【简述】
熟悉网络的人都知道,当客户向一台服务器请求服务时,服务器方一般会根据客户的ip反向解析出该ip对应的域名。这种反向域名解析就是一个查DNS
(DomainNameService)的过程。
如果客户的ip对应有域名,那么DNS查询会返回其域名。服务器端得到这
一机器名后会将其记录下来并传递给应用程序,于是我们可以看到有人上bbs来自argo.zsu.edu.cn,其实她来自202.116.64.6DD“逸仙时空”BBS。
细心的人会发现BBS上显示ip的栏是有长度局限的,因此若客户机的域名足够长便可隐藏住自己机器名,如parallelcomput其实是parallelcomputing.xx.xxx.xxx.xx。这便是隐藏ip的方法之一,此法要和网管比较熟或者咱自己就是DNS网管。;)
但是您和网管熟吗?反正偶不熟。:(
让我们换个思路:如果服务器在进行DNS查询时能够人为地给它我们自己的应答信息结果会怎样呢?答案显然不用我说了,这就是著名的DNS欺骗(dnsspoofing)。说实话,DNS欺骗威力巨大,把它用来在BBS上隐藏ip实在是杀鸡用牛刀。:)
【详述】
现有的大多数DNS服务实现存在两个比较“好”的性质。
其一为当DNS服务器收到一合法的DNS应答信息时它会接受这一返回包中的所有信息,并存入CACHE。举一个例子:在10.10.1.2的用户要TELNET到100.100.100.100上,100.100.100.100使用的DNS为100.100.100.200。三次握手后100.100.100.100会向100.100.100.200发一PTR类型的DNS查询(由IP查主机名):
100.100.100.100->100.100.100.200[Query]
NQY:1NAN:0NNS:0NAD:0
QY:2.1.10.10.in-addr.arpaPTR
而100.100.100.200并没有关于用户IP对应域的信息,
它首先根据DNS协议极其配置查找出10.10.1.2的授权DNS服务器DD10.10.1.5。然后向其发出查询包:
100.100.100.200->10.10.1.5[Query]
NQY:1NAN:0NNS:0NAD:0
QY:2.1.10.10.in-addr.arpaPTR
这里隐蔽了iterative与recursive两种方式的区别,一般的DNS设置为iterative,recursive为可选。详见rfc1034。
10.10.1.5收到该查询信息后便可返回10.10.1.2对应的域名:
10.10.1.5->100.100.100.200[Answer]
NQY:1NAN:2NNS:1NAD:1
QY:2.1.10.10.in-addr.arpaPTR
AN:2.1.10.10.in-addr.arpaPTRclient.host.com
AN:client.host.comA10.10.1.2
NS:1.10.10.in-addr.arpaNSns.host.com
AD:ns.host.comA10.10.1.5
返回的包中给出了10.10.1.2对应的域名为client.host.com,并指出client.host.com对应的IP为10.10.1.2(请注意这两个对应的是不同的概念!)。如果这个返回包能由我们给出,岂不是爽呆了!
那么怎么做呢?可以控制住你的DNS,然后你想设成什么就是什么。但是太暴力了,偶不推荐这种方式:)。还有更温和的方法DD如果局域网内有DNS服务器,那么可以通过监听、响应的方法实现DNS欺骗。
即先sniff传到局域网来的DNS查询包,然后代替本网段的DNS服务器给出应答信息(罗嗦了这么多,这里最重要,呵呵)。
但是本网段的DNS服务器也会同时给出应答信息,这样我们构造的包与它的包会有冲突,通常是我们的慢:(
11.DNS的工作方式 篇十一
目前,不同网络互连带宽“瓶颈”现象严重,跨网访问速度慢。为了解决这个问题,往往一台Web服务器或邮件服务器需要同时拥有不同网络的IP。如果这些服务器所申请的不同网络IP对应不同的域名,即通过不同域名来区分不同的访问线路。这样同一个网站存在多个访问的域名,网民就需要记多一个域名,使用上非常不方便。为了既保证访问速度又方便网民,设计一种能根据客户源IP地址所归属网络,把同一个域名解析成不同的IP地址的DNS服务器具有重要的实际意义。
在Bind9的配置文件中通过View和Acl协同工作可实现根据用户源IP智能解析对应的服务器IP。但在具体使用上还要经过配置、编译和安装,同时Bing9是基于界面不友好的Unix平台,其本身也没有良好的管理界面。Win My DNS与“星外超级智能DNS”是基于目前全球使用广泛、最容易使用的Windows平台,Win My DNS是绿色免安装软件,“星外超级智能DNS”最终的解析采用Windows 2003企业版自带的DNS服务,具有良好操作及管理界面,主要针对目前电信与网通互联互通的问题。本文在建立电信与网通IP表基础上增加教育科研网的IP表和铁通IP表。目前中国教育科研网也属全国性大网,用户多,路由复杂。
二、DNS服务器的理论介绍
经过对有关DNS服务器背景和现状的分析,本文在这一节将介绍DNS服务器的基本概念、体系结构;工作原理以及DNS报文格式。
1、DNS服务器的体系结构
DNS是Domain Name System的缩写,即域名系统。主要功能就是将人们容易记忆的域名与不容易记忆的IP地址做转换。DNS域名空间为一种分层式树型结构,其中,位于树型结构最上层的是DNS域名空间的根(root),root一般用点号“.”来表示。紧靠在root下面的是“顶级域”,例如:www.gxnu.cn中最后面的.cn为顶级域名。“顶级域”下面的是“二级域”,如上面的gxnu.cn。当申请到“二级域”后,就可以在下面根据本企业或单位的需要来设置“子域”,如ci.gxnu.cn,pe.gxnu.cn等。
2、DNS服务器的工作原理
DNS服务器根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。当DNS客户端向指定的DNS服务器请求解析某域名时,DNS服务器会在该资料库中找寻用户所指定的域名。如果没有,该服务器会先在自己的高速缓存区中查询有无该域名记录,如果找到域名记录后,会从DNS服务器直接将所对应到的IP地址响应给客户端。如果DNS服务器在资料记录中和在高速缓存区中都找不到客户请求解析的域名时,DNS服务器会向别的DNS服务器查询客户请求的域名。
3、DNS报文格式
DNS定义了一个用于查询和响应的报文格式。图(1)显示报文的总体格式。
这个报文由12字节长的首部和4个长度可变的字段组成。标识字段由客户程序设置并由服务器返回结果。客户程序能通过它来确定响应与查询是否匹配。
16位标志字段的结构如图(2)所示:
其中QR为报文类型,0表示查询报文,1表示响应报文;Op Code表示查询类型,0表示标准查询,1表示反向查询,2表示服务器状态请求。
随后的4个16bit字段说明最后4个变长字段中包含的条目数。对于查询报文,问题数通常是1,而其他项则均为0。类似地,对于应答报文,回答数至少是1,剩下的两项可以是0或非0。
(1)DNS查询报文中的问题部分
DNS查询报文中的问题部分格式如图(3)。
查询名是要查找的名字,它是一个或多个标识符的序列。每个标识以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束。
图(4)显示了如何存储域名www.gxnu.edu.cn。
最常用的查询类型是A类型,表示期望获得查询名的IP地址。查询类通常是1,指互联网地址。
(2)DNS响应报文中的资源记录部分
DNS报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR(Resource Record)的相同格式。图(5)显示了资源记录的格式。
域名是记录中资源数据对应的名字。它的格式和前面介绍的查询字段格式(图(4))相同。
类型说明RR的类型码。它的值和前面介绍的查询类型值是一样的。类通常为1,指Internet数据。
生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为2天。
资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型1(A记录)资源数据是4字节的IP地址。
三、DNS服务器的关键问题分析与解决
根据本文的主要研究内容和设计思想,设计和实现具有根据客户所归属网络应答功能的DNS服务器,要解决的关键问题有:获取客户请求、判断客户IP所归属的网络、建立DNS数据库资源记录、构造响应报文、DNS高速缓存以及转发客户查询等等。本文将在这一节对以上关键问题做出详细分析并给出解决方法。
1、获取客户请求
当用户程序(如IE浏览器)浏览网址时,首先向本地的DNS解析器发出请求,解析器根据网络配置中的DNS服务器的地址向网络中的DNS服务器发起域名解析请求。而DNS服务器要对客户请求的域名进行解析,则首先要获得客户请求解析的域名。由DNS查询报文的格式可知,客户要请求解析的域名就是DNS查询报文中问题部分的查询名。所以,要获取查询名就要解决对查询报文的接收和分析的问题。
本文通过创建UDP套接字侦听53端口获取DNS查询报文。由DNS查询报文的格式可知,报文首部为12字节长,所以从第13个字节开始才为查询名。根据图2-3所示的域名存储格式,取出域名的每一个标识符,再根据域名的表示形式把每个标识符结合起来构成域名。
2、判断客户IP所属网络
要判断客户IP所属网络,首先要从接收到的报文中获取客户的IP地址,并记录下来,然后再根据不同网络IP表进行判断。
具体实现对客户源IP所归属的网络的判断时,用客户的IP与不同网络的IP表记录中的子网掩码相与,然后与对应的子网IP相比较,若相同,则可根据子网所属的网络判断客户IP所属网络。
3、建立DNS数据库资源记录
本文主要研究DNS的正向解析,建立A类型记录,为了突出根据用户源IP智能解析的设计思想,记录中增加net字段,即IP地址所属的网络。所以本设计采用的记录格式为:name net data
例:www.gxnu.edu.cn电信220.173.136.37
www.gxnu.edu.cn教育科研202.193.160.38
同时为了提高对域名的查询速度,在起动DNS服务器时,先把DNS数据库资源记录存入内存,本文采用Hash Map作为接收记录引用的容器。Hash Map是JDK的一大实用工具,把各个Object映射起来,可实现了“键--值”对应的快速存取。通过Hash Map的两个函数put()和get()可实现对DNS数据库资源记录的快速存取。
4、构造响应报文
若DNS服务器能够对客户请求进行解析,即在资源记录中找到请求域名对应的IP,则DNS服务器可向客户发出响应。而要响应客户请求,则首先需要构造响应报文。
由DNS的报文格式可知DNS响应报文包括首部、问题部分、回答部分、授权部分以及附加部分。
对首部的构造,首先是标识字段,占两个字节长,它的值与相应的DNS查询报文中的标识值一致。接下来是16bit的标志段,各子字段的值要根据表1所示的意义来设置。因为是响应报文,所以QR置为1。
问题数与相应的查询报文中的问题数相同,回答资源记录数至少为0001(16进制),授权资源记录数与附加资源记录数在本文设计中均置0000。
问题部分的查询名按图(4)所示格式进行构造。查询类型置0001(A类型),表示回答记录是域名对应的IP地址。查询类置0001,指互联网地址。
回答部分,按照图(5)所示的资源记录的格式来构造。首先是域名,此域名与问题中的查询名是相同的。所以本文采用压缩方法构造回答记录中的域名部分,将其值置为C00C。
对于压缩方法,《tcp/ip卷一》书中是这样描述的:“当一个域名中的标识符是压缩的,它的单计数字节中的最高两位将被置为11。这表示它是一个16 bit指针而不再是8 bit的计数字节。指针中的剩下14 bit说明在该DNS报文中标识符所在的位置(起始位置由标识字段的第一字节起算)。一个指针可能指向一个完整的域名,也可能只指向域名的结尾部分,因为给定域名的结尾标识符是相同的。”
例如:假设问题部分中的查询名字段为"03 66 74 70 02 7575 03 6e 65 74 00"(表示域名ftp.uu.net)。因此,将回答记录中的域名部分的值置为C00C时,表示利用压缩方法构造。C00C二进制表示为11000000 00001100,最高两位被置为11,剩下的14位"000000 00001100"说明标识符所在的位置相对于DNS报文起始位置偏移了12字节。而03相对于dns报文起始位置的偏移量正好为12。也就是说指针指向的内容为ftp.uu.net,即回答记录中的域名为ftp.uu.net。
回答部分的类型与类字段的值与问题部分的一样,均为0001。生存时间本文采用固定值00000C82(表示生存时间为3202秒)。资源数据长度为0004,表示资源数据是4字节的IP地址。
5、DNS高速缓存
为了可优化查询,在DNS服务器中维护一个高速缓存,存放最近用过的本地数据库资源记录中没有的域名与IP映射信息记录。高速缓存的实现主要解决记录的存取,以及为每项记录的内容计时等问题。
本文同样使用Java中的Hash Map来实现对缓存记录的存取。为了保持高速缓存中的内容正确,本文在设计中增加了为每个记录的内容计时,并删除超过设定缓存时间的记录的功能。为了测试方便,本文在实现为每个记录计时时以秒为单位,并可随意设定缓存时间。
6、转发查询报文
DNS服务器在接收到查询报文后,分析查询报文取出域名,检查它是否被授权管理这个域名,即在DNS数据库资源记录中查找取得的域名是否存在。若没被授权,则查看自己的高速缓存,若高速缓存中也没有,则DNS服务器向根DNS服务器或上一级DNS服务器转发用户查询。
四、DNS服务器的设计与实现
在分析及解决DNS服务器的关键问题后,本文进入对DNS服务器的设计与实现。
1、DNS服务器的总体功能
通过对DNS服务器设计的关键问题分析与解决,本文设计和实现了具有根据客户网络进行应答功能的DNS服务器。该DNS服务器的功能包括:接收和分析用户查询、判断客户所在网络、构造响应报文响应客户请求、DNS高速缓存以及转发客户请求等功能。本文设计的DNS服务器的功能流图如图(6):
2、DNS服务器具体功能的实现
鉴于Java是面向对象化的编程语言,而且随着互联网技术的不断发展,Java在网络编程方面的优势日益突出,同时Java内建的多线程机制也是十分方便。所以本文程序设计与实现采用Java编程语言。
(1)创建套接字实现接收DNS报文功能
本文通过创建UDP套接字侦听53端口获取DNS报文。通过创建字节类型数组inpkdata来存储报文各数据段。以下为主要源代码及重要注释:
udp Socket=new Datagram Socket(53,
Inet Address.get Local Host());//创建套接字
in PK=new Datagram Packet(inpkdata,inpkdata.length);
udp Socket.receive(in PK);//接收查询报文
(2)实现分析DNS报文功能
实现对DNS报文的分析能够判断DNS报文类型、从查询报文中取出客户问题,从应答报文中取出其他DNS服务器对客户请求的回答。以下为主要源代码:
(3)实现响应客户请求功能
要响应客户请求,首先必须根据对域名的解析得到的结果构造响应报文。主要源代码及注释:
3、根据客户网络应答的DNS服务器的测试
测试工具:利用命令nslookup进行测试。
测试环境:DNS客户端与服务器IP均为铁通59.155.112.55。
测试步骤:
启动DNS服务器,为了测试方便,设置缓存时间为60秒。打开DOS命令窗口,输入测试命令nslookup,设置DNS服务器为59.155.112.55。
首先测试存在于DNS数据库中的域名abc.ci.gxnu.edu.cn,此域名对应的IP有:教育科研202.193.164.22,铁通59.155.0.25,电信220.160.0.16。因为客户端所在网络为铁通网,所以解析结果返回铁通IP:59.155.0.25。
接着测试域名www.gxnu.edu.cn,因为此域名不存在于DNS数据库中,所以DNS服务器启动转发功能,对域名进行转发解析。
在缓存时间内测试www.gxnu.edu.cn,则DNS服务器对此进行缓存解析。
在超出缓存时间后再测试www.gxnu.edu.cn,此时域名在缓存的记录已被删除,故DNS服务器再次对它进行转发解析。
解析情况如图(7)与图(8)所示。
五、总结
本文的研究主要针对跨网访问速度慢的问题,设计和实现了具有根据客户所归属网络应答功能的DNS服务器。在研究和实现的过程中通过了对有关DNS服务器的背景与现状的分析,对DNS服务器有关概念、工作原理、报文格式的学习,对DNS服务器关键问题的分析和解决,逐步实现了DNS服务器的接收和分析用户查询、判断客户所在网络、构造响应报文响应客户请求、高速缓存以及转发客户请求等功能。
参考文献
[1]BehrouzA.Forouzan,SophiaChungFegan著[M],谢希仁等译.TCP/IP协议族(第3版).北京:清华大学出版社.2006年5月.
[2]Elliotte Rusty Harold著,朱涛江,林剑译.JAVA网络编程(第三版)[M].北京:中国电力出版社.2005年月11月.
[3]谢希仁编著.计算机网络(第4版)[M].北京:电子工业出版社.2003年6月.
[4]雍俊海编著.JAVA程序设计[M].北京:清华大学出版社.2004年8月.
[5]高传善,毛迪林,曹袖著.数据通信与计算机网络(第2版)[M].北京:高等教育出版社.2004年12月.
[6]李静梅吴鹏.智能DNS系统的设计与实现[J]《.计算机工程与应用》2007第11期:157-160.
12.DNS的工作方式 篇十二
以下以做一个test.com的泛解析到IP: 222.222.222.222 为例。(即所有的 *.test.com 解析到同一台主机上)
1,添加好test.com,如下图
2,在test下添加一个名称为 * 的域 (右键,添加域),添加完如下图
3,在*的域下,添加一个主机(右键,新建主机,主机名称为空,IP则填写为您要将域名泛解析的对应IP),添加完如下图,
大功告成!
13.JDNS 一个简单的DNS实现 篇十三
为了获得最大的灵活性,JDNS采用C开发。
特性:
DNS客户端“stub”解析
可获取的任何记录类型,为许多已知类型提供了方便的解码: A, AAAA, SRV, MX, TXT等.
执行重试,缓存/到期和 CNAME 跟随
改编自Q3Dns的算法逻辑
Multicast查询
14.DNS法测定红枣总糖含量 篇十四
1 仪器与试剂
1.1 仪器
FA1104型分析天平,8X-4-10型箱式电阻炉,722型可见分光光度计,766型远红外烘箱、HH-S型电热恒温水浴锅。
1.2 试剂
DNS试剂的配制:称取6.5 g 3,5-二硝基水杨酸溶于少量水中,移入1000 mL容量瓶中,加2 mol·L-1氢氧化钠溶液325 mL,再加入45 g丙三醇,摇匀,定容至1000 mL。
葡萄糖对照品液的配制:精密称定于105 ℃干燥至恒重的葡萄糖100.0 mg,置100 mL量瓶中,溶解并稀释至刻度,混匀得1.00 mg·mL-1葡萄糖对照品溶液。所用其他试剂均为分析纯。
红枣(外购),临用前将其在50~60 ℃下烘至恒重后,粉碎,过0.178 mm筛放干燥器中备用。
2 方法与结果
2.1 DNS法测定波长的确定
取1.2 mL葡萄糖标准液及2.8 mL蒸馏水分别置于50 mL试管中,再各加3.0 mL DNS试剂,沸水浴加热5 min,流水冷却,蒸馏水定容。将葡萄糖显色液-水、DNS试剂-水(空白),葡萄糖显色液-DNS试剂,在波长440~600 nm范围内进行扫描,结果见表1。从表1可知,500 nm时葡萄糖显色液-水和葡萄糖显色液-DNS试剂的吸光度最大,故本实验选择500 nm为最大吸收波长。
2.2 DNS试剂制备及其放置时间的确定
在准确加入1.0 mL葡萄糖标准溶液的系列50 mL容量瓶中,分别加入不同量的DNS试剂,沸水浴加热5 min,流水冷却定容。在500 nm波长下测定不同时间的吸光度,相同条件下测定空白溶液,结果见表2。从表2可以看出,DNS的量在相同体积时所测的吸光度均无太大的变化,在100 min内DNS试剂很稳定,其浓度不随放置时间的变化而变化。故DNS量的选择可在1~5 mL,放置时间可在100 min内。
2.3 加热时间的确定
取葡萄糖标准溶液1 mL及蒸馏水2 mL于系列50 mL的容量瓶中,分别加入DNS试剂,置沸水浴中加热、反应,不同时间取出,流水冷却、定容。在500 nm波长下测定不同加热时间溶液吸光度,相同条件下测定空白溶液,结果见表3。随着沸水浴加热时间的延长,吸光度变大,但在5 min后变化不大,吸光度较稳定。故最佳水浴加热时间为5 min。
2.4 盐酸浓度的选择
取0.5 g红枣样品液于100 mL容量瓶中,沸水浸泡30 min,冷却后分别加入不同浓度的盐酸(0.1~10 mol·L-1),沸水浴加入30 min,冷却,氢氧化钠中和,定容,过滤,得待测液。每种待测液各取2 mL于50 mL容量瓶中,分别准确加入所确定的DNS的量,沸水加热,流水冷却,定容,在500 nm波长下测定吸光度,结果见表4。当盐酸浓度小于1 mol·L-1时,溶液吸光度增大,当大于1 mol·L-1时,溶液吸光度减小。故本实验盐酸采用1 mol·L-1。
2.5 葡萄糖标准曲线的制定
分别取葡萄糖标准液(1 mg·mL-1)0、0.4、0.8、1.2、1.6、2.0 mL于50 mL容量瓶中,分别准确加入DNS试剂3.0 mL,用蒸馏水补至7.0 mL,沸水浴加热5 min,流水冷却定容。在500 nm波长下测定吸光度,结果见表5。
计算得回归方程:A=4.4×10-3+5.125C,r=0.9988。
2.6 样品的测定
在500 nm波长下,显色剂用量3 mL,水浴加热时间为5 min,盐酸浓度为1 mol·L-1,按照2.5方法测定样品溶液的吸光度A=0.450,按回归方程计算样品水解后还原糖,由公式:总糖(%)=(水解后还原糖×稀释倍数/样品 )× 0.9× 100,计算总糖的百分含量为19.56%。
3 讨论
3,5-二硝基水杨酸在中性或偏碱性条件下与多糖水解的还原糖共热后被还原成棕红色的氨基化合物,在500 nm波长处具有最大吸收,DNS法测定红枣中总糖的最佳条件为:检测波长500 nm,显色剂用量1~5 mL,沸水浴中保持5 min,盐酸浓度为1 mol·L-1。红枣中总糖含量为19.56%。实验结果表明,精密度、灵敏度都能符合食品分析的要求,分析结果可靠。红枣中总糖含量较高,值得综合利用和开发。
摘要:对DNS法测定红枣总糖的各影响因素进行探讨,确定最佳条件为:检测波长500 nm,显色剂用量15mL,沸水浴中保持5 min,盐酸浓度为1 mol.L-1,红枣总糖含量19.56%。
关键词:红枣,DNS法,总糖
参考文献
[1]苏肖洁,牛鹏飞,仇农学.恒温微波辅助提取红枣总糖工艺研究[J].陕西农业科学,2007,(3):27-30.
[2]张雅利,郭辉.红枣补血作用的物质基础探讨[J].中国食物与营养,2005,(3):2-4.
【DNS的工作方式】推荐阅读:
减轻工作压力的方式09-20
创新工作方式07-20
工作方式规范07-29
沟通——领导者的主要工作内容和方式12-06
高校党建工作方式创新12-15
就业工作理论和方式方法创新12-11
关于乡镇财政管理方式改革工作情况汇报12-12
“全民健康生活方式日”宣传活动工作总结10-10
换一种方式试试看-班主任工作艺术10-01