Configurando um servidor de nomes DNS para um host virtual de massa com Bind9

1

Estou tentando configurar um servidor de nomes DNS chrooted em uma LAN local como esta, todos conectados na LAN podem ter acesso aos hosts virtuais em massa definidos para um ambiente de desenvolvimento sem ter que editar manualmente seu local / etc / hosts. por um. O host virtual de massa é denominado example.user.dev (VirtualDocumentRoot / home / user / example) e example.test (DocumentRoot / var / www / example).

Eu configurei tudo e o / var / log / syslog não mostrou nenhum erro, mas ao verificar o DNS com:

host -v example.test

Não encontra o host. Também usando o comando dig eu não recebo resposta.

dig -x example.test

; <<>> DiG 9.5.1-P3 <<>> -x example
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 47844
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;example.in-addr.arpa. IN PTR

;; AUTHORITY SECTION:
in-addr.arpa. 600 IN SOA a.root-servers.net. dns-ops.arin.net. 2010042604 1800 900 691200 10800

;; Query time: 108 msec
;; SERVER: 80.58.0.33#53(80.58.0.33)
;; WHEN: Mon Apr 26 11:15:53 2010
;; MSG SIZE rcvd: 107

Minha configuração é a seguinte:

/etc/bind/named.conf.local

zone "example.test" {

   type master;  
   allow-query { any; };
   file "/etc/bind/zones/master_example.test";
   notify yes;

};

zone "1.168.192.in-addr.arpa" {

   type master;
   allow-query { any; };
   file "/etc/bind/zones/master_1.168.192.in-addr.arpa";
   notify yes;

};

/etc/bind/named.conf.options

  • Nota: Temos um endereço IP estático para encaminhar as consultas para o servidor DNS ao endereço IP.

options{

    directory "/var/cache/bind";  
    forwarders { 80.34.100.160; };
    auth-nxdomain no;  
    listen-on-v6 { any; };  

};

/etc/bind/zones/master_example.test

$ORIGIN example.test.
$TTL 86400
@ IN SOA example.test. root.example.test. (

                   201004227       ; serial  
                   28800              ; refresh  
                   14400              ; retry  
                   3600000              ; expire  
                   86400 )            ; min  

;

TXT "example.test, DNS service"
@ IN NS example.test.
localhost A 127.0.0.1
example.test. A 192.168.1.52
example A 192.168.1.52
www CNAME example.test.

/ etc / hosts

127.0.0.1 localhost example
192.168.1.52 localhost example example.test

/etc/resolv.conf

  • Nota: Para o Bind, acabei de adicionar as 3 últimas linhas.

nameserver 80.58.0.33
nameserver 80.58.61.250
nameserver 80.58.61.254

search example.test
search example
nameserver 192.168.1.52

EDITAR

Algumas mudanças importantes. Agora eu tenho essa configuração:

/etc/resolv.conf

search example.test
search example
nameserver 192.168.1.52

nameserver 80.58.0.33
nameserver 80.58.61.250
nameserver 80.58.61.254

/ etc / hosts

127.0.0.1 localhost example example.test 192.168.1.52 dns1.example.test

/etc/bind/named.conf.local

Acabei de comentar a zona de endereço reverso.

/etc/bind/zones/master_example.test

$ORIGIN example.test.
$TTL 86400
@ IN SOA dns1.example.test. hostmaster.example.test. (

                   2010042214       ; serial  
                   21600              ; refresh  
                   3600              ; retry  
                   604800              ; expire  
                   86400 )            ; min  

IN NS dns1.example.test.
IN NS dns2.example.test.
IN A 192.168.1.52

example IN A 192.168.1.52
dns1 IN A 192.168.1.52
dns2 IN A 192.168.1.52
www CNAME example

E agora executando:

dig example.test @192.168.1.52

; <<>> DiG 9.5.1-P3 <<>> example.test @192.168.1.52
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53489
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;example.test. IN A

;; ANSWER SECTION:
example.test. 86400 IN A 192.168.1.52

;; AUTHORITY SECTION:
example.test. 86400 IN NS dns1.example.test.
example.test. 86400 IN NS dns2.example.test.

;; ADDITIONAL SECTION:
dns1.example.test. 86400 IN A 192.168.1.52
dns2.example.test. 86400 IN A 192.168.1.52

;; Query time: 1 msec
;; SERVER: 192.168.1.52#53(192.168.1.52)
;; WHEN: Mon Apr 26 12:38:56 2010
;; MSG SIZE rcvd: 118

Então, agora, qual deve ser o próximo passo em frente?

EDIT 2

Eu deixei o servidor DNS resolv.conf assim:

nameserver 192.168.1.52
nameserver 80.58.0.33
nameserver 80.58.61.250
nameserver 80.58.61.254

