2

我正在尝试创建一个 DNS 服务(各种 DNS 操作的自动化)来服务于我们现有的私有云。我正在寻找选项和想法来做到这一点。是否有任何现有的 Java API 可以做到这一点?请建议。

我对可能的解决方案进行了研究。我发现DNSJava是一个很好的解决方案。但我没有找到太多的文档/示例。以下是一些问题,回答后可以解决我当前的问题:

  1. 如何将 NS 或 A 记录添加到区域文件?
  2. 如何打印出区域文件的内容?

我创建了一个本地 DNS 服务器用于测试目的。如果这些示例是针对 localhost 给出的,那将非常有帮助。

谢谢!

4

1 回答 1

3

经过大量研究,我找到了一种使用DNSJava修改区域文件的方法。Bind9 应该在服务器中设置。应使用基本信息创建所需的区域文件。一旦我们有了这个设置,在区域文件中添加和删除记录就很简单了。请参考页面为 Bind9 生成 TSIG 密钥。下面给出实际可以添加记录的代码。

Name zoneName = null; 
String domain = "your.domain";
String host = "hostname";
DNSRecordType type = DNSRecordType.A;
int ttl = 600;

Lookup lookup = new Lookup(Name.fromString("your.domain"));
Record [] records = lookup.run();
if(records != null) {
   zoneName = records[0].getName();
}
if(zoneName != null) {
    Name hostName = Name.fromString("hostname", zoneName);
    Update update = new Update(zoneName);
    update.add(hostName, Type.value(type.toString()), 600,
                  "192.168.2.50");
    Resolver resolver = new SimpleResolver();
    resolver.setTCP(true);
    resolver.setTSIGKey(new TSIG("your.domain.",
                 "z0pll56C4cwLXYd2HG6WsQ=="));

    Message response1 = resolver.send(update);
    response = response1.getHeader().toString();
}
于 2013-09-14T00:56:20.397 回答