Como você configura registros cname dinâmicos?

4

O projeto no qual estou trabalhando exige que mascaremos nomes de host do AWS EC2 com nossos próprios subdomínios.

Por exemplo:

ec2-176-34-163-40.eu-west-1.compute.amazonaws.com mapearia para gf53ef.domain.com

e

ec2-123-31-124-60.eu-west-1.compute.amazonaws.com mapearia para sdfrh5.domain.com

Sempre haverá uma lista disponível que armazena o relacionamento entre os domínios.

Esta lista muda TODO O TEMPO. Significando que em um minuto poderíamos ter mais de 100 novas instâncias de ec2 iniciadas, e todas as próximas poderiam terminar.

Eu estou querendo saber como configurar o nosso servidor Ubuntu para lidar com este caso.

Obrigado

    
por Matt Votsikas 25.05.2012 / 09:22

2 respostas

1

Obrigado @ CS3

Nossa solução é Route53 por enquanto.

Veja como o configuramos (PHP). Usamos essa biblioteca: link

private function getDomain() {
    $sub = "e-".substr(md5($this->instance->dnsName), 2, 4);
    $domain = $sub.".domain.com";

    $dnsRecords = $this->route53->listResourceRecordSets('/hostedzone/123');

    $exists = false;
    foreach($dnsRecords["ResourceRecordSets"] as $dnsRecord) {
        if($dnsRecord["Name"] == $domain."." 
            AND $dnsRecord["Type"] == "CNAME") {
                $exists = true;
                break;
            }
    }

    if(!$exists) {
        $change = $this->route53->prepareChange('CREATE', $domain.".", 'CNAME', 300, $this->instance->dnsName);
        $this->route53->changeResourceRecordSets('/hostedzone/123', $change);
    }

    return $domain;
}

private function removeDomain() {
    $change = $this->route53->prepareChange('DELETE', $this->domain.".", 'CNAME', 300, $this->instance->dnsName);
    $this->route53->changeResourceRecordSets('/hostedzone/123', $change);
    $this->domain = null;
}
    
por 27.05.2012 / 15:46
3

Eu sou dong algo semelhante em uma nuvem openstack para atualizações de nome de DNS de instância (provavelmente não tão dinamicamente quanto sua exigência ;-), basicamente nós temos um bind named instance que aceita atualizações dinâmicas.

Eu usei o webmin para configurar o controle remoto usando RNDC e a configuração básica de ligação.

e,emseguida,gerarumachaveparaacessoremotoedistribuí-loaoseunódecontrole;

dnssec-keygen-ahmac-md5-b128-nHOSTremote-key

oarquivodezonaterminaassim:

zone"mydomain.com" {
  type master;
  file "master/mydomain.com";
  allow-update { key "remote-key"; };
};

allow-update fornece a permissão para atualizar a zona principal, allow-notify é o equivalente da zona escrava.

e, em seguida, você pode fazer algo assim ( nsupdate de bind-utils) para atualizar os registros de um cliente, eu não testei uma atualização CNAME, mas deve ser algo como isto;

cat <<EOF | nsupdate -d -k "$KEY"
server ns1.mynameserver.com
zone domain.com
update delete gf53ef.domain.com.
update add gf53ef.domain.com.   IN  CNAME   ec2-176-34-163-40.eu-west-1.compute.amazonaws.com.
send
EOF

(talvez você precise verificar novamente o formato do exemplo CNAME ...)

Esta parece ser a documentação de referência de configuração para named ;
link

Exemplos podem ser obtidos desses tutoriais;

link
link
link
link

    
por 25.05.2012 / 13:45