Existe diferença entre @ e * ao usar o BIND?

2

Ao configurar uma zona DNS BIND, muitas vezes me pergunto por que existe @ e * para especificar um alias para o nome da zona. Existe uma diferença entre os dois?

    
por Nick Bolton 15.03.2010 / 18:22

5 respostas

9

@ é traduzido para ser o nome de domínio da zona em que também está em referência. Isso foi usado no arquivo de zona de example.com, então @ seria igual a 'example.com'. Por outro lado, * é um curinga que significa qualquer coisa.

Aqui está um exemplo de como eu uso esses dois símbolos em um arquivo de zona:

; SOA Record
EXAMPLE.NET.    3600    IN  SOA ns1.example.com.    dns.example.net. (
                2010031000
                28800
                7200
                604800
                86400
                )

; A Records
@   3600    IN  A   192.168.1.212
@   3600    IN  A   192.168.1.214

; CNAME Records
www 3600    IN  CNAME   @
*   3600    IN  CNAME   @

; NS Records
@   3600    IN  NS  ns1.example.com
@   3600    IN  NS  ns2.example.com

Neste exemplo, estou definindo a zona para EXAMPLE.NET usando os servidores DNS do EXAMPLE.COM. Eu tenho 2 endereços IP que eu atribuo a registros para o domínio para que EXAMPLE.NET aponte para 192.168.1.212 e 192.168.1.214. Em seguida, defino alguns registros CNAME, www e o% mágico*, que apontam para @ ou como é interpretado EXAMPLE.NET . Há também os registros NS usando o símbolo @ em vez de digitar EXAMPLE.NET .

Então, você pode traduzir esse arquivo de zona como:

; SOA Record
EXAMPLE.NET.    3600    IN  SOA ns1.example.com.    dns.example.net. (
                2010031000
                28800
                7200
                604800
                86400
                )

; A Records
EXAMPLE.NET.    3600    IN  A   192.168.1.212
EXAMPLE.NET.    3600    IN  A   192.168.1.214

; CNAME Records
www 3600    IN  CNAME   EXAMPLE.NET.
*   3600    IN  CNAME   EXAMPLE.NET.

; NS Records
EXAMPLE.NET.    3600    IN  NS  ns1.example.com
EXAMPLE.NET.    3600    IN  NS  ns2.example.com

Ambas as versões são idênticas. O @ simplesmente se torna EXAMPLE.NET e o * significa qualquer coisa que você possa imaginar. Usando o caractere curinga * , você pode configurar um servidor da Web para um domínio e, em seguida, configurar vários hosts virtuais nesse domínio sem ter que modificar o DNS novamente. host1.example.net, blah.example.net e doiexist.example.net apontarão todos para o mesmo local, mesmo que eles não sejam especificamente declarados no arquivo de zona por causa do curinga * .

    
por 15.03.2010 / 19:11
2

Além do que Bill Weiss disse, gostaria de salientar que * significa "todos os subdomínios / rótulos possíveis, exceto os que já estão presentes", isso significa que eu posso ter

$ORIGIN EXAMPLE.NET.
a IN A 1.2.3.4
b IN A 4.3.2.1
* IN A 8.8.8.8

e a.EXAMPLE.NET retornarão 1.2.3.4 assim como c.EXAMPLE.NET irá 8.8.8.8

Além disso, a.a.a.c.EXAMPLE.NET também retornará 8.8.8.8, o que é o que torna os registros de curingas um pouco confusos. Você pode potencialmente usar todo o cache de um servidor de nomes recursivo, iterando esses nomes.

    
por 16.03.2010 / 03:29
1

* não é um alias para o nome da zona. Significa "todos os subdomínios".

    
por 15.03.2010 / 18:48
1

Pense em @ como uma macro que é expandida durante a análise dos arquivos de zona, enquanto * é um operador que "globs" (corresponde) a qualquer coisa que não tenha correspondido a nenhuma das entradas normais.

A entrada * permite configurar um DNS para retornar os registros especificados para consultas que, de outra forma, receberiam uma resposta "NXDOMAIN" (inexistente).

    
por 15.03.2010 / 19:35
0

"@" expande para o $ ORIGIN atual, por RFC 1035. Eu o vi com mais frequência no registro SOA na parte superior do arquivo de zona.

Eu nunca vi '*' usado para qualquer coisa, mas para corresponder a qualquer coisa não correspondida anteriormente em entradas de RR (também conhecidas como "wildcard").

    
por 15.03.2010 / 19:12

Tags