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 に答える