首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dnsjava更新DDNS服务器上的PTR记录?

如何使用dnsjava更新DDNS服务器上的PTR记录?
EN

Stack Overflow用户
提问于 2014-04-10 08:33:59
回答 1查看 704关注 0票数 0

我可以毫无问题地更新A、AAAA和TXT记录。不幸的是,我还没有找到任何关于如何更新PTR记录的示例。

下面是我用来发送更新的代码:

代码语言:javascript
复制
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放在左边,把主机名放在右边。

例如:

代码语言:javascript
复制
sendPTR(Name.fromString("foo.domain.net."), Name.fromString("0.168.192.in-addr.arpa."), "1");

导致如下所示的更新:

代码语言:javascript
复制
foo.domain.net    86400 IN  PTR   1.0.168.192.in-addr.arpa.

这样,我得到了一个RCode 10,意思是“名称不包含在区域中”。

我尝试翻转ip和主机,但结果是"'1‘不是一个绝对名称。“

这是我使用dnsjava的第一个项目,所以我完全期望我会错过一个类,一个函数,它将为我完成所有这些工作。如果有人能给我指点那个班级,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-04-10 22:54:06

我就知道!我所需要做的就是把问题贴出来,这样答案就会出现在我面前。

我只需要显式地实例化一个记录并使用Update.replace( PTRRecord )。

代码语言:javascript
复制
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."));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22976497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档