我能够毫无问题地更新 A、AAAA 和 TXT 记录。不幸的是,我还没有找到任何关于如何更新 PTR 记录的示例。
这是我用来发送更新的代码:
public void sendA(Name host, Name zone, String ip) throws IOException {
Update update = new Update(zone);
update.replace(host, Type.A, DNS_TTL, ip);
sendUpdate(update);
}
public void sendPTR(Name host, Name zone, String ip) throws IOException {
Update update = new Update(zone);
update.replace(host, Type.PTR, DNS_TTL, ip);
sendUpdate(update);
}
public void sendUpdate(Update update) throws UnknownHostException, IOException {
Resolver res = new SimpleResolver(DNS_IP);
res.setTCP(true);
Message response = res.send(update);
}
在该块中, sendA 工作得非常好。sendPTR 尝试做完全相同的事情,但由于它是 PTR,它应该将 IP 放在左侧,将主机名放在右侧。
例如:
sendPTR(Name.fromString("foo.domain.net."), Name.fromString("0.168.192.in-addr.arpa."), "1");
生成如下所示的更新:
foo.domain.net 86400 IN PTR 1.0.168.192.in-addr.arpa.
有了这个,我得到一个 RCode 10,这意味着“名称不包含在区域中”。
我尝试翻转 ip 和主机,但这导致“'1' 不是绝对名称”。
这是我的第一个 dnsjava 项目,所以我完全希望我只是缺少一个类,一个函数,它将为我完成所有这些。如果有人可以向我指出该课程,将不胜感激。