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地址
  
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM