热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

DNS智能解析+主从架构

来源: 作者: 时间:2008-10-27 Tag: 点击:
最近研究了下DNS的智能解析,并实现了多区域的传递,通过TSIG key来实现的。大概想法是想实现电信,网通,其他用户分别能解析到不同ip上去,具体步骤如下:
环境:centos5.2 i386
# yum install bind*
ok,软件全部装好,下面开始配置,由于安装了chroot,因此bind的想关文件目录在/var/named/chroot下的etc和var两个目录内。
1.master
在etc目录下建立named.conf文件,内容如下:

acl "trust-lan" { 127.0.0.1/8; 192.168.0.0/16;};
options {
    directory "/var/named";
    allow-query { any; };
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    version "";
    datasize 40M;
    #rrset-order { order random; };
    allow-transfer { "trust-lan" ; };
    recursion no;
    allow-notify { "trust-lan" ; };
    allow-recursion { "trust-lan" ; };
    auth-nxdomain no;
};

logging {
        channel warning {
        file "/var/named/chroot/var/log/dns_warnings.log" versions 5 size 1024K;
        severity warning;
        print-category yes;
        print-severity yes;
        print-time yes;
        };
       channel security_log {
       file "/var/named/chroot/var/log/dns_security.log" versions 5 size 1024K;
       severity info;
       print-category yes;
       print-severity yes;
       print-time yes;
       };
       channel query_log {
       file "/var/named/chroot/var/log/dns_query.log" versions 10 size 1024K;
       severity info;
       print-category yes;
       print-severity yes;
       print-time yes;
       };
       category default { warning; };
       category security { security_log; };
       category queries { query_log; };
};

##############define isp source address#################
include "/var/named/chroot/var/named/cnc_acl.conf";
include "/var/named/chroot/var/named/telecom_acl.conf";

##########KEYS FOR TSIG#########################
key telekey {
        algorithm hmac-md5;
        secret "************************";
        };     

key cnckey {
        algorithm hmac-md5;
        secret "************************";
        };

key anykey {
        algorithm hmac-md5;
        secret "************************";
        };

#################view cnc###################################
view "cnc" {
      match-clients { key "cnckey"; CNC; };
      allow-query { any; };
      recursion yes;
      allow-transfer { key cnckey; };
      server 192.168.199.201 { keys cnckey; };
      zone "test.local"{
      type master;
      file "/var/named/chroot/var/named/cnc/test.local.zone";
};

zone "." {
     type hint;
     file "/var/named/chroot/var/named/named.root";
    };

};
############view telecom########################

view "tele" {
      match-clients { key "telekey"; TELE; };
      allow-query { any; };
      recursion yes;
      allow-transfer { key telekey; };
      server 192.168.199.201 { keys telekey; };
      zone "test.local"{
      type master;
      file "/var/named/chroot/var/named/tele/test.local.zone";
};

zone "." {
     type hint;
     file "/var/named/chroot/var/named/named.root";
    };

};

##############view any##########################
view "any" {
      match-clients { key "anykey"; any; };
      allow-query { any; };
      recursion yes;
      allow-transfer { key anykey; };
      server 192.168.199.201 { keys anykey; };
      zone "test.local"{
      type master;
      file "/var/named/chroot/var/named/any/test.local.zone";
};

zone "." {
     type hint;
     file "/var/named/chroot/var/named/named.root";
    };

};
###########################################
include "/var/named/chroot/etc/rndc.key";

