Немного предыстории - я создаю инструмент, который, помимо ряда вещей, также позволяет пользователю управлять Azure DNS. В моем приложении есть функция, с помощью которой пользователь может экспортировать настройки DNS для создания файла зоны. Используя различные ресурсы в Интернете (например, https://en.wikipedia.org/wiki/Zone_file#File_format и https://tools.ietf.org/html/rfc1035), Я могу создать файл зоны.
Я борюсь с тем, как я могу проверить, является ли файл зоны, который я создал, правильным или нет, на основе RFC 1035. Есть ли программный способ проверки файла зоны? Или это может быть какой-то сценарий PowerShell или системный / сторонний инструмент, который я могу использовать для проверки файла.
В качестве примечания, я использовал веб-интерфейс GoDaddy для импорта файла зоны, и он работал нормально.
Я собираюсь позаимствовать очень подходящий отрывок из документации НРД:
https://www.nlnetlabs.nl/projects/nsd/documentation.html
Грамматика для файлов зоны DNS (RFC 1035)
Впереди: невозможно написать чистый лексер / граммер для файлов зоны DNS. Сначала кажется, что сделать такого зверя несложно, но когда вы начинаете реализовывать его, детали делают его беспорядочным.
Если автор авторитетного сервера имен думает так, то пытаться реализовать его самостоятельно для чего-то меньшего, чем коммерческий продукт, вероятно, глупо. Если это то, что вы создаете для собственной компании, я бы предложил использовать один из инструментов проверки зоны, предоставляемых вместе с популярным программным обеспечением для серверов имен. Примером может быть BIND's named-checkzone
, но я не собираюсь вдаваться в подробности между этими инструментами, поскольку вопросы с рекомендациями по продукту не по теме. Здесь вам нужно будет провести собственное исследование.