searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

dnsmasq源码浅析

2023-08-31 07:05:30
464
0
1、dns cache相关的数据结构,cache.c中定义,是一个hash表加链表的结构。节点为:struct crec
 
2、主要处理逻辑在check_dns_listeners()函数, 有最大连接数限制。
 
check_dns_listeners()函数里面做对应的判断,如果是请求的则调用receive_query()函数,在cache里面没有找到就调用forward_query()函数转发到dns服务器,查到结果后就使用reply_query()函数返回给对应的IP。为了获取到哪个IP请求,请求的域名,在forward_query()函数里面打印,为daemon->namebuff和daemon->addrbuff。
 
 
3、主要函数是receive_query, forward_query, reply_query等
 
receive_query - 主要是解析数据报,看看缓存有没有,有且未超时则使用缓存answer_request处理封装相应,没有就调用forward_query
 
 
forward_query - 主要做的就是将数据报文发送到所有的dns服务器,来自/tmp/resolve.conf.auto
 
 
reply_query - 接受dns服务器的响应,收到后查找是哪个请求,没有找到则丢弃,找到了,就根据SOA,等取出
 
 
 
此外,还有如下三个重要函数:

 
 
0条评论
0 / 1000
z****n
2文章数
0粉丝数
z****n
2 文章 | 0 粉丝
z****n
2文章数
0粉丝数
z****n
2 文章 | 0 粉丝
原创

dnsmasq源码浅析

2023-08-31 07:05:30
464
0
1、dns cache相关的数据结构,cache.c中定义,是一个hash表加链表的结构。节点为:struct crec
 
2、主要处理逻辑在check_dns_listeners()函数, 有最大连接数限制。
 
check_dns_listeners()函数里面做对应的判断,如果是请求的则调用receive_query()函数,在cache里面没有找到就调用forward_query()函数转发到dns服务器,查到结果后就使用reply_query()函数返回给对应的IP。为了获取到哪个IP请求,请求的域名,在forward_query()函数里面打印,为daemon->namebuff和daemon->addrbuff。
 
 
3、主要函数是receive_query, forward_query, reply_query等
 
receive_query - 主要是解析数据报,看看缓存有没有,有且未超时则使用缓存answer_request处理封装相应,没有就调用forward_query
 
 
forward_query - 主要做的就是将数据报文发送到所有的dns服务器,来自/tmp/resolve.conf.auto
 
 
reply_query - 接受dns服务器的响应,收到后查找是哪个请求,没有找到则丢弃,找到了,就根据SOA,等取出
 
 
 
此外,还有如下三个重要函数:

 
 
文章来自个人专栏
zabbix监控服务
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0