如何远程更新?

如何远程更新?

我将 BIND 作为 DNS 服务器,我想要的是让该服务器允许我向区域添加或删除记录,而无需手动编辑区域文件,并且我想远程执行此操作。

此更新是否需要密钥或类似的东西,或者我可以使用 ssh 连接来完成此操作,如下所示:

ssh user@remote "nsupdate ..... " ;

答案1

我之前对此进行了实验,您可以在绑定中建立一个动态区域来执行此操作。但是,如果我记得您将失去直接编辑区域的能力,并且必须使用动态更新命令来更新该区域。

我还相信您也可以建立一个密钥来防止未经授权的访问该设施。

我现在常见的解决方案是使用 Windows AD/DNS 机制甚至第三方网络解决方案来处理动态区域。

答案2

我已经解决了:实际上它需要一个密钥:创建密钥:

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST example.com.

编辑conf.文件:

// TSIG Key
key "example.com." {
    algorithm hmac-md5;
    secret "THE KEY GENERATED ABOVE";
};
zone "example.com" IN {
   type master;
   file "example.com.zone";
   allow-update{ key "example.com."; };
};

向 /var/named 文件夹授予命名授权:

 # chown -R named:named /var/named
 # find . -type d -exec chmod 770 {} \;
 # find . -type f -exec chmod 660 {} \;

答案3

您可以在没有密钥的情况下通过允许特定主机执行更新(例如 127.0.0.1)或 DNS 服务器的专用网络(例如)来执行此操作

zone "example.com" {
  type master;
  file "/var/lib/bind/db.example.com";
  allow-update {
    127.0.0.1;
    192.168.33/24;
    192.168.42/24;
  };
};

正如您所提到的,您还可以添加allow-update { key "example.com." }使用密钥文件。不过,我建议使用比 128 位 HMAC-MD5 更安全的密钥。例如,尝试:

# RSA-SHA256
dnssec-keygen -a RSASHA256 -b 2046 -n ZONE example.com.

# Elliptic Curve
dnssec-keygen -a ED25519 -n ZONE example.com.

旁注:我相信动态区域应该位于/var/lib/bind,而不是/etc/bind

该手册指出您不应“手动”更新动态区域配置:

通过 nsupdate 或 DHCP 服务器进行动态控制的区域不应手动编辑。手动编辑可能与动态更新冲突并导致数据丢失。

您可以使用 rndc 将动态更新保存到磁盘,例如:

rndc freeze example.com.
rndc sync example.com.
rndc thaw example.com.

相关内容