为了账号安全,请及时绑定邮箱和手机立即绑定

Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法

标签:
MySQL


使用文本配置文件的配置方式结合bind的最新的acl和view特性来实现智能DNS想必很多人已经很熟悉了,使用MySQL数据库来存放zone文件的方式可能也不少。对于两者都熟悉的,实现 Bind+DLZ+MySQL正向解析的也已经很多了,但实现反向解析的恐怕是没有几个人去做。原因:一是不怎么需要反向解析,而是即使需要也不知道如何配置。

其实反向解析还是需要的,比如说邮件系统或者防火墙系统会判断电子邮件的域名和IP地址是否在DNS注册的值相匹配以确定是否是垃圾邮件。

实现DNS的反向解析其实和正向解析的原理是一样的,只要对DNS、DLZ、ACL和VIEW以及原理深刻理解一下就可以类比互通,以和正向解析同样的方式来实现反向解析。

对比一下下面的示例一看便知。

1.实现DNS的正向解析

插入SOA记录

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`, `ttl`,`mx_priority`,

`refresh`, `retry`, `expire`, `minimum`, `serial`, `resp_person`, `primary_ns`,`second_ns`,

`data_count`) VALUES

('vtest.org', '@', 'SOA', 'ns1.vtest.org.', 10, NULL, 600, 3600, 86400,

10, 2011061200, 'vtest.org.', 'ns1.vtest.org.','ns2.vtest.org.',0);

插入@和NS记录

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES

('vtest.org', '@', 'NS', 'ns1.vtest.org.'),

('vtest.org', '@', 'NS', 'ns2.vtest.org.');

插入NS和A记录

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES

('vtest.org', 'ns1', 'A', '172.16.201.204'),

('vtest.org', 'ns2', 'A', '172.16.201.206');

注意:在插入的过程中需要指定属于哪一个ISP提供商,见附表。

ISP

简称

中国电信

dx

中国联通

lt

中国移动

yd

中国铁通

td

中国教育网

edu

其他ISP类型

any

如果只使用内网进行测试(特别是使用DNS服务器自身)而不使用其他网络中的主机进行测试时,则必须指定一个any的view类型,否则服务器可能返回一个错误信息。

Linux的dig命令返回“;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 49529”;nslookup命令返回“** server can't find www.vtest.org: NXDOMAIN”或“** server can't find www.vtest.org: SERVFAIL”。

Windows的nslookup命令返回“*** [172.16.201.204] can't find www.vtest.org: Server failed”。

如果日志中没有提示错误,配置文件也没有权限或者限制等问题,则一定是出在view这种逻辑问题上。

插入CNAME记录

注意事项与插入A记录相同(view问题)。

INSERT INTO dns_records (zone,host,type,DATA,view) VALUES

('vtest.org', 'bbs', 'CNAME', 'www','dx');

2.实现DNS的反向解析

实现DNS的反向解析其实和正向解析的原理是一样的,只要对DNS、DLZ、ACL和VIEW的原理深刻理解一下就可以类比互通,以和正向解析的同样的方式来实现反向解析。

插入SOA记录

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`, `ttl`,`mx_priority`,

`refresh`, `retry`, `expire`, `minimum`, `serial`, `resp_person`, `primary_ns`,`second_ns`,

`data_count`) VALUES

('201.16.172.in-addr.arpa', '@', 'SOA', 'ns1.vtest.org.', 10, NULL, 600, 3600, 86400,

10, 2011061200, 'vtest.org.', 'ns1.vtest.org.','ns2.vtest.org.',0);

插入@和NS记录

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES

('vtest.org', '@', 'NS', 'ns1.vtest.org.'),

('vtest.org', '@', 'NS', 'ns2.vtest.org.');

插入NS和A记录

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES

('201.16.172.in-addr.arpa', '204', 'PTR', 'www1.vtest.org.'),

('201.16.172.in-addr.arpa', '205', 'PTR', 'www2.vtest.org.');

 

 总之设置方面一句话,只要明白zone记录的写法一切就OK了!思路方面:多类比,多尝试,遇到问题不要急于找资料,先理顺思路、分析透彻,一切慢慢来。

 

©著作权归作者所有:来自51CTO博客作者urey_pp的原创作品,谢绝转载,否则将追究法律责任

智能DNS反向解析bind dlz mysqlLinux


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消