【DNS入门学习】之DNS转发功能 2021-08-24 网络 暂无评论 4709 次阅读 在/etc/named.conf中可以在options段中使用forwarders和forward指令设置DNS转发: ``` options { forwarders { 192.168.1.110; 192.168.1.112; }; forward first; }; forwarders { DNS_IP_1; DNS_IP_2; }; ``` forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。 ``` forward first | only; ``` forward指令用于设置DNS转发的工作方式: forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。 forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。 1、完全转发:当DNS服务器收到查询请求的时候会先看看是不是查询本域的信息,本地缓存是否有数据,如果不能使用本地数据解析DNS会将查询请求发送给转发器,此时是以递归查询的方式发送给转发器的,而在标准的DNS解析中,DNS服务器将以迭代查询的形式发送给另一个DNS服务器。 所谓的 forwarder,就是当某一台 NS 主机遇到非本机负责的 zone ( slave zone 也属于本机负责的范围) 查询请求的时候,将不直接向 "." zone 查询,而把请求转交给指定的 forwarder (一台或多台) 主机代为查询。我们知道,当DNS服务器接到客户端主机的查询请求时,首先会检查这个查询是否属于本机管辖,否则将转向 "." zone 再逐级的查询下去,最后再把查询结果告诉客户端。在这个过程之中,DNS服务器还会将查询到的结果存放到缓存中。只要缓存中的 TTL 没过期,在下次遇到同样查询的时候,就可以直接将结果响应给客户端,而无需再重复上次的查询流程。如果DNS服务器上指定了forwarder,那这个DNS发现缓存中没有记录时,将不向 "." 查询,而是向 forwarder 送出同样的请求(转发),然后等待查询结果,即把逐级往下查询这个耗费精力的动作,交给 forwarder 负责。但无论这个结果是自己直接查询得来的,还是 forwarder 送回来的,DNS服务器都会保存一份数据在缓存中。这样,以后的相同查询就快多了,这对于DNS所服务的客户端而言查询效率会提高很多。 当forwarder没有返回答案时,奔DNS会自己去远端请求。但是如果配置了forward only; 则他仅仅处理转发,而不自己查询。 2、部分转发(只转发解析某个域的DNS):假设有两个域,a.com和b.com,a.com这个域是经过授权(向上级注册,也就是.com知道他的存在)的,而b.com这个域没有经过授权,此时如果a.com中的一台主机要访问 `www.b.com` 就会出现访问不了,但是如果a.com知道b.com这个域的DNS主机是谁,即便b.com没有经过授权,这时a.com的DNS可以设一个部分转发,将本域所有要求解析b.com域的请求全部都发给b.com这个域的DNS主机就可以了。 部分转发一般用于访问未经授权的DNS域。配置格式 ``` zone "b.com" IN { type forward; forwarders {IP;}; } ``` 注意: 1.转发服务器的查询模式必须允许递归查询,否则无法正确完成转发 2.转发服务器列表如果是多个DNS服务器,则会依次尝试,直到获得查询信息为止 3.配置区域委派时,如果使用转发服务器,有可能会产生区域引用的错误 转发https://bbs.huaweicloud.com/blogs/110060 标签: dns 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。