0

我正在制作一个使用解析器从 DNS 解析所有主区域的应用程序,我使用的解析器来自 dnsjava 库(org.xbill.DNS.Master)。我正在解析的所有区域都已通过 rndc 添加到 BIND 9 中。我面临的问题是一些区域文件没有解析,解析器给出了错误

@ is not an absolute name

下面给出一个例子,这个区域的名称是 pensoul.my,它的文件看起来像,

@ 1800 SOA ns5.mydns.my. dnsadmin.mydns.my.  2015070201 3h 1h 1w 30m
@ 84600 NS ns5.mydns.my.
@ 84600 NS ns6.mydns.my.
@ 3600 A 202.190.174.39
www 3600 A 202.190.174.39

在解析这个以及所有这种格式的区域时,我得到了绝对名称错误。

为了检查这个区域文件的格式,我使用了命令,

named-checkzone pensoul.my *filepath*

它给出的状态为 OK,这意味着文件格式没有明显错误。

我需要使用另一个解析器,还是有办法解决这个问题?

4

1 回答 1

1

从你所说的,听起来解析器要么有问题,要么至少给你一个误导性的错误信息。@表示区域文件中的当前原点。根据 RFC,当前来源可以通过$ORIGIN指令、$INCLUDE指令或加载区域文件的例程的参数来设置。在您的情况下,BIND 将使用文件名作为“例程加载的参数”情况。您的 Java 解析器似乎没有。这可能是因为您未能正确调用它,或者因为它有问题并且无法处理外部案例。您必须在您的代码和/或库文档中查找它。

于 2016-01-20T08:07:27.593 回答