*部分3个key的生成方法是:
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST “name”
只要三个name不同生成三个不同的key就可以了,然后分别复制到上述三个key中的*部分。
var目录下的相关文件
log  named  run  tmp 需要有四个目录
#mkdir log
#cd log/
#touch dns_warnings.log dns_security.log dns_query.log
#chown -R named:named log/
#chmod -R 775 log/
建立相关日志文件,赋予named用户写入权限。
进入var/named/目录
any  chroot  cnc  cnc_acl.conf  data  named.root  slaves  tele  telecom_acl.conf
需要有这些相关文件和目录的存在,下面一一说明:
chroot是个连接文件,暂时不管,cnc_acl.conf和telecom_acl.conf两文件是关于来源ip地址的文件
格式如下:
acl "TELE"{
192.168.199.20;
192.168.199.21;
};
每个ip分号隔开。
named.root文件,是关于根的相关记录文件
wget ftp://rs.internic.net/domain/named.root得到
any cnc tele三个目录下的就是根据不同来源ip,解析到不同ip的,dns区域配置文件。
例子:
$TTL    86400
@               IN SOA  ns1.test.local. root (
                                        45              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
@             IN NS   ns1.test.local.
@             IN NS   ns2.test.local.
ns1           IN A    192.168.199.200
ns2           IN A    192.168.199.201
www           CNAME   cache.test.local.
cache        IN A     200.200.200.200
cache        IN A     100.100.100.100
vvv           IN A    7.7.7.7
ggg           IN A    88.88.88.88
区域配置文件的说明这里就不说了,相信大家都看的懂。
最后还有有关目录权限的设置

chmod 755 /var/named/

chmod 775 /var/named/chroot/

chmod 775 /var/named/chroot/var/

chmod 755 /var/named/chroot/var/named/

chmod 775 /var/named/chroot/var/run/

chmod 777 /var/named/chroot/var/run/named/

cd /var/named/chroot/var/named/

ln -s ../../ chroot

照做就行了,还有这里说明下注意事项,配置主从dns的时候必须要写两个NS记录,还有在

/etc/resolv.conf下按这样的格式写

search test.local
nameserver 192.168.199.200
nameserver 192.168.199.201
至此,master的配置完毕。
启动dns吧!

2.slave的配置基本一样,就是无需在any cnc tele三个目录下建立相关区域配置文件,因为slave是从master那边获取区域配置文件的,否则会出现问题,别的一切照做。附上slave的named.conf


acl "trust-lan" { 127.0.0.1/8; 192.168.0.0/16;};
options {
    directory "/var/named";
    allow-query { any; };
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    version "";
    datasize 40M;
    #rrset-order { order random; };
    allow-transfer { "trust-lan" ; };
    recursion no;
    allow-notify { "trust-lan" ; };
    allow-recursion { "trust-lan" ; };
    auth-nxdomain no;
};

logging {
        channel warning {
        file "/var/named/chroot/var/log/dns_warnings.log" versions 5 size 1024K;
        severity warning;
        print-category yes;
        print-severity yes;
        print-time yes;
        };
       channel security_log {
       file "/var/named/chroot/var/log/dns_security.log" versions 5 size 1024K;
       severity info;
       print-category yes;
       print-severity yes;
       print-time yes;
       };
       channel query_log {
       file "/var/named/chroot/var/log/dns_query.log" versions 10 size 1024K;
       severity info;
       print-category yes;
       print-severity yes;
       print-time yes;
       };
       category default { warning; };
       category security { security_log; };
       category queries { query_log; };
};

##############define isp source address#################
include "/var/named/chroot/var/named/cnc_acl.conf";
include "/var/named/chroot/var/named/telecom_acl.conf";

##########KEYS FOR TSIG#########################
key telekey{
algorithm  hmac-md5;
secret "************************";
};     

key cnckey {
algorithm  hmac-md5;
secret "************************";
};

key anykey {
algorithm  hmac-md5;
secret "************************";
};

#################view cnc###################################
view "cnc" {
      match-clients { key "cnckey"; CNC; };
      allow-query { any; };
      recursion yes;
      allow-transfer { none; };
      server 192.168.199.200 { keys cnckey; };
      zone "test.local"{
      type slave;
      masters { 192.168.199.200; };
      file "/var/named/chroot/var/named/cnc/test.local.zone";
};

zone "." {
     type hint;
     file "/var/named/chroot/var/named/named.root";
    };

};
############view telecom########################

view "tele" {
      match-clients { key "telekey"; TELE; };
      allow-query { any; };
      recursion yes;
      allow-transfer { none; };
      server 192.168.199.200 { keys telekey; };
      zone "test.local"{
      type slave;
      masters { 192.168.199.200; };
      file "/var/named/chroot/var/named/tele/test.local.zone";
};

zone "." {
     type hint;
     file "/var/named/chroot/var/named/named.root";
    };

};

##############view any##########################
view "any" {
      match-clients { key "anykey"; any; };
      allow-query { any; };
      recursion yes;
      allow-transfer { none; };
      server 192.168.199.200 { keys anykey; };
      zone "test.local"{
      type slave;
      masters { 192.168.199.200; };
      file "/var/named/chroot/var/named/any/test.local.zone";
};

zone "." {
     type hint;
     file "/var/named/chroot/var/named/named.root";
    };

};
###########################################
include "/var/named/chroot/etc/rndc.key";
注意的就是每个key必须要和master的相应key符合,否则无法传递更改的信息,也就实现不了主从更新了。至此slave也设置完毕,启动dns吧!
当主dns的区域配置文件发生变化时,执行
#rndc reload就ok,slave就会更新相关设置了,如更新不成,检查网络是否有问题,还有两台机器的系统时间是否一样,超过5分钟的话就会更新失败。
写完了,可能有些地方表达欠佳,大家体谅,应该有很多人已经实现了这个功能,但是网上找了下基本没有很详细的资料,写个方便大家查阅交流,也便于自己的记录!
累了,休息下!晚上再更新个同时安装多个tomcat!



相关文章:
eG Citrix 监控器
Ethernet的帧格式和结构
华为(Quidway AR18-22-24)路由器配置实例
简单利用路由黑洞解决DDOS流量攻击
我的linux试验题目
如何在HMC上激活网络时间协议NTP
Resin泛解析 - 三级域名最优应用方案
Resin多域名绑定 + 泛解析
resin 负载均衡
linksys wap54g 设置注意事项
acegi RememberMe&退出&匿名登陆
vnd命令~
LINUX网卡绑定
TCP包首部
IP包首部格式
指纹锁也不靠谱 电脑“破解”六大事件!
linux配置网关
使用 SCTP 优化网络
IPv4/IPv6过渡技术和方案分析
用三个源码包libnet、libnids、libpcap轻松搭建Li
Extensible Messaging and Presence Protocol (XM
组建CISCO多层交换网络入门
CISCO多层交换机的初始配置和排错
实施和配置VLAN
理解和配置802.1Q/802.1S和802.1W生成树协议
理解和配置cisco特定的生成树协议特性和STP排错
配置第二层和第三层的特性
理解和配置VLAN间的路由选择
理解和配置多层交换
理解和配置cisco多层交换网络中的服务质量