2016-01-20 8 views
0

Я делаю приложение, которое использует синтаксический анализатор для анализа всех основных зон из DNS, используемый множитель из библиотеки dnsjava (org.xbill.DNS.Master). Все зоны, которые я обрабатываю, уже добавлены в BIND 9 через rndc. Проблема я столкнулся в том, что некоторые из файлов зона не разбор, анализатор выдает ошибкуПроблема с файлом зоны, сбой парсера dnsjava - 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, что означает, что нет ничего, видимо, не так с форматом файла.

Нужно ли использовать другой парсер, или есть ли способ для этого?

+0

Я сразу же подумал, что если Bind говорит, что это действительный файл, а синтаксический анализатор говорит, что это не значит, что синтаксический анализатор нарушен! –

+0

Парсер дает несколько неправильное сообщение об ошибке, вы можете видеть, как я решил его в комментарии к принятому ответу. – Anss

ответ

1

От того, что вы говорите, похоже, что синтаксический анализатор неисправен или по крайней мере дает вам вводящее в заблуждение сообщение об ошибке. @ обозначает текущее происхождение в файле зоны. Согласно RFC, текущее происхождение может быть установлено директивой $ORIGIN, директивой $INCLUDE или аргументом для обычной загрузки файла зоны. В вашем случае BIND будет использовать имя файла в качестве аргумента «аргумент для обычной загрузки». Похоже, что ваш парсер Java этого не делает. Это может быть, потому что вы не смогли его правильно назвать или потому, что он не работает и не обрабатывает внешний случай. Вы должны будете посмотреть это в своем коде и/или библиотечной документации.

+0

Да, я так и решил, добавив '$ ORIGIN pensoul.my' в начале файла, решил мою проблему. – Anss

 Смежные вопросы

  • Нет связанных вопросов^_^