区域文件格式问题,dnsjava 解析器崩溃 - BIND 9

Zone file format issue, dnsjava parser crashing - BIND 9

我正在制作一个使用解析器解析 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 状态,这意味着文件格式没有明显错误。

我是否需要使用其他解析器,或者有解决办法吗?

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