版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IT 运维专家网利用 Bind DLZ MySQL 构建智能 DNS作者:日期NetSeek2009-3-7版号: V2【题 纲】一、相关术语简介 二、智能 DNS 系统服务规划三、安IND 及基本环境四、配置 DNS TSIG五、配置 Bind-View-DLZ-MySQL 六,添加相关记录并进行测试七,后续话题及相关参考 一、相关术语简介: 1、智能 DNS(Bind-view): 智能 DNS 的原理很简单:在用户解析一个域名的时候,判断一下用户的IP,然后跟 DNS 服务器内部的 IP 表匹配一
2、下,看看用户是电信还是网通用户,然后给用户返回对应的 IP 地址。目前的域名服务运营商不提供智能 DNS 服务,所以必须自行架设 DNS 服务或者使用网上免费的智能 DNS 服务,如 DNSPOD.2Bind-DLZBind-DLZ 主页:http:/bind-dlz.sourceforge net/DLZ(Dynamically Loadable Zones)与传统的 BIND9 不同,BIND 的不足之处:* BIND 从文本文件中获取数据,这样容易因为编辑错误出现问题。 * BIND 需要将数据加载到内存中,如果域或者记录较多,会消耗大量的内存。 * BIND 启动时解析Zone 文件,
3、对于一个记录较多的 DNS 来说,会耽误更多的时间。 * 如果近修改一条记录,那么要重新加载或者重启 BIND 才能生效,那么需要时间,可能会影响客户端查询。 而 Bind-dlz 即将帮你解决这些问题, 对Zone 文件操作也更方便了,直接对数据库操作,可以很方 便扩充及开发管理程序。 二、智能 DNS 系统服务规划:1、NameServer 服务器注册(到新网或者万网添加)IT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! 服务名称 服务地址 219.23
4、2.244.11IT 运维专家网2、测试 NS 记录是否生效.更多的命令技巧请参考: /thread-2021-1-1.html3、Bind-View 规划【注】:由于资源问题,在此引用国内一些知名站点的 IP 做实验,请见谅!即当您是网通用户的时候,输入智能DNS服务器将把你分配到 16 (NK手机)这台服务器,其它同例。 ViewDF(默认)CNC(网通),TELECOM(电信),EDU(教育网),ANY(其它所有)include /usr/local
5、/bind/etc/cnc_acl.conf; include /usr/local/bind/etc/telecom_acl.conf; include /usr/local/bind/etc/edu_acl.conf;【注】IP 库及 ACL,如果你有比较详细的按城市或者地域的 IP 库,在设计 BIND-VIEW这个字段的时候,VIEW 就可以以城市或地区来命名和规划.IT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! 域名(host)运营商(view) 服务地址 网通(CNC)16
6、(NK 手机)电信(TELECOM)78 (CU) 教育网(EDU)07 (教育网) 电信通(ANY)30 (51CTO)#dig ns #dig +traceIT 运维专家网三、安ind 及基本环境 (以配置 为例,以下是配置安装相关基本环境.)1、编译安装 MySQL在此不作介绍,具体的请看http:/www.linuxton
7、 相关内容。注意编译 MySQL 的时候禁掉线程,相关的参数如下: 2、编译安ind注:禁掉线程;-with-openssl=你的 openssl 安装的相关目录有可能是/usr# make & maketall创建相关配置文件# vi localhost.zone# dig named.root#vi named.conf 在后面加入如下: IT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! include /usr/local/bind/etc/cnc_acl.conf;/ 网 通 ACL include /usr/loca
8、l/bind/etc/telecom_acl.conf; / 电 信 ACL include /usr/local/bind/etc/edu_acl.conf;/ 教 育 网 ACL include /usr/local/bind/etc/view.conf;/DLZ 相关的配置 ttl 86400OA localhost. root.localhost. ( 1997022700 ; Serial28800 ; Refresh14400 ; Retry3600000 ; Expire 86400 ) ; Minimum IN NS localhost.1 IN PTR localhost.c
9、d /usr/local/bind/etc./sbin/rndc-confgen rndc.conftail -n10 rndc.conf | head -n9 | sed -e s/#/g named.conf#mkdir /usr/local/src/bind-dlz #cd /usr/local/src/bind-dlz#wget /isc/bind9/9.6.0-P1/bind-9.6.0-P1.tar.gz #tar zxvf bind-9.6.0-P1.tar.gz#cd bind-9.6.0-P1#./configure -with-dlz-my
10、sql -enable-largefile -enable-threads=no -prefix=/usr/local/bind-with-openssl=/usr/local/openssl/-without-server -disable-threads -without-pthread IT 运维专家网四、配置 DNS TSIG1、使用 dnssec-keygen function 产生加密密钥,一个为 public key,另一个为 private key,本文假设应用服务器存在 CNC,TELECOM,EDU,ANY (1)产生加密金钥
11、#cd /usr/local/named/sbin(2)查看生成的密钥文件 # cat Kcnc.+157+24406.private /以网通为例.将:YTjTOw00PzeEaasA16/Rvw=详细请参照 named.conf 配置文件加入到 named.conf,其它同例。2、配置 named.conf#vi /usr/local/bind/etc/named.confIT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! key rndc-key algorithm hmac- md5;secret 5PubnjGuAWeH9F2d
12、IUYd6g=;controls inet port 953allow ; keys rndc-key; ;#options directory /usr/local/bind/etc; pid-file named.pid;#TSIG-key key cnc algorithm hmac-md5;secret YTjTOw00PzeEaasA16/Rvw=;Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5)Key: YTjTOw00PzeEaasA16/Rvw= Bits: AAA=#./dnssec-k
13、eygen -a hmac-md5 -b 128 -n HOST cnc #./dnssec-keygen -a hmac-md5 -b 128 -n HOST telecom #./dnssec-keygen -a hmac-md5 -b 128 -n HOSTedu #./dnssec-keygen -a hmac-md5 -b 128 -n HOSTanyIT 运维专家网五、配置 Bind-view-DLZ-MySQL / Bind-DLZ 核心部分1、配置 view.conf#vi /usr/local/bind/etc/view.conf
14、/创建 view 相关的配置文件#cnc-view /贴出其中网通部分的范例,更详细的请参照 view.conf 配置文件.IT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! view cnc_view view cnc_viewmatch-clients key cnc;dns-ip-list;CNC; ;allow-query-cache none; ;allow-recursion none; ;allow-transfer none; ;recursionno;dlz Mysql zone database mysqlhost=1
15、 dbname=cdn_view ssl=false port=3306 user=root pass= algorithm hmac-md5;secret pUcQGLpSH2tQgVZ9ZHU6Yg=;key edu algorithm hmac-md5;secret Bzo6MTzrzbRFQbONYTS1Cw=;key any algorithm hmac-md5;secret DHpPfGJdMLv91OygBf9H6w=;#aclacl dns-ip-list37; #master DNS IP1; #slave D
16、NS IP;#acl includeinclude /usr/local/bind/etc/cnc_acl.conf;/ 网 通 ACL include /usr/local/bind/etc/telecom_acl.conf; / 电 信 ACL include /usr/local/bind/etc/edu_acl.conf;/教育网ACL include /usr/local/bind/etc/view.conf;/bind-view 部分 IT 运维专家网官方相关参考请参照: /m
17、ysql example.html ,其它同类,详细请参照本文提供的 view.conf2、DLZ 相关数据库表结构建立(/详细见提供的 cdn_view.sql 含测试数据.)IT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! mysqlcreate database cdn_view;/创建数据库名为 cdn_view mysqluse cdn_view;DROP TABLE IF EXISTS dns_records; CREATE TABLE dns_records (id int(10) unsigned NOT NULL au
18、to_increment,zone varchar(255) NOT NULL,host varchar(255) NOT NULL default ,type enum(MX,CNAME,NS,SOA,A,PTR) NOT NULL,data varchar(255) default NULL,ttl int(11) NOT NULL default 800,view char(20) default DF,/DF 代表默认,SOA 查询需,其它可以分,CNCmx_priority int(11) default NULL,refresh int(11) NOT NULL default 3
19、600,retry int(11) NOT NULL default 3600,expire int(11) NOT NULL default 86400,minimum int(11) NOT NULL default 3600,serial bigint(20) NOT NULL default 2008082700,resp_person varchar(64) NOT NULL default .,primary_ns varchar(64) NOT NULL default .,data_count int(11) NOT N
20、ULLdefault 0, PRIMARY KEY(id),KEY type (type), KEY host (host), KEY zone(zone) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=gbk;select ttl, type, mx_priority, case when lower(type)=txt then concat(, data, ) when lower(type) = soa then concat_ws( , data, resp_person, serial, refresh, retry, expire,
21、 minimum) else data end as mydata from dns_records where zone = %zone% and host = %record% and (view = CNC or view = DF)select ttl, type, host, mx_priority, case when lower(type)=txt then concat(, data, ) else data end as mydata, resp_person, serial, refresh, retry, expire, minimum from dns_records
22、where zone = %zone% and view=CNCselect zone from xfr_table where zone = %zone% and client = %client% and view=CNC limit 1update data_count set count = count + 1 where zone =%zone% and view=CNC;IT 运维专家网3、查看表结构 #desc dns_records; 显示表结构.【注】直接将本文提供的 cdn_vew.sql 导入你的数据库即可,具体操作如下:4、
23、启动 bind 服务.# /usr/local/bind/sbin/named -uroot -g -d 9/调试状态,如果没有报错说明环境配置正确。做成启动服务. Debug 的时候多用此模式启动 bind.# /usr/local/bind/sbin/rndc reload 重载 named.conf 相关配置文件.# /usr/local/bind/sbin/named -uroot -c /usr/local/bind/etc/named.conf 启动 bind 服务.六、添加相关记录并进行测试 将相关解析记录添加到数据库内,以下是相关 SQL 范例供参考: 标准的 zone 文件格
24、式,参考实例:.hk/w/Setup domain with BINDIT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! $TTL604800OA. . ( 20070316001; Serial604800; Refresh86400; Retry2419200; Expire604800 ); Negative Cache TTL;INNS. INNS. INA1
25、INMX10 . ns1 INAns1 INAwwwINAMysqlcreate database cdn_view;/创建 cdn_view 数据库 #mysql dns_view uroot p dns_view.sql 导入数据库 IT 运维专家网以下以创建 域相关记录的实例,在 这台主 DNS 服务器上的配置插入如下记录:1、添加 SQL 创建相关 ZONE 及记录.(具体建我提供的测试 SQL) I
26、T 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! -SOAERT INTO dns_records (zone, host, type, data, ttl,mx_priority, refresh, retry, expire,minimum, serial, resp_person, primary_ns, data_count) VALUES(, , SOA, ., 10, NULL, 3600, 3600, 86400, 10, 2008082700,., n
27、., 0);- NSERT INTO dns_records (zone, host, type, data) VALUES (, , NS, .),(, , NS, .);-NS AERT INTO dns_records (zone, host, type, data) VALUES (, ns1, A, 37),(, ns2, A, 1);-AERT INTO dns_records (zon
28、e, host, type, data, ttl, view) VALUES (, www, A, 16, 3600, CNC),(, www, A, 78, 3600, TELECOM),(, www, A, 07, 3600, EDU),(, www, A, 30, 3600, ANY);ERT INTO dns_records (zone, host, type, data, ttl, view) VALUES (ai
29、, bbs, A, 16, 3600, CNC),(, bbs, A, 78, 3600, TELECOM),(, bbs, A, 07, 3600, EDU),(, bbs, A, 30, 3600, ANY);-CNAMEERT INTO dns_records (zone,host,type,DATA,view) VALUES (, man, CNAME, www,CNC),(, man
30、, CNAME, www,TELECOM),(, man, CNAME,www,EDU),(, man, CNAME,www,ANY);mailINAIT 运维专家网【注】 配置过程同上例,将 named.conf ;view.conf 等配置文件拷配到 ns2 上,仍后将数据表结构及相关记录直接导入 ns2 上的 cdn_view 数据库即可。至于数据之间的同步可以考虑 MySQL Replication 在些不作详给介绍.2. 基本查询测试:通过网通的机器查询,解析后
31、得到提网通的服务器,说明智能解析是正确的。 IT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! IT 运维专家网经测试解析相对都比较正确,主要是 IP 库的精确导到整个智能解析的精准度。 【注】本方案中的IP库抓取由(edison7500) 欣哥热情帮助分析抓取IP库,在此表示感谢!目前从测试来看IP库比较精准,能够真正做到智能DNS的智能解析。 3、性能测试工具 # cd /usr/local/src/bind-dlz# cd bind-9.6.0-P1/contrib/queryperf
32、# ./configure & make# vi rslist/解析记录列表写入此文件#vi do.sh /建立一个循环程序对了 bind 服务器查询进行压力测试,同时多关注数据库状态./usr/local/bind/sbin/named -uroot -g -d 9 bind 启为调试模式,在 bind 排错的时候请多用此模式来 debug.这里可以观察到查询过程中执行的 SQL。 【注】在此不做深入详细的性能和压力测试报告,用户可以自己通过以上范例编写压力测试方案。 五、后续话题及相关参考 1、利用 PHP 程序开发一套 Bind-DLZ 管理程序。 目前正在编写 PHP 管理页面,编写比较简单,类似界面如下:主要在于数据设计和优化还需要花一些时间。大家可以考虑进一步优化数据库结构,同时也希望能与我分享你的心得。 PHP 页面管理参考网站: 1)、/svn/dnsEditor/trunk/国外开源程序IT 运维专家网-“我为人人,人人为我!知识源于分享,源于交流!”-LinuxTone 技术交流分享社区! #!/bin/bash while true do./queryperf d rslist -s 37 -v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学管理学期末试卷含详细解析
- 2025年新疆昌吉州州遴选公务员职业能力倾向测试考前冲刺模拟题及答案
- 2025年中国心血管疾病预防指南
- 桩基施工坍塌隐患应急处理预案
- Fmoc-leucine-Standard-生命科学试剂-MCE
- 恙虫病实验室检查结果解读
- 2026oracle运维基础面试题及答案
- 2026linux应届生面试题目及答案
- 2026java面试题库及答案 达内
- 2026年济南高新区社会保障局等部门招考协管人员易考易错模拟试题(共500题)试卷后附参考答案
- 王力《古代汉语》第一册(文选第一部分)课件
- DL-T5418-2009火电厂烟气脱硫吸收塔施工及验收规程
- 2022室外排水设施设计与施工-钢筋混凝土化粪池22S702
- 高中物理必修1 第六节 超重和失重“十市联赛”一等奖
- 2024人才培养方案汇报
- 小旅馆安全管理制度
- 国家OTC药品目录(全部品种)
- 电焊工个人简历
- 6KV高压开关柜技术规格书
- 广东深圳红岭中学物理自主招生试卷
- (完整word)幼小衔接拼音试卷十套打印版981
评论
0/150
提交评论