你如何设置dynamiccnamelogging?

我正在处理的项目要求我们用我们自己的子域掩盖AWS EC2主机名。


例如:

ec2-176-34-163-40.eu-west-1.compute.amazonaws.com将映射到gf53ef.domain.com

ec2-123-31-124-60.eu-west-1.compute.amazonaws.com会映射到sdfrh5.domain.com


总会有可用的列表来存储域之间的关系。

这个列表改变了所有的时间。 意思在一分钟内,我们可以有100多个新的ec2实例开始,下一个都可以终止。

我想知道如何设置我们的Ubuntu服务器来处理这种情况。

谢谢

我在OpenStack云上进行类似的操作,例如DNS名称更新(可能不像您的要求那样dynamic化);基本上我们有一个named实例的绑定,可以接受dynamic更新。

我使用webmin来configuration使用RNDC的远程控制,以及基本的绑定configuration。

在这里输入图像说明

然后生成一个用于远程访问的密钥,并将其分发到您的控制节点;

 dnssec-keygen -a hmac-md5 -b 128 -n HOST remote-key 

区域文件就这样结束;

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

allow-update提供了更新主区域的权限 , allow-notify是等效的从区域。

然后你可以做这样的事情(从bind-utils的nsupdate )更新客户端的logging,我没有testing过CNAME更新,但应该看起来像这样;

 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 

(您可能需要仔细检查CNAME示例的格式…)

这似乎是named的configuration参考文档;
http://www.zytrax.com/books/dns/ch7/xfer.html

例子可以从这些教程中获得;

http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-bind-rndc.html
http://dag.wieers.com/howto/bits/bind-ddns.php
http://linux.yyz.us/nsupdate/
http://www.semicomplete.com/articles/dynamic-dns-with-dhcp/

谢谢@ CS3

现在我们的解决scheme是Route53。

以下是我们如何设置(PHP)。 我们使用这个库: http : //www.orderingdisorder.com/aws/route-53/

 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; }