bind: substitua apenas o único registro SRV, encaminhe o restante

1

Pré-requisitos

Para que nosso servidor libravatar interno funcione, preciso configurar um registro SRV para nosso domínio público company.com :

_avatars._tcp.company.com.     IN SRV 0 0 80  avatars.internal

Como você vê, o servidor de avatar está em um domínio interno que não é acessível de fora, portanto, o registro SRV não deve estar disponível publicamente.

Problema

Temos um servidor DNS BIND que resolve solicitações de domínios internos. Este servidor encaminha as solicitações encaminham company.com para o servidor DNS público (e que deve ser mantido dessa forma, portanto, precisamos gerenciar apenas os nomes públicos em um servidor).

Agora, como posso substituir o registro _avatars._tcp.company.com SRV em nosso servidor BIND local, ao encaminhar todas as outras solicitações para o servidor público?

Eu sei que isso é fácil com subdomínios (apenas defina uma zona mestre para o subdomínio, pronto), mas não consigo fazer isso para registros SRV para o domínio principal. O que posso fazer?

O que eu tentei

Com a seguinte configuração, a resolução funciona para o subdomínio, mas não para o domínio principal:

$ dig @localhost +short SRV _avatars._tcp.company.com
$ dig @localhost +short SRV _avatars._tcp.bookmarks.company.com
0 0 80 avatars.internal.

/etc/bind/named.conf.local

zone "_avatars._tcp.company.com" {
  type master;
  file "/etc/bind/db._avatars._tcp.company.com";
  allow-update { none; };
};

zone "bookmarks.company.come" {
  type master;
  file "/etc/bind/db.bookmarks.company.com";
  allow-update { none; };
};

/etc/bind/db.bookmarks.company.com

$TTL    86400
@               IN SOA  @       root (
                                        2012082201      ; serial 
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

@               IN      NS      ns.company.com.
@               IN      A       192.168.1.41
_avatars._tcp.bookmarks.company.com.     IN SRV 0 0 80  avatars.internal.

/etc/bind/db._avatars._tcp.company.com

$TTL    86400
@               IN SOA  @       root (
                                        2012082201      ; serial
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
@                              IN NS          ns.company.com.
@                              IN SRV 0 0 80  avatars.internal.
_avatars._tcp.company.com.     IN SRV 0 0 80  avatars.internal.

(sim, as duas últimas linhas são idênticas, mas só para ter certeza)

    
por cweiske 21.08.2012 / 16:40

1 resposta

2

Adicione uma zona para o nome específico ( _avatars._tcp.company.com. ) ao seu servidor DNS interno, contendo o único registro que você deseja substituir.

Um registro SRV não é especial - é apenas um registro DNS e se comporta como qualquer outro registro DNS.

A zona de substituição deve ser semelhante ao que está abaixo

$TTL    3600

@       IN      SOA     dev.company.com. root.company.com. (
                                   2009071505  ; serial
                                   10800       ; refresh
                                   3600        ; retry
                                   3600000     ; expire
                                   86400 )     ; minimum

@   IN  NS  inside-ns.company.com.

_foo.dev.company.com.       IN  SRV 0   0   80  google.co.uk.
    
por 21.08.2012 / 17:34