É possível ter um registro CNAME de expressão regular no DNS?

1

É possível fazer algo assim? Ou equivalente? em um servidor DNS.

([0-9]{2})\.example\.com\.  IN  CNAME   www$1.example.net.
    
por Van Nguyen 19.04.2010 / 04:39

7 respostas

7

O DNS não. Mas o daemon de servidor de nomes bind9 mais popular suporta esse tipo de sintaxe em seus arquivos de zona:

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

Tenha em atenção que isto é incompatível com outro software de servidor DNS.

    
por 19.04.2010 / 13:29
4

Embora a manipulação de regex possa ser gravada em um servidor DNS, seria uma má idéia fazê-lo.

Qualquer servidor DNS modificado para lidar com a expansão de expressões regulares terá problemas em coexistir com o resto do mundo. As transferências de zona para servidores "padrão" seriam incompletas, incorretas ou absolutamente massivas, já que cada permutação teria que ser enviada como um registro separado. Dependendo da regex, isso pode resultar em um número quase infinito de registros possíveis, o que é claramente impraticável porque a transferência pode nunca ser concluída, deixando os sistemas fora de sincronia.

É claro que se as transferências só acontecessem entre servidores modificados, isso poderia ser OK, mas o universo tem uma tendência a destruir essa simplicidade.

    
por 19.04.2010 / 11:36
3

O protocolo DNS não suporta expressões regulares. Dito isto, não há razão para que um servidor de nomes não tenha a capacidade de avaliar expressões regulares internamente e servir respostas padrão do DNS.

Não funcionará com o formato de zona padrão, conforme definido na RFC 1035 seção 5 e RFC 1034 seção 3.6.1 e eu não estou ciente de qualquer servidor de nomes realmente implementando suporte para expressões regulares, mas basicamente é possível.     

por 19.04.2010 / 08:04
2

Não. Mas você pode ter um curinga:

*.mydomain.com

que não faz exatamente o que você quer, mas talvez você possa fazer alguma validação no lado do servidor para garantir que o nome do host seja válido? Não vai ajudar a reescrever para um outro registro A ...

    
por 19.04.2010 / 05:15
1

Sem regex, apenas nomes de domínio curinga, por exemplo *.mydomain.net - ( RFC 4592 , especialmente a seção 2)

    
por 19.04.2010 / 05:42
1

Como jrockway sugeriu, se você puder arcar com o seu próprio servidor de nomes, você tem controle total sobre as respostas que você dá. Nesse caso, você pode responder com o registro CNAME desejado, com base na consulta. Eu não sei quanto tráfego de DNS você espera ter, quão crítico é o seu site, mas você pode tentar um servidor DNS implementado em Perl, usando o Net :: DNS :: Nameserver .

Como alternativa, como seu regex é apenas um atalho para 100 registros de recursos DNS, você pode simplesmente executar o BIND e fazer com que um script gere o arquivo de zona desejado.

Ou use as ferramentas do seu registrador para criar os 100 registros CNAME.

    
por 19.04.2010 / 12:26
1

Você não pode fazer isso com o software DNS padrão.

É possível se você usar um servidor DNS personalizado que reconheça esse padrão específico e, em seguida, sintetize dinamicamente a resposta correta. Na verdade, seria trivial, por exemplo, usar minha estrutura de servidor evldns . Se você souber 'C', deve levar menos de uma hora para ser implementado.

No entanto, os todos servidores DNS autoritativos do domínio precisam ter esse recurso. Embora um registro de caractere curinga possa ser felizmente transferido do servidor primário para o servidor secundário usando AXFR , isso só funciona porque está embutido no protocolo DNS.

    
por 23.04.2010 / 14:50