bind学习
文章平均质量分 66
divlee130
这个作者很懒,什么都没留下…
展开
-
bind acl 实现
概述BIND配置中一大堆一大堆的acl,allow-query, allow-recursion, allow-update还有view的match-clients等 acl中的主要存储的就是IP,可以把acl当做是一个IP池,在需要验证的时候就从这个IP池中查找该IP是否存在。那么BIND中如何实现这个非常常用的IP池的呢?数据结构struct dns_acl { unsigned int原创 2015-06-08 07:09:24 · 1522 阅读 · 0 评论 -
bind udp 处理流程之补充篇
概述udp数据的处理主要的处理流程已经在http://blog.csdn.net/divlee130/article/details/46391981有所介绍,但是具体到当一个请求过来时是如果提取请求信息,然后根据请求如果处理下一步的操作等等。 是递归还是怎么样? 这些到目前为止还不清楚。本文试图解决这个问题。client_request通过创建client_create注册ISC_SOCKEVEN原创 2015-07-06 07:22:08 · 1833 阅读 · 1 评论 -
bind udp 数据处理
简介本文简要介绍一下BIND9中的UDP数据处理,包括bind是如何处理UDP报文,如何收发报文信息,创建socket设置什么socket参数、多线程环境中如何让多个线程读取53端口的数据。对于UDP而言,BIND9的做法是在主进程中创建好UDP socket,然后各个线程都在这个fd上通过recvmsg来收取消息并处理。函数调用关系ns_interface_listenudp <–ns_inter原创 2015-06-06 22:18:45 · 1470 阅读 · 0 评论 -
bind 启动过程
概述bind 启动是从bin/named下的main开始。在bind架构一文已有所介绍,本文试图从更细的角度试图分析,到底做了什么操作。main开始[root@localhost ~]# /usr/local/sbin/named -c /etc/named.conf -g -d 1502-Jul-2015 21:54:30.896 starting BIND 9.6.0-P1 -c /etc/n原创 2015-07-02 22:14:10 · 1690 阅读 · 0 评论 -
bind 定时器
概述BIND中有一些操作是定时任务,server.c的run_server函数中创建了三个定时任务,分别执行interface_timer_tick、heartbeat_timer_tick和pps_timer_tick;其他模块中还有很多时间任务。 我们知道linux中的定时器可以用条件变量实现(用其中的pthread_cond_timedwait函数),这里有一个简单实现。BIND中的定时器也原创 2015-06-09 22:25:15 · 1053 阅读 · 0 评论 -
rndc reload 执行过程
概述rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。这里面有比较详细的介绍http://baike.baidu.com/view/1301778.htm?fr=aladdin,本文主要是在本机执行该命令,bind 是如何处理该命令的?函数调用关系load configuration 的时候通过ns_controls_configure 创建 listener 侦听原创 2015-07-02 07:14:19 · 2970 阅读 · 0 评论 -
bind server.c
整体功能分析server.c 主要完成BIND 服务器的启动、关闭、reload、reconfig、refresh 等命令的处理,进行服务器、视图和区域配置的解析和处理。函数调用关系setup调用ns_server_create 函数创建默认服务器对象。ns_server定义在/bin/named/include/named/server.h 保存服务器配置。structns_server {原创 2015-06-04 07:13:54 · 1047 阅读 · 1 评论 -
bind client.c
整体功能分析client.c 主要是负责DNS 服务器与用户接口的设置,可以分成三个模块: 1.数据包传送模块 2.用户的创建模块 3.用户管理器的创建模块 用户的创建模块是为用户管理器的创建模块建立的,对于同一用户,他每次建立连接,只要连接不断开和超时,他的用户创建模块不会被再次激发。因此,这两个模块仅是一次性的,在用户创建以后再发送数据包,它们将不会有任何影响。数据包传送模块则是关于数据原创 2015-06-05 06:58:35 · 862 阅读 · 1 评论 -
bind query.c
整体结构分析主要包含处理各种类型和情况的查询函数,多数函数仅仅为该文件内的其它调用,以便方便的完成查询。ns_query_start()函数向外提供完整的查询服务。数据结构/*% nameserver query structure */struct ns_query { unsigned int attributes; unsigned int原创 2015-06-06 17:20:45 · 779 阅读 · 0 评论 -
bind 架构
本篇主要介绍bind实现的架构不涉及具体细节分析。后续会不断完善。这个系列的文章大多源于网络和自己的总结。关于bind分析的文章网络不是很多,由于我的水平有限,错误在所难免。欢迎大家批评指正。概述1.Bind中的socket采用的是epoll模型 2.Bind业务处理主要要关注一个run函数和isc_app_run函数 3.Bind运行主要是两个线程和一个do while循环,这三部分构成了bi原创 2015-06-03 07:15:31 · 1723 阅读 · 3 评论