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

Какие символы / значения разрешено использовать в DNS?

Пока я искал RFC DNS из-за реализации для проверки подчеркивания в записях CNAME, я нашел это интересное обсуждение и RFC с интересным моментом:

https://www.ietf.org/mail-archive/web/dnsop/current/msg01449.html

RFC 2181 11. Синтаксис имени: Сам DNS накладывает только одно ограничение на конкретные метки, которые могут использоваться для идентификации записей ресурсов. Это единственное ограничение относится к длине метки и полному имени. Длина любой метки ограничена от 1 до 63 октетов. Полное доменное имя ограничено 255 октетами (включая разделители). Полное имя нулевой длины определяется как корень DNS-дерева и обычно записывается и отображается как «.». Помимо этих ограничений, любая двоичная строка может использоваться как метка любой записи ресурса. Точно так же любая двоичная строка может служить значением любой записи, которая включает доменное имя как часть или все свое значение (SOA, NS, MX, PTR, CNAME и любые другие, которые могут быть добавлены). Реализации протоколов DNS не должны накладывать никаких ограничений на используемые метки. В частности, DNS-серверы не должны отказываться от обслуживания зоны, поскольку она содержит метки, которые могут быть неприемлемы для некоторых клиентских программ DNS. DNS-сервер может быть настроен на выдачу предупреждений при загрузке или даже на отказ в загрузке основной зоны, содержащей метки, которые могут считаться сомнительными, однако по умолчанию этого не должно происходить.

Итак, мой вопрос - если я правильно это понял, означает ли это, что мы можем использовать в записях DNS, таких как MX, CNAME и т. Д., Что-то вроде этого?

Если мы попросим: (представьте, что может быть любая двоичная строка)

the?weird?record,___*-+\k8a#$%...domain.ext

Может ли это вернуть похожий мэшап из символов (например, двоичную строку?). Это разрешено?

Конечно, я спрашиваю не о правилах «имен хостов» и о «предпочтительных» соглашениях об именах, а о «разрешенном» использовании символов в DNS.

Следует учитывать три вещи:

  1. Стандарты RFC - которые вас, похоже, не волнуют, поскольку вы не хотите знать о предпочтительных соглашениях об именах и тому подобном.
  2. Реализация используемого вами DNS-сервера - независимо от RFC, можете ли вы поместить двоичные данные в пространство имен DNS, зависит от того, поддерживает ли поставщик (BIND, NSD ...) эти символы в своем программном обеспечении. Чтобы получить окончательный ответ на этот вопрос, вам нужно будет прочитать их документацию или, что более вероятно, просмотреть их исходный код.
  3. Реализация используемого вами DNS-клиента - если вы хотите хранить двоичные данные в пространстве имен DNS, а не записи данных RDATA, клиент также должен будет поддерживать это.