openwrt dns解析流程

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。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值