Назад | Перейти на главную страницу

Разрешена ли установка пустой / пустой записи DNS A?

Я пытаюсь окунуться в удивительный мир DNS.

Я создал файл зоны для example.com, который содержит:

@     A    1.2.3.4
*     A    1.2.3.4

Однако я также настраиваю свой локальный DNS, local.example.com, в котором я создал отдельный файл зоны, содержащий следующее:

machine1     A    192.168.0.1
machine2     A    192.168.0.2

Когда я копаю machine1.local.example.com, он возвращает запись A 192.168.0.1, отлично.

К сожалению, badmachine.local.example.com возвращает 1.2.3.4, как и local.example.com.

Я не уверен, как лучше это предотвратить. Если я добавлю следующее в local.example.com, для двух приведенных выше примеров будут возвращены пустые записи A, как и желаемое мной поведение:

@     A
*     A

Я хочу, чтобы something.example.com использовал подстановочный знак, ЗА ИСКЛЮЧЕНИЕМ чего-либо в поддомене local.example.com, на который я не хочу давать ответ, если не указано иное. По сути, мне нужна дикая карта с одним исключением.

Это разрешено? Это лучшая практика или я все делаю ужасно неправильно? Я использую PowerDNS с серверной частью BIND.

Спасибо за ваши мысли!

Во-первых, ваш комментарий к Крису S выше проясняет (действительно, изменяет) ваш исходный вопрос, и я надеюсь, что вы простите меня, редактируя его в свой исходный вопрос.

Во-вторых, как отмечали другие, нулевые записи не допускаются.

В-третьих, я думаю, что способ сделать то, что вы хотите, - это объявить local.example.com чтобы быть правильным поддоменом:

local                       IN      NS      ns1.example.com
local                       IN      NS      ns2.example.com

перечисляя те же два сервера имен, которые вы сейчас запускаете для example.com (примечание: я не знаю PowerDNS, поэтому мои записи выше находятся в формате BIND). Затем на этих серверах имен (которые, как я полагаю, являются этим сервером имен) вы объявляете файл зоны для local.example.com, который содержит только те хосты, которые вы хотите разрешить, и без записи с подстановочными знаками.

Итак, когда люди смотрят вверх foo.example.com, если его нет в списке, он будет соответствовать существующей записи с подстановочным знаком и вернет 1.2.3.4 (или что-то еще). Но когда люди смотрят вверх foo.local.example.com, сервер имен записывает для local.example.com будут возвращены, и произойдет дальнейшая рекурсия, при этом ваш сервер имен теперь просматривает файл зоны для local.example.com, и говоря (в отсутствие конкретной записи для foo и подстановочный знак в local.example.com) «нет, такой записи нет».

Вам следует посмотреть на конкретное поведение сервера, на котором вы работаете, потому что эта функция не реализована последовательно:

Процитируем RFC 4592: многие реализации DNS по-разному расходятся с исходным определением подстановочных знаков.

Подстановочные знаки на практике

То, что вы хотите, чтобы запись с подстановочными знаками выполнялась, правильно, поскольку я понимаю определение использования подстановочных знаков (лучше думать об этом как о значении по умолчанию в крайнем случае). Я постараюсь найти время, чтобы прочитать уточняющий RFC и обновить здесь ...

Я не могу придумать способ «обнулить» запись. Пустые записи A не допускаются.

Возможно *.example.com A 1.2.3.4 предотвратит переопределение записей .local.example.com? Похоже, PowerDNS не соответствует спецификации. Определение домена local.example.com должно предотвратить попадание подстановочного знака на что-либо в этом домене. Можете ли вы разместить файлы полной зоны? Это разрешило бы ряд небольших вопросов.

Было бы полезно знать, какие именно ответы вам нужны. Первые две строки, цитируемые в вашем вопросе, задают ответ по умолчанию для домена, а также ответ несопоставленной записи. Следовательно, example.com будет обслуживаться записью «@», а something-that-doesnt-exist.exmaple.com будет обслуживаться записью «*». В них нет необходимости, вы можете избавиться от обоих. Установка для них пустых значений является недопустимой конфигурацией (в большинстве систем).