我正在考虑创建一个供我自己使用的小型DynDNS服务,但遇到了障碍:有没有可能在PHP之外以编程方式创建一个A记录?我该如何着手解决这个问题呢?其他DynDNS提供商如何解决此问题?
发布于 2018-10-18 17:43:58
当然,你可以做到这一点。不久前我就这么做了,有一个“类似”的目标(那就是为自定义TLD创建一个NIC )。
我的方法是在数据库中注册这些名称及其所有设置(A、NS、TXT、CNAME...)。然后,在修改时,我重写了一个绑定区域文件,然后从主绑定域配置中指向该文件。在重写之后,你只需要使用rndc重新加载你的专区:
rndc reload example.com.
注意:您还可以通过在此命令中不指定要重新加载的区域来重新加载所有区域。您还可能需要根用户访问权限,检查其安全性,也许让另一个不对外公开的程序执行该命令,并严格限制根用户访问权限仅限于rndc命令。
当然,这意味着您的区域是由您自己的DNS服务器处理的,而不是由您的注册商提供给您的服务器。然而,一些注册商(如OVH)提供了一个API来直接在他们的DNS服务器上编辑您的记录的区域。这也可能是一种解决方案,但它会限制你使用他们的服务。
为此,您需要做的唯一一件事就是编写一个算法,从您存储的记录(我认为它们在某个时刻以某种数组/对象的形式)生成一个有效的区域文件。对于SOA记录,我建议您将其放入某种模板文件中,然后完成区域数据。在这一点上,The wikipedia page on the zone file可以帮助你。
编辑注意:如果你打算采用“以编程方式编写专区并重新加载服务器”的方式,我强烈建议你将该部分作为独立于外部的CLI脚本运行,该脚本将定期从数据库重新加载专区,或者根据请求重新加载专区,并对您在专区中编写的内容执行检查。I强烈建议您以独立于外部的方式运行该部分。你不应该把输入系统命令的东西放在任何接近外部世界的地方。
https://stackoverflow.com/questions/52871162
复制相似问题