zoukankan      html  css  js  c++  java
  • bind9在view情况下通过TSIG key实现nsupdate功能

    1、使用dnssec-keygen -a HMAC-MD5 -b 128 -n USER testkey命令来生成密钥。
        dnssec-keygen:用来生成更新密钥。
        -a HMAC-MD5:采用HMAC-MD5加密算法。
        -b 128:生成的密钥长度为128位。
        -n USER testkey:密钥的用户名为testkey。
    2、密钥生成后,会在当前目录下自动生成两个密钥文件***.+157+xxx.key和***.+157+xxx.private。
    3、查看两个密钥文件的内容:
        cat ***.+157+xxx.key
        cat ***.+157+xxx.private
    4、通过同样的方法生成test2key。
    5、添加密钥信息到DNS主配置文件中 
    vi /etc/named.conf
    key testkey {
    algorithm hmac-md5;               //algorithm:指明生成密钥的算法。
    secret J+mC6Q29xiOtNEBySR4O1g==;  //secret:指明密钥串。
    };
    key test2key {
    algorithm hmac-md5; 
    secret PpRyh6fU1ejnutT+jafXag==; 
    };
     
     6、将test.com区域中的allow-update { none; }中的“none”改成“key testkey”;
          将“none”改成“key testkey”的意思是指明采用“key testkey”作为密钥的用户可以动态更新“test.com”区域。
    示例如下:
    key "testkey" {
        algorithm hmac-md5;
        secret "3UHeiKTGzDv+hBpS0A9trg==";
    };   
    key "test2key" {
        algorithm hmac-md5;
        secret "PpRyh6fU1ejnutT+jafXag==";
    };  
     
    view "external-test" in {
     match-clients { key testkey; acl1; };  //key testkey; 以及acl1;
     zone "test.com" { 
        type master; 
        file "test.zone"
        allow-update { key testkey; };
        //allow-transfer { key testkey; };
    };
    };
    view "external-test2" in {
     match-clients { key test2key; acl2; };
     zone "test.com" { 
        type master; 
        file "test2.zone"
        allow-update { key test2key; };
        //allow-transfer { key testkey; };
    };
    };
     7、总结

      以上示例可以实现通过正确的key和acl对两个view进行nsupdate。但bind的acl匹配原则是:"由上而下,匹配即退出",并且match-clients{}中的参数是"or"的关系。当执行nsupdate命令时,执行端(一般都是主dns或管理机)所用的ip地址不应该包含在acl1或者acl2中(最后一个view的match-clients{aclx}可包含也可不包含),否则按照以上原则,执行端主机只能访问包含其ip的view了,其它view的访问都将被拒绝。

      按照以上配置运行bind,在bind主机上执行nsupdate,
      命令是:nsupdate -y test2key:PpRyh6fU1ejnutT+jafXag==
                 >zone test.com
                 >update add www123.test.com 86400 A 192.168.99.100
                 >send
      返回错误结果:update failed: REFUSED
      错误分析:执行nsupdate的主机地址包含在acl1中, 进入了view "external-test"执行更新,显然key不匹配,被拒绝。
      解决办法:在view "external-test"的match-clients{}中将执行nsupdate主机的地址(bind主机地址)排除掉,
                      命令:match-clients{ key testkey; !127.0.0.1; !x.x.x.x; acl1;} //x.x.x.x填写bind主机真实ip地址
      
     
  • 相关阅读:
    poj 2528 Mayor's posters (线段树+离散化)
    poj 1201 Intervals (差分约束)
    hdu 4109 Instrction Arrangement (差分约束)
    poj 1195 Mobile phones (二维 树状数组)
    poj 2983 Is the Information Reliable? (差分约束)
    树状数组 讲解
    poj 2828 Buy Tickets (线段树)
    hdu 1166 敌兵布阵 (树状数组)
    Ubuntu网络配置
    Button控制窗体变量(开关控制灯的状态)
  • 原文地址:https://www.cnblogs.com/qlight/p/2660238.html
Copyright © 2011-2022 走看看