我可以毫无问题地更新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的第一个项目,所以我完全期望我会错过一个类,一个函数,它将为我完成所有这些工作。如果有人能给我指点那个班级,我将不胜感激。
发布于 2014-04-10 22:54:06
我就知道!我所需要做的就是把问题贴出来,这样答案就会出现在我面前。
我只需要显式地实例化一个记录并使用Update.replace( PTRRecord )。
public void sendPTR(PTRRecord rec, Name zone) throws IOException {
Update update = new Update(zone);
update.replace(rec);
sendUpdate(update);
}
...
PTRRecord rec = new PTRRecord(Name.fromString("1.0.168.192.in-addr.arpa."),DClass.IN, 86400, host);
sendPTR(rec, Name.fromString("0.168.192.in-addr.arpa."));https://stackoverflow.com/questions/22976497
复制相似问题