我正在制作一个应用程序,它使用解析器从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 将使用文件名作为"例程加载的参数"情况。您的 Java 解析器似乎没有。这可能是因为您未能正确调用它,或者因为它有问题并且无法处理外部情况。您必须在代码和/或库文档中查找它。