用于配置 BIND9 的 Bash 脚本

用于配置 BIND9 的 Bash 脚本

我有一个网络服务器(运行 Ubuntu 12.04 服务器和 Nginx)并且我正在其上建立一些网站。

我对管理自己的网络服务器还很陌生,除了配置 DNS 方面的问题外,我一切都进展顺利。

我希望一台服务器同时充当 Web 服务器和 DNS 服务器(除非有人能说服我...)

我已阅读了一些 BIND9 指南,但就是不明白它为什么如此复杂!

我想要一个可以运行的脚本,类似于:configure-dns.sh mydomain.com它将为“mydomain”创建区域和条目,并将当前服务器设置为主机和权威服务器。

理想情况下,我希望新域名的工作流程简单如下:

  • 在注册商处注册域名
  • 在注册商处,将我的 DNS 设置为我的服务器
  • 在我的服务器上,运行 1 个脚本来设置相关的 DNS 条目
  • 在我的服务器上,运行 1 个脚本来设置相关的 Web 服务器配置(我已经有了

所以, 您能使用简单的 bash 脚本添加 DNS 条目吗?

谢谢,迪恩。

答案1

添加至/etc/bind/named.conf:

include "/etc/bind/domain-enabled.conf";

制作目录:

# mkdir /etc/bind/domain-enabled/

脚本:

cat <<EOF >>/etc/bind/domain-enabled.conf
zone "$1" {
        type master;
        file "/etc/bind/domain-enabled/$1.db";
};
EOF
cat <<EOF >/etc/bind/domain-enabled/$1.db
\$TTL   604800
@       IN      SOA     ns1.$1. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.$1.
@       IN      A       $2
ns1     IN      A       $2
EOF
rndc reload

跑步:

add-domain examle.com 127.0.0.1

答案2

是的,我已经多次使用 shell 脚本针对不同工作场所的不同基础设施实现 DNS 自动化管理。

至于您的另一个伪问题“为什么它必须如此复杂”,那是因为 DNS 在一般情况下并不是一件小事,而 BIND 试图处理所有复杂的极端情况。这意味着简单的事情并不像它们本来应该的那样简单,然而很高兴知道无论事情变得多么棘手,您都能处理它。

答案3

相关内容