创建DNS A记录

时间:2018-10-18 09:36:23

标签: php dns

我正在考虑创建一个供自己使用的小型DynDNS服务,但遇到了麻烦: 是否可以通过PHP以编程方式创建A记录? 我将如何解决这个问题? 其他DynDNS提供商如何解决此问题?

1 个答案:

答案 0 :(得分:0)

好吧,当然可以。我前一段时间这样做是为了实现“类似”目标(它是为自定义TLD创建一个NIC)。

我的方法是使用所有设置(A,NS,TXT,CNAME ...)在数据库中注册名称。然后,在修改后,我重新编写了一个BIND区域文件,然后从主BIND域配置中指向该文件。重写后,您只需使用rndc重新加载您的区域:

rndc reload example.com.

注意:您也可以通过不指定要在此命令中重新加载的区域来重新加载所有区域。您还可能需要root用户访问权限,检查其安全性,可能使该命令由不暴露于外部的另一个程序执行,并将root用户访问权限严格限制为仅rndc命令。

当然,这意味着您的区域是由您自己的DNS服务器处理的,而不是由注册服务商提供给您的服务器。但是,某些注册商(例如OVH)提供了API,可以直接编辑区域以在您的DNS服务器上进行记录。这也可能是一种解决方案,但是它将限制您使用他们的服务。

唯一要做的就是编写一种算法,以便从存储的记录中生成有效的区域文件(我想这一次是某种数组/对象形式)。对于SOA记录,我建议您将其放入某种模板文件中,然后完成区域数据。 The wikipedia page on the zone file可以帮助您。

编辑说明:如果要采用“以编程方式编写区域并重新加载服务器”的方式,我强烈建议您将该部分作为与外界隔离的CLI脚本运行,这将定期从数据库中重新加载区域,或者根据请求执行该操作,并检查您在区域中写入的内容。您不应该在外部环境附近放置任何可以输入系统命令的东西。