openwrt dns解析流程

来源:互联网 发布:矩阵可逆与秩的关系 编辑:程序博客网 时间:2024/05/19 12:11

1、概述

openwrt的dns由dnsmasq(dns server 和 dhcp server的合并)实现,默认配置为dns转发模式。

由于wan口为dhcp client, 则dhcp server在启动时,将上级路由的ip,作为本路由的nameserver,实现dns转发。

lan口为dhcp server,因此,下级设备自动获取的nameserver即为本路由的ip地址。


2、分析

和dns解析相关的有2个配置文件,都在/tmp下

1) resolv.conf.auto

来源:由netifd生成, netifd在每次wan口up事件时,重写该文件。

作用:当wan口有包请求dns时, foward到该地址上,从该处获取dns。

实例:


分析:sta首先请求本地配置的dns server(自动获取:192.168.95.1)中查询360的ip(dns查询顺序忽略),该包到达ap的lan口后,转发到ap的wan口。

ap的wan口,根据resolv.conf.auto的配置,转发到192.168.1.1上获取。

192.168.1.1收到该包后,请求本地dns server(一般为isp提供),获取360的ip。

结果按照原路返回给sta。


2) resolv.conf

来源:不明,没有深究。

作用:当lan口有包请求dns时, foward到该地址上,从该处获取dns。


实例:

当我们在终端时ping 某一个地址时,该地址在公网和内网都有一个ip地址对应:

分析:当我们在终端ping时,即直接从lan口发包时,匹配resolv.conf里面的nameserver,返回一个内网地址。

通过其他测试,我得出一个额外结论,仅当resolve.conf没有配置时,会再次匹配resolv.conf.auto 返回公网地址,配置错误不会再次匹配。


3、结论

当在lan口直接ping时,读取resolv.conf的内容,作为dns server,若resolv.conf为空,再读取resolv.conf.auto的内容作为nameserver。

在sta上ping时, lan口直接转发到wan口,读取resolv.conf.auto的内容作为nameserver。



0 0