一、DNS的原理
1.DNS的概念 DNS 是域名系统 (Domain Name System) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系解析找到相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。
2.DNS的请求过程
二、DNS代理的作用
内网终端用户上网时,LDNS填写AD的LAN口IP或AD DNS服务器列表里的服务器IP,AD可以代理用户选择DNS服务器解析域名。
三、DNS代理原理及流程图
1、DNS重定向模块:将内网的DNS请求重定向到本地的DNS服务器,实现DNS透明代理。 2、DNS服务器模块:负责DNS请求的解析及应答内网DNS记录; 3、DNS代理模块:将非内网DNS记录的请求代理到某个LDNS上,先判断是否启用DNS前置策略,匹配前置策略后选择在线LDNS;如果不匹配前置策略,需要再判断是否存在域名智能路由,请求匹配域名智能路由的域名时,选择该域名智能路由的链路绑定的在线LDNS,否则按照DNS透明代理选择策略选择在线LDNS; 4、会话保持模块:维持内网用户与LDNS的会话信息,在会话保持时间范围内,内网用户再次访问时将选择会话保持的LDNS,注意:会话保持和DNS代理前置策略同时存在时,DNS代理前置策略优先; 5、DNS前置调度模块:优先将符合规则的DNS请求根据策略进行调度,依赖于LDNS的状态信息; 6、LDNS调度算法模块:保证DNS代理的多个DNS服务器的负载均衡,其依赖于LDNS的状态信息; 7、LDNS状态信息模块:记录LDNS集合中各个LDNS的状态,如健康状态、访问次数、关联链路流量等; 8、DNS监视器模块:监视配置的DNS服务器的健康状态。
四、DNS代理生效条件 客户端的DNS请求是否可以匹配上AD的DNS代理,主要分为如上三种: 1.代理目标范围选择“指定服务器”:客户端PC填写的LDNS DNS必须为DNS服务器列表或者监听地址中的任何一个才会生效,否则DNS数据即使经过AD也不会匹配代理模块; 2.代理目标范围选择“全部的DNS请求”:不管客户端PC填写的LDNS DNS,只要是经过AD的DNS请求数据都会转到代理模块处理,需要慎用,优先级比智能DNS高从而导致入站智能DNS失效; 3.代理目标范围选择“指定的域名”:需要DNS请求的域名符合指定的域名才会被代理模块处理。
五、DNS代理排错思路 举例:客户端使用AD的DNS代理无法解析出www.abc.com的IP。 如何排查 1、检查设备DNS代理目标网段的选择, 参考上面DNS代理生效条件,例如为指定的服务器:查看客户端的LDNS,是否填的AD的DNS代理监听DNS(一般是LAN口地址)或者AD的DNS代理服务器列表里的IP。 2、检查DNS服务器列表里的服务器状态,是否可以正常进行域名解析,监视的域名是否状态正常。 3、换一个客户端进行解析,因为同一客户端IP的请求会被会话保持。或者后台清空DNS代理会话保持后再试,命令:dproxy_cmd flush_ldns_ps。另外查看DNS会话保持可以用:dproxy_cmd dump_ldns_ps。 4、检查前置调度,看看是否配置了前置调度,调度到了错误的DNS服务器进行代理解析。 5、使用命令:netstat -npl | grep 5353,检查ad_dns_proxy是否正常监听。 6、检查我们设备出去进行代理请求的IP是否在DNS服务器允许的IP范围内,可以抓包看是否有refuse的包。 |