我想以编程方式自动更新DNS多个域名。我在GoDaddy上运行BIND服务器(在FreeBSD上)以及主机域和DNS。我找不到GoDaddy的Web服务API来访问和更新他们托管的DNS,所以我可能不得不使用我的BIND服务器来提供动态解决方案。
基本上我只是想查询哪些子域已经存在并添加新域。
BIND是最好的解决方案吗?有没有其他方法可以自动添加新域,而无需登录GoDaddy或手动更新我的BIND配置?
答案 0 :(得分:3)
一种方法是编写一个程序来读取和/或更新BIND配置文件(它只是一个具有特定格式的文本文件),如果进行了任何更改,则重新加载BIND守护程序。所以,就好像你手动更新了BIND配置,除非你已经编写了一个程序来为你完成。
答案 1 :(得分:3)
添加新子域所需的功能是动态更新,如RFC 2136中所述,并得到BIND的大力支持。
使用DNS“UPDATE”消息添加和删除区域文件中的记录相当容易(例如使用Perl的Net :: DNS模块)。
要实际检索那里有什么,你有两种方法:
将其他数据库视为权威数据库,并将该数据库中的更改转换为ddns更新,或者。
允许您下载整个区域内容的DNS“AXFR”消息(尽管只能下载到您的区域管理系统,而不是全世界!)
答案 2 :(得分:2)
仅供参考:这是一个系统/网络管理问题,而不是编程问题。你可能会在其他地方更快地得到更好的答案。
那说......这很简单:你只需要一个支持数据库后端的DNS服务器。然后,您只需将条目写入数据库,或查询数据库中的内容,DNS记录将自动提供。理想情况下,使用支持触发器的数据库,以便您可以在更改时自动更新DNS记录的序列号。否则,您需要在代码的每次更改中读取/写入序列,在事务中执行整个更新。
编辑:刚看到上面的其他评论。不要允许AXFR。这些日子被认为是一种安全风险。
确实将域TTL设置为低,以便更新快速传播到其他服务器。