linux – 如何设置DNS服务器以便能够即时添加记录?

我需要在一堆服务器上托管基于子域的SaaS应用程序.服务器是xx1.example.com,xx2.example.com等.我希望在这些服务器上托管一堆yyy.example.com网站.

由于站点是动态创建的,因此我需要能够动态设置DNS记录. DNS通配符区域并没有真正扩展,因为最终我将超过第一台服务器并需要将新实例推送到其他计算机上.因此,我需要能够将特定的子域指向特定的IP地址.

我环顾四周寻找基于API的云端DNS服务(这会很棒),但是对于我的需求(大量低容量实例)来说,它们看起来非常昂贵. Rackspace有一个免费的云DNS服务,但它只有500个区域,技术支持告诉我他们正在重写API,所以我想暂时避免他们的服务.

因此,我想我将为这些区域设置自己的DNS服务器.因此问题:对于这个特定的需求,什么是一个好的DNS服务器软件,这将允许我创建区域而不重新启动?

有什么建议?谢谢!

解决方法

如果要添加的所有记录都是特定区域的子域,则可以轻松设置动态更新的绑定.然后只需使用nsupdate向区域提交更新.

如果所有新记录都是现有域中的记录,则此方法应该可以正常工作.如果您需要动态添加其他域,那么这将无济于事.

// zone config
// using ip only for authentication,should really use hmac auth
zone "example.com" {
        type master;
        file "/etc/bind/dyn/example.com.dns";
        allow-query {any;};
        allow-update {
                127.0.0.1;
                192.0.2.0/24;
        };
};

使用nsupdate更新脚本.

#!/bin/bash
record=yyy.example.com
(
 echo "server xx1.example.com"
 echo "zone example.com"

 echo "update delete ${record} A"
 echo "update add ${record} ${ttl} A 192.0.2.1"
 echo "send"
) | /usr/bin/nsupdate

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...