随手

一晃竟然到了星期一了,这个周末过得如此之快,wsj要我帮他朋友弄个网站,实在没有什么办法,我现在忙死。

这两天把Heinet的主辅DNS弄完了,也顺路多了解了下bind9,的确很强大,对DNS的理解又过了几分,虽然说最原始的功能就是域名到地址的解析,可想想全球互联网如此庞大的东西却是基于这小小的DNS,的确奥妙是很多的。

心得一:关于bind9的view功能

曾遇到许多下面的网络中心有这样的问题,把DNS放在内网,web等服务都是做的地址映射出去的,所以不能很好的进行内部用户和外网的域名解析问题,现在利用view的视图功能,能够根据客户端地址来调用不同的zone文件返回解析结果,看下面一段实例:

// 定义internal视图,针对内网用户
view "internal" {
?????? //?定义客户端IP范围
?????? match-clients { 10.0.0.0/8; };?
?????? zone "." {
??????????????? type hint;
??????????????? file "/etc/namedb/named.root";
?????? };
?????? zone "0.0.127.IN-ADDR.ARPA" {
??????????????? type master;
??????????????? file "/etc/namedb/localhost.rev";
?????? };
?????? //?mydomain.com域的zone文件
?????? zone "mydomain.com" {
?????????????? type master;
?????????????? file "/etc/namedb/zone.mydomain.com.internal";
?????? };
};

// 定义external视图,针对外网用户
view "external" {
?????? match-clients { any; };?
?????? //?给出另外的mydomain.com域的zone文件
?????? zone "mydomain.com" {
?????????????? type master;
?????????????? file "/etc/namedb/zone.mydomain.com.external";
?????? };
};

呵呵,简单。。

心得二:关于DNS的log日志问题

以前总是对DNS没有把握主要是缺乏判断和分析的依据,其实还是没有完整清晰的日志的概念,其实所有的系统管理最核心的我认为还是对日志的控制和分析上,这次也花了很大的精力在搞清楚bind9的日志上,主要实在named.conf文件中设置logging项目来完成,下面有我的例子:

logging {
??????? // 定义一个日志项目
????????channel default_syslog {
??????????????? file "/usr/local/bind9/log/bind9_system.log";??// 放在哪儿
??????????????? severity info;? // 日志内容的级别是info
??????????????? print-time yes;? // 是否记录时间
??????????????? print-category yes;? //是否记录日志类别
??????? };
??????? channel audit_log {
??????????????? file "/usr/local/bind9/log/bind9_run.log";
??????????????? severity info;
??????????????? print-time yes;
??????????????? print-category yes;
??????? };
??????? channel query_log {
??????????????? file "/usr/local/bind9/log/bind9_query.log" versions 10 size 100M;? // 这里多加了一些,就是表示日志最大为100M,超过100M就生成一个新的,最多10个文件然后循环
??????????????? severity info;
??????????????? print-time yes;
??????????????? print-category yes;
??????? };
??????? // 这下面就是定义各种日志类别了,分别保存到那个日志项目中
??????? category default { default_syslog; };
??????? category general { default_syslog; };
??????? category security { audit_log; };
??????? category config { default_syslog; };
??????? category resolver { audit_log; };
??????? category xfer-in { audit_log; };
??????? category xfer-out { audit_log; };
??????? category notify { audit_log; };
??????? category client { audit_log; };
??????? category network { audit_log; };
??????? category update { audit_log; };
??????? category queries { query_log; };
??????? category lame-servers { audit_log; };
};

更详细的帮助我放到了文档库里去了,呵呵。

心得三:webmin来管理BIND9

以前bind我不熟,每次修改资料之后总是把进程kill,然后重新named,现在想起来真是傻到家了,呵呵,bind9通过rndc来控制named进程,现在仅仅只需要通过rndc reload就可以不通过重启进程来更新named.conf文件了,如果只想更新某一个zone,那么只需要rndc reload zone即可了,这为web管理bind数据提供了条件。不过rndc功能还十分强大,我也没有完全弄明白,好像还含有一些远程管理的功能,因为rndc需要生成一个key。

安装了新版的webmin支持bind9,现在就可以通过web界面来管理bind的各项资料了,呵呵,我特别喜欢注释的功能,更为直观了。

最后,我正在做一个小程序,将日志每10分钟进行一个分析,然后把A/PTR/MX/SOA/SVR记录的数目放入RRDtool中做成实时的流量监控,每10分钟做一下client query的排名,呵呵,基本上技术都实在了差不多了,这两天抽时间弄出来。

发表评论