web-dev-qa-db-ja.com

BIND9を構成するためのBashスクリプト

私はウェブサーバー(Ubuntu 12.04サーバーとNginxを実行しています)を持っており、その上にいくつかのウェブサイトをセットアップしています。

私は自分のWebサーバーを管理するのはまったく新しいので、DNSの構成を除いてはかなり順調に進んでいます。

1台のサーバーをWebサーバーとDNSサーバーの両方として機能させたい(誰かが私を説得できない限り)。

いくつかのBIND9ガイドを読みましたが、なぜそれほど複雑でなければならないのか理解できません。

実行できるスクリプトを1つ欲しいのですが、次のようになります。configure-dns.sh mydomain.comこれは、「mydomain」のゾーンとエントリを作成し、現在のサーバーをホストおよび権限のあるサーバーとして設定します。

理想的には、新しいドメインのワークフローを次のようにしたいと思います。

  • レジストラでドメインを登録する
  • レジストラで、DNSをサーバーに設定します
  • 私のサーバーで、関連するDNSエントリを設定する1つのスクリプトを実行します
  • 私のサーバーで、関連するWebサーバー構成を設定する1つのスクリプトを実行します( 私はすでにこれを持っています

だから、簡単なbashスクリプトでDNSエントリを追加できますか?

ありがとう、ディーン。

3
Dean Rather

/etc/bind/named.confに追加します。

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

make dir:

# 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
4
jnizjo

はい、さまざまな雇用場所のさまざまなインフラストラクチャに対して、シェルスクリプトを使用してDNS管理を数回自動化しました。

他の疑似質問「なぜそれほど複雑でなければならないのか」については、DNSは一般的なケースでは些細なことではなく、BINDはすべての複雑なコーナーケースを処理しようとするためです。つまり、単純なものは他の方法ほど単純ではありませんが、どんなに毛深いものになっても、それを処理できることを知っておくとよいでしょう。

3
womble