e adicionou o servidor DNS addres 192.168.1.52 a qualquer computador cliente em seu resolv.conf

Assim, posso acessar de cada computador o link .

Para conseguir alcançar cada host virtual individual do ambiente de desenvolvimento, devo criar uma nova zona ou usar um caractere curinga na zona example.test que criei?

EDIT 3

Finalmente, deixei minhas zonas assim. Uma zona para o host virtual de teste e a outra para o host virtual de massa para problemas de desenvolvimento. Tudo funciona como eu queria e com rapidez e um bom desempenho. Não sei se existe uma configuração melhor do que isso para o sistema que construí. Qualquer conselho seria tomado cuidado.

master_example.test

$ORIGIN example.test.
$TTL 86400
@ IN SOA dns1.example.test. hostmaster.example.test. (

                        2010042215       ; serial  
                        21600              ; refresh  
                        3600              ; retry  
                        604800              ; expire  
                        86400 )            ; min  

@ IN NS dns1.example.test.
@ IN NS dns2.example.test.
@ IN A 192.168.1.52
www IN CNAME @

master_dev

$ORIGIN dev.
$TTL 86400
@ IN SOA dev. hostmaster.dev. (

                        2010042215       ; serial  
                        21600              ; refresh  
                        3600              ; retry  
                        604800              ; expire  
                        86400 )            ; min  

@ IN NS dev.
@ IN A 192.168.1.52
*.dev. IN A 192.168.1.52

/etc/bind/named.conf.local

zone "example.test" {

   type master;  
   allow-query { any; };
   file "/etc/bind/zones/master_example.test";
   notify yes;

};

zone "dev" {

   type master;  
   allow-query { any; };
   file "/etc/bind/zones/master_dev";
   notify yes;

};

zone "1.168.192.in-addr.arpa" {

   type master;
   allow-query { any; };
   file "/etc/bind/zones/master_1.168.192.in-addr.arpa";
   notify yes;

};

/etc/bind/named.conf.options

  • Nota: Temos um endereço IP estático para encaminhar as consultas para o servidor DNS ao endereço IP. Por fim, adicionei aos encaminhadores o ISP DNS IP, a fim de não causar gargalo no tráfego da Web, porque, experimentalmente, tive um grande aumento na velocidade das conexões HTTP dentro e fora da LAN local.

options{

    directory "/var/cache/bind";
    allow-query { 192.168.1.0/24; localhost;};
    allow-recursion { 192.168.1.0/24; localhost;};
    forwarders { 80.58.0.33; 80.34.100.160; };
    auth-nxdomain no;  
    listen-on-v6 { any; };  

};

    
por Dez 26.04.2010 / 11:23

2 respostas

1

Olhando os endereços IP em seu resolv.conf , tenho a sensação de que seu servidor BIND está em 192.168.1.52. Tanto quanto eu posso dizer, você não pode especificar no resolv.conf algo como "para esses domínios, use este servidor de nomes". Basicamente, seu servidor BIND nunca será consultado. Como você pode ver em sua pesquisa de escavação (que está incorreta, está pedindo uma entrada de DNS reverso), ele tenta 80.58.0.33, que eu assumo é o servidor DNS de seu provedor.

Você já configurou o BIND como servidor de nomes de cache usando a opção 'forwarders', então o que você precisa fazer é ter apenas 192.168.1.52 nos PCs clientes como servidor de nomes.

Para ver se o seu BIND está configurado corretamente, tente isto:

dig example.test @192.168.1.52
    
por 26.04.2010 / 11:52
1

Você pode (e deve) fazer a zona muito mais limpa.

Meu exemplo assume que service-domain.net é um domínio que você controla, então simplesmente faça referência a ele quantas vezes forem necessárias em named.conf (eu uso um script que apenas pega uma lista de domínios como este e cria a configuração)

Tente algo assim:

$TTL 86400  
@       IN      SOA     ns.service-domain.net. hostmaster.service-domain.net. (

                        201004227       ; serial  
                        28800           ; refresh  
                        14400           ; retry  
                        3600000         ; expire  
                        86400 )         ; min  
@              IN       NS      ns1.service-domain.net.
@              IN       NS      ns2.service-domain.net.
@              IN       A       192.168.1.52
www            IN       CNAME   @
@              IN       MX      0    mail.service-domain.net.

Em seguida, faça a referência como:

zone "example.test" { 
   type master;  
   allow-query { any; };
   file "/etc/bind/zones/master_generic_zone";
   notify yes;
};
zone "sample.com" { 
   type master;  
   allow-query { any; };
   file "/etc/bind/zones/master_generic_zone";
   notify yes;
};
    
por 26.04.2010 / 14:10