DNS&DDNS
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
主机名到IP地址的映射有两种方式:
1) 静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用,手工建立域名和IP地址之间的对应关系。当用户使用域名进行某些应用(如telnet应用)时,系统查找静态域名解析表,从中获取指定域名对应的IP地址。
清除PC静态DNS表:ipconfig /flushdns
2) 动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
1.递归查询: 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机; 2.迭代查询(反复查询): 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。由于动态域名解析需要域名服务器(DNS server)的配合,会花费一定的时间,因此可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
动态域名解析通过向域名服务器(两种常用的域名服务器www.pubyun.com、www.dns0755.net)查询域名和IP地址之间的对应关系来实现将域名解析为IP地址。动态域名解析过程如下:
(1) 当用户使用域名进行某些应用时,用户程序首先向DNS客户端中的解析器发出请。
(2) DNS客户端收到请求后,首先查询本地的域名缓存。如果存在已解析成功的映射项,就将域名对应的IP地址返回给用户程序;如果未发现所要查找的映射项,就向域名服务器发送查询请求。
(3) 域名服务器首先从自己的数据库中查找域名对应的IP地址。如果判断该域名不属于本域范围,就将请求交给其他域名服务器处理,直到完成解析,并将解析的结果返回给DNS客户端。
(4) DNS客户端收到域名服务器的响应报文后,将解析结果返回用户程序。
其中解析器和缓存构成DNS客户端。用户程序、DNS客户端在同一台设备上,而DNS客户端和域名服务器一般分布在两台设备上。
动态域名解析支持缓存功能。每次动态解析成功的域名与IP地址的映射均存放在DNS客户端的动态域名缓存区中,当下一次查询相同域名的时候,就可以直接从缓存区中读取,不用再向域名服务器进行请求。缓存区中的映射在一段时间后会老化而被删除,以保证及时从域名服务器得到最新的内容。老化时间由域名服务器设置,DNS客户端从域名服务器的应答报文中获得老化时间。
抓包
用PC ping h3c.com 的过程(抓wan口的包),首先会进行域名解析,得到h3c.com的IP地址,然后PC再发送ICMP报文。
DNS代理
DNS代理(DNS proxy)用来在DNS client和DNS server之间转发DNS请求和应答报文。局域网内的DNS client把DNS proxy当作DNS server,将DNS请求报文发送给DNS proxy。DNS proxy将该请求报文转发到真正的DNS server,并将DNS server的应答报文返回给DNS client,从而实现域名解析。
使用DNS proxy功能后,当DNS server的地址发生变化时,只需改变DNS proxy上的配置,无需改变局域网内每个DNS client的配置,从而简化了网络管理。
DNS代理的工作过程如下:
(1) DNS client把DNS proxy当作DNS server,将DNS请求报文发送给DNS proxy,即请求报文的目的地址为DNS proxy的IP地址。
(2) DNS proxy收到请求报文后,首先查找本地的静态域名解析表和动态域名解析缓存表,如果存在请求的信息,则DNS proxy直接通过DNS应答报文将域名解析结果返回给DNS client。
(3) 如果不存在请求的信息,则DNS proxy将报文转发给DNS server,通过DNS server进行域名解析。
(4) DNS proxy收到DNS server的应答报文后,记录域名解析的结果,并将报文转发给DNS client。DNS client利用域名解析的结果进行相应的处理。
只有DNS proxy上存在域名服务器地址,并存在到达域名服务器的路由,DNS proxy才会向DNS server发送域名解析请求。
DNS spoofing(DNS欺骗)
DNSspoofing(DNS欺骗)主要应用于如图所示的拨号网络。在该网络中:
Device通过拨号接口连接到PSTN/ISDN(公共交换电话网络)等拨号网络。只有存在通过拨号接口转发的报文时,才会触发拨号接口建立连接。
Device作为DNS proxy(代理人)。在Host上将Device指定为DNS服务器;拨号接口建立连接后,Device通过DHCP等方式动态获取DNS服务器地址。
Device上未开启DNS spoofing功能时,Device接收到Host发送的域名解析请求报文后,如果不存在对应的域名解析表项,则需要向DNS server发送域名解析请求。但是,由于此时拨号接口尚未建立连接,Device上不存在DNS server地址,Device不会向DNS server发送域名解析请求,也不会应答DNS client的请求。从而导致域名解析失败,且没有流量触发拨号接口建立连接。
DNS spoofing功能可以解决上述问题。使能DNS spoofing功能后,即便Device上不存在DNS server地址或到达DNS server的路由,Device也会利用指定的IP地址作为域名解析结果,应答DNS client的域名解析请求。DNS client后续发送的报文可以用来触发拨号接口建立连接。
如图所示网络中,Host访问HTTP server的报文处理流程为:
(1) Host通过域名访问HTTPserver时,首先向Device发送域名解析请求,将HTTP server的域名解析为IP地址。
(2)Device接收到域名解析请求后,如果拨号接口尚未建立连接,Device上不存在DNS server地址,或者设备上配置的DNS server地址均不可达,则Device利用DNS spoofing中指定的IP地址作为域名解析结果,应答DNS client的域名解析请求。该域名解析应答的老化时间为0。并且,应答的IP地址满足如下条件:Device上存在到达该IP地址的路由,且路由的出接口为拨号接口。
(3) Host接收到Device的应答报文后,向应答的IP地址发送HTTP请求。
(4)Device通过拨号接口转发HTTP请求时,触发拨号接口建立连接,并通过DHCP等方式动态获取DNS server的地址。
(5)域名解析应答老化后,Host再次发送域名解析请求。
(6)之后,Device的处理过程与DNSproxy工作过程相同。
(7) Host获取到正确的HTTPserver地址后,可以正常访问HTTP server。
DDNS
利用DNS可以将域名解析为IP地址,从而实现使用域名来访问网络中的节点。但是,DNS仅仅提供了域名和IP地址之间的静态对应关系,当节点的IP地址发生变化时,DNS无法动态地更新域名和IP地址的对应关系。此时,如果仍然使用域名访问该节点,通过域名解析得到的IP地址是错误的,从而导致访问失败。
DDNS(Dynamic Domain Name System,动态域名系统)用来动态更新DNS服务器上域名和IP地址之间的对应关系,保证通过域名解析到正确的IP地址。
目前,只有IPv4域名解析支持DDNS,IPv6域名解析不支持DDNS,即只能通过DDNS动态更新域名和IPv4地址之间的对应关系。
设备通过PPPoE或动态获取IP地址上网时,获取到的IP地址通常不固定,这给想访问内网服务器的因特网用户带来很大的不便,DynamicDNS(DDNS)可以很好的解决这个问题。
本设备在DDNS服务器上会建立一个IP与域名(需要预先注册)的关系表,当WAN口IP变化时,本设备会自动向指定的DDNS服务器发起更新请求,DDNS服务器上更新域名与IP地址的对应关系。保证了无论本设备的WAN口IP地址如何改变,因特网上的用户仍可以通过域名对其进行访问。
DDNS典型组网图
DDNS的典型组网环境如图所示,DDNS采用客户端/服务器模式:
·DDNS客户端:IP地址变化时,需要在DNS服务器上动态更新其域名和IP地址对应关系的设备。Internet用户通常通过域名访问提供应用层服务的服务器,如HTTP、FTP服务器。为了保证IP地址变化时,仍然可以通过域名访问这些服务器,当服务器的IP地址发生变化时,服务器将作为DDNS客户端,向DDNS服务器发送更新域名和IP地址对应关系的DDNS更新请求。
· DDNS服务器:负责通知DNS服务器动态更新域名和IP地址之间的对应关系。接收到DDNS客户端的更新请求后,DDNS服务器通知DNS服务器重新建立DDNS客户端的域名和IP地址之间的对应关系。从而保证即使DDNS客户端的IP地址改变,Internet用户仍然可以通过同样的域名访问DDNS客户端。