我正在创建一个应用程序,它使用解析器解析来自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的状态,这意味着文件格式没有明显的问题。
我是否需要使用另一个解析器,还是有办法解决这个问题?
发布于 2016-01-20 08:07:27
从您的话来看,听起来解析器要么是错误的,要么至少给了您一个误导性的错误消息。@表示区域文件中的当前原点。根据RFC,可以通过$ORIGIN指令、$INCLUDE指令或加载区域文件的例程的参数来设置当前原点。在您的示例中,BIND将使用文件名作为“例程加载的参数”。您的Java解析器似乎没有。这可能是因为您没有正确地调用它,或者因为它是错误的,并且不处理外部情况。您必须在代码和/或库文档中查找这些内容。
https://stackoverflow.com/questions/34892728
复制相似问题