バインドDNSサーバー設定の自動生成システム

このサービスでは、多くの場合、多くのDNSゾーンを作成し、それらにレコードを追加または変更する必要があります。 手動でこれはかなり骨の折れる複雑なプロセスです。構文に留意し、詳細を間違えないようにする必要があります。 そのようなことについては、コンピューターで作業を完了することがまさにそれです。

IAdminは、ホスティングサーバーでバインド構成を自動的に生成するように設計されたシステムであり、MySQLデータベースのiadminデータベースと、データベースのデータに基づいて構成ファイルを生成するスクリプトです。 テーブルdns_domains、dns_records、dns_subgmailは、バインドの構成に使用されます。 pearlで記述されたメインスクリプトは、iadminデータベースからデータを読み取り、構成ファイルを作成します。 ゾーンファイルは、/ var / cache / bind /ディレクトリに生成されます。 iadminシステムによって処理されない他のゾーンファイルもそこに保存されます。 同じシステムがセカンダリDNSの構成を作成し、そこに転送されます。 スクリプトが実行されるまで、データベースからのすべての変更は具体化されません。

データ


Dns_domainsテーブル


このテーブルは次のフィールドで構成され、DNSサーバーを構成するためのメインテーブルです。

たとえば、サービスに英語圏のiadmin.vipを追加し、Gmailを使用してftpを使用しない(123.123.4.56をホストする)には、表に次の行を記述する必要があります。
id
ドメイン名
www
ftp
メール
タイプメール
二次
Hosted_on
可能にする
シリアル
所有者
215
iadmin.vip
1
0
1
gmail
ヌル
123.123.4.56
1
2010082001
1




このレコードにより、およそ次の内容のゾーンファイルを生成できます。
 $ TTL 86400
 iadmin.vip。  SOA ns0.english.comで。  ns1.english.com。  (
                 2010082001; シリアル
                 10800; リフレッシュ
                 3600; 再試行
                 604800; 期限切れ
                 86400); 最低
                 NS ns0.english.com。
                 NS ns1.english.com。
                 IN A 123.123.4.56
 ;  IN MX 1 relay.iadmin.vip。
 ;リレーIN A 77.88.99.11
                 MX 1 ASPMX.L.GOOGLE.COMで
                 MX 5 ALT1.ASPMX.L.GOOGLE.COMで
                 MX 5 ALT2.ASPMX.L.GOOGLE.COMで。
                 MX 10 ASPMX2.GOOGLEMAIL.COMで。
                 MX 10 ASPMX3.GOOGLEMAIL.COMで。
                 MX 10 ASPMX4.GOOGLEMAIL.COMで。
                 MX 10 ASPMX5.GOOGLEMAIL.COMで。
                 IN TXT "v = spf1 include:aspmx.googlemail.com〜all"
 CNAME ghs.google.comにメールしてください。
 CNAME ghs.google.comのカレンダー。
 CNAME ghs.google.comで開始します。
 docs IN CNAME ghs.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 5 0 5269 xmpp-server.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server1.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server2.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server3.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server4.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 5 0 5269 xmpp-server.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server1.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server2.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server3.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server4.l.google.com。
 www in CNAME iadmin.vip。
 CNAME iadmin.vipのww。
 CNAME iadmin.vipのwwww。


Dns_recordsテーブル


このテーブルは、任意のレコードをゾーンに追加するために使用され、次のフィールドで構成されます。


たとえば、ドメインゾーンiadmin.vipにサードパーティのメールサーバー(メールやGmailではありません)を追加するために、たとえばrelay.dc.ukrtel.netを追加するには、次の行を記述する必要があります。


ドメイン名
リタイプ
データ
有効
id
.iadmin.vip
MX
10 relay.dc.ukrtel.net。
1
680

その後、dns_domainsドメインゾーンのシリアルを増やす必要があることに注意してください。

Dns_subgmailテーブル


このテーブルは、Google Appsを使用するいくつかのサブドメインがあるゾーンの記述を簡素化するために使用され、次のフィールドで構成されます。


