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

Возможно ли иметь запись CNAME регулярного выражения в DNS?

Возможно ли такое сделать? Или любой эквивалент? в DNS-сервере.

([0-9]{2})\.example\.com\.  IN  CNAME   www$1.example.net.

DNS не работает. Но самый популярный bind9 Демон сервера имен поддерживает такой синтаксис в своих файлах зоны:

$GENERATE 1-99 www$ CNAME www$.other-domain.com.

Помните, что это несовместимо с другим программным обеспечением DNS-сервера.

Хотя обработка регулярных выражений мог быть записанным на DNS-сервер, это было бы плохой идеей.

Любой DNS-сервер, модифицированный для обработки расширения регулярных выражений, будет иметь проблемы с сосуществованием с остальным миром. Передача зон на «стандартные» серверы будет либо неполной, либо неправильной, либо абсолютно массивной, так как каждую перестановку придется отправлять как отдельную запись. В зависимости от регулярного выражения это может привести к почти бесконечному количеству возможных записей, что явно непрактично, поскольку передача может никогда не завершиться, в результате чего системы будут рассинхронизированы.

Конечно, если бы передачи происходили только между модифицированными серверами, это могло бы быть нормально, но вселенная имеет тенденцию разрушать такую ​​простоту.

Протокол DNS не поддерживает регулярные выражения. При этом нет причин, по которым сервер имен не должен иметь возможность внутренне оценивать регулярные выражения и обслуживать стандартные ответы DNS.

Он не будет работать со стандартным форматом зоны, определенным в RFC 1035 раздел 5 и RFC 1034 раздел 3.6.1, и я не знаю ни одного сервера имен, реально реализующего поддержку регулярных выражений, но в основном это возможно.

Нет, но у вас может быть подстановочный знак:

*.mydomain.com

что не совсем то, что вы хотите, но, может быть, вы можете провести некоторую проверку на стороне сервера, чтобы убедиться, что имя хоста действительно? Не поможет переписать на другой A записать хотя ...

Никакого регулярного выражения, только доменные имена с подстановочными знаками, например *.mydomain.net - (RFC 4592, особенно раздел 2)

Как подсказал jrockway, если вы можете позволить себе развернуть свой собственный сервер имен, вы полностью контролируете ответы, которые вы даете. В этом случае вы можете ответить нужной записью CNAME на основе запроса. Я не знаю, какой объем DNS-трафика вы ожидаете, насколько критически важен ваш веб-сайт, но вы можете попробовать DNS-сервер, реализованный на Perl, используя Net :: DNS :: Nameserver модуль.

В качестве альтернативы, поскольку ваше регулярное выражение - это просто ярлык для 100 записей ресурсов DNS, вы можете просто запустить BIND и попросить сценарий сгенерировать нужный файл зоны.

Или просто используйте инструменты вашего регистратора, чтобы создать 100 записей CNAME.

Вы не можете сделать это с помощью стандартного программного обеспечения DNS.

Это является возможно, если вы используете настраиваемый DNS-сервер, который распознает этот конкретный шаблон, а затем динамически синтезирует правильный ответ. Это было бы тривиально, например, используя мой Evldns серверная структура. Если вы знаете букву «C», это займет меньше часа.

Однако обратите внимание, что все авторитетные DNS-серверы для домена должны иметь эту функцию. В то время как запись с подстановочными знаками может быть успешно перенесена с основного на вторичный сервер, используя AXFR, который работает только потому, что он встроен в протокол DNS.