Por que meu servidor de nomes EC2 (corretamente) resolve nomes para IPs privados e, em seguida, alterna para IPs públicos?

5

Estou executando um servidor de nomes para algumas máquinas no EC2. Este servidor de nomes não pode ser acessado pela Internet pública. Desejo que todas as instâncias do EC2 usem para encontrar um ao outro e resolver todos os nomes de domínio público (por exemplo, google.com ). Usando CNAMEs eu sou suposto ser capaz de criar meus próprios nomes, mas aderir ao servidor de nomes interno EC2 da Amazon para (interno ) Endereços IP . Funciona por um tempo, mas eventualmente alguns nomes resolvem incorretamente para seus endereços IP públicos .

Veja o que deve acontecer:

foo$ host bar
bar.tld is an alias for ec2-88-88-88-88.compute-1.amazonaws.com.
ec2-88-88-88-88.compute-1.amazonaws.com has address 192.168.50.17

Veja o que realmente acontece depois de um tempo:

foo$ host bar
bar.tld is an alias for ec2-88-88-88-88.compute-1.amazonaws.com.
ec2-88-88-88-88.compute-1.amazonaws.com has address 88.88.88.88

Ack! Se eu reiniciar o BIND, ele voltará a resolver corretamente o nome para o IP privado por um tempo e, eventualmente, exibirá o IP público. Ele nunca parece voltar a servir o IP privado novamente, a menos que eu reinicie o BIND.

A propósito, isso sempre parece funcionar:

foo$ host ec2-88-88-88-88.compute-1.amazonaws.com 172.16.0.23
ec2-23-21-222-199.compute-1.amazonaws.com has address 192.168.50.17

Se parece que eu não sei o que estou fazendo porque cometi um erro simples em um desses arquivos de configuração, é porque não sei o que estou fazendo.

Eu configurei meu próprio domínio de nível superior: ".tld" (ofuscado - esperamos que os caracteres reais escolhidos para o domínio de nível mais alto não importem).

Eu tentei fazer o que Eric Hammond recomenda . Aqui está o meu /etc/bind/named.conf.options :

options {
  directory "/var/cache/bind";
  forwarders { 172.16.0.23; };
  auth-nxdomain no;
  listen-on-v6 { any; };
  allow-query { 127.0.0.1; 192.168.50.0/24; };
};

172.16.0.23 é o ip do servidor DNS da Amazon, acessível apenas dentro do EC2. É o único que conhece os IPs internos / privados corretos para minhas máquinas. É quase como se meu servidor não conseguisse resolver foo.tld às vezes, depois fosse para outro servidor de nomes [público] e a pesquisa fosse então borkeada (depois disso resolvida para o IP público). O truque que eu não pareço estar realizando é que meu servidor de nomes deve nunca ir além de 172.16.0.23 para resolver esses x.compute-1.amazonaws.com nomes. Outra possibilidade é que, às vezes, o servidor de nomes da Amazon se estraga e me dá um IP público, mas por que meu servidor de nomes não corrige o erro e resolve o IP privado de novo às vezes?

De qualquer forma, seguindo em frente ... aqui está o /etc/bind/named.conf.local :

zone "tld" {
  type master;
  file "/etc/bind/db.tld";
  notify no;
};

Por questões de integridade, aqui está o /etc/bind/named.conf :

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

Aqui está meu banco de dados de ligação ofuscado para minha zona, /etc/bind/db.tld :

$TTL    1h
@       IN      SOA     tld. ns.tld. (
          2012021425         ; Serial
                  1m         ; Refresh
                  2m         ; Retry
                  1w         ; Expire
                  1h )       ; Negative Cache TTL
;
@       IN      NS      ns.tld.
@       IN      A       192.168.50.5
ns              A       192.168.50.5

foo     CNAME   ec2-99-99-99-99.compute-1.amazonaws.com.
bar     CNAME   ec2-88-88-88-88.compute-1.amazonaws.com.

Uau. Ok, aqui estão mais alguns arquivos que provavelmente são necessários para a foto inteira. Aqui está /etc/resolv.conf no servidor de nomes, ns :

domain tld
search tld
nameserver 127.0.0.1

Veja /etc/resolv.conf on foo.tld e bar.tld :

domain tld
search tld compute-1.internal
nameserver 192.168.50.5
nameserver 172.16.0.23

Eu não sei se isso está correto. Talvez eu deva ter apenas nameserver 192.168.50.5

Esta configuração usa o BIND 9.7.3 no Ubuntu Server 11.10.

(FYI: publicado em link )

    
por Adam Monsen 17.02.2012 / 04:51

1 resposta

3
options {
    forward only;
    ...

Do BIND ARM97:

encaminhamento Essa opção só terá sentido se a lista de encaminhadores não estiver vazia. Um valor de first , o padrão , faz com que o servidor consulte os encaminhadores primeiro - e se isso não responder à pergunta, o servidor procurará a resposta em si. Se only for especificado, o servidor consultará somente os encaminhadores.

No seu caso, como você realmente precisa de servidores DNS da Amazon somente para .amazonaws.com, você também pode fazer:

options {
    forwarders { };
...
}

zone "amazonaws.com" {
    type forward;
    forwarders { 172.16.0.23; };
    forward only;
};
    
por 27.02.2012 / 07:28