たとえば、iadmin.vipドメインゾーンがGoogle Appsサービスとの別の同期サブドメインを持つエントリを追加するには、次の行を記述する必要があります。


idドメイン名サブドメイン可能にする
56iadmin.vip同期する1

ドメインゾーンは次のようになります。
 $ TTL 86400
 iadmin.vip。  SOA ns0.english.comで。  ns1.english.com。  (
                 2010082001; シリアル
                 10800; リフレッシュ
                 3600; 再試行
                 604800; 期限切れ
                 86400); 最低
                 NS ns0.english.com。
                 NS ns1.english.com。
                 77.88.99.11で
 ;  IN MX 1 relay.iadmin.vip。
 ;リレーIN A 123.123.4.56
                 MX 1 ASPMX.L.GOOGLE.COMで
                 MX 5 ALT1.ASPMX.L.GOOGLE.COMで
                 MX 5 ALT2.ASPMX.L.GOOGLE.COMで。
                 MX 10 ASPMX2.GOOGLEMAIL.COMで。
                 MX 10 ASPMX3.GOOGLEMAIL.COMで。
                 MX 10 ASPMX4.GOOGLEMAIL.COMで。
                 MX 10 ASPMX5.GOOGLEMAIL.COMで。
                 IN TXT "v = spf1 include:aspmx.googlemail.com〜all"
 CNAME ghs.google.comにメールしてください。
 CNAME ghs.google.comのカレンダー。
 CNAME ghs.google.comで開始します。
 docs IN CNAME ghs.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 5 0 5269 xmpp-server.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server1.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server2.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server3.l.google.com。
 _xmpp-server._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server4.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 5 0 5269 xmpp-server.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server1.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server2.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server3.l.google.com。
 _jabber._tcp.iadmin.vip。  IN SRV 20 0 5269 xmpp-server4.l.google.com。
 www in CNAME iadmin.vip。
 CNAME iadmin.vipのww。
 CNAME iadmin.vipのwwww。
 MX 1 ASPMX.L.GOOGLE.COMで同期します。
 MX 5 ALT1.ASPMX.L.GOOGLE.COMで同期します。
 MX 5 ALT2.ASPMX.L.GOOGLE.COMで同期します。
 MX 10 ASPMX2.GOOGLEMAIL.COMで同期します。
 MX 10 ASPMX3.GOOGLEMAIL.COMで同期します。
 MX 10 ASPMX4.GOOGLEMAIL.COMで同期します。
 MX 10 ASPMX5.GOOGLEMAIL.COMで同期します。
 TXTの同期 "v = spf1 include:aspmx.googlemail.com〜all"
 CNAME ghs.google.comのmail.sync。
 CNAME ghs.google.comのcalendar.sync。
 start.sync IN CNAME ghs.google.com。
 docs.sync IN CNAME ghs.google.com。
 _xmpp-server._tcp.sync.iadmin.vip。  IN SRV 5 0 5269 xmpp-server.l.google.com。
 _xmpp-server._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server1.l.google.com。
 _xmpp-server._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server2.l.google.com。
 _xmpp-server._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server3.l.google.com。
 _xmpp-server._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server4.l.google.com。
 _jabber._tcp.sync.iadmin.vip。  IN SRV 5 0 5269 xmpp-server.l.google.com。
 _jabber._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server1.l.google.com。
 _jabber._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server2.l.google.com。
 _jabber._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server3.l.google.com。
 _jabber._tcp.sync.iadmin.vip。  IN SRV 20 0 5269 xmpp-server4.l.google.com。

また、その後、dns_domainsドメインゾーンのシリアルを変更する必要があることを忘れないでください。

スクリプト


このスクリプトは、iadminに保存されたデータに基づいて、バインド用の構成ファイルを書き込みます(現在はパール上にありますが、将来的にはPythonで書き直される可能性が高い)。
githubに投稿されたソースコード

Source: https://habr.com/ru/post/J111678/


All Articles