Система Автоматической Генерации Настроек Dns-Сервера Bind

В рамках моей работы мне часто приходится создавать DNS-зоны и добавлять или изменять в них записи.

Делать это вручную — довольно кропотливый и сложный процесс: приходится держать синтаксис в голове и не допускать ошибок в мелочах.

В таких случаях лучше всего заставить компьютер выполнить всю работу.

IAdmin — это система, предназначенная для автоматического формирования конфигов Bind на хостинг-сервере и состоящая из базы данных iadmin в базе данных MySQL и скрипта, генерирующего файлы конфигурации на основе данных из базы данных.

Для настройки Bind используются таблицы dns_domains, dns_records, dns_subgmail. Основной скрипт, написанный на Perl, считывает данные из базы данных iadmin и создает файлы конфигурации.

Файлы зон создаются в каталоге /var/cache/bind/.

Там же хранятся и другие файлы зон, не обслуживаемые системой iadmin. Эта же система создает конфиг для Secondary-DNS, который туда и переносится.

Пока скрипт не запустится, все изменения в базе данных НЕ материализуются.



Данные



таблица dns_domains
Таблица состоит из следующих полей и является основной таблицей для настройки DNS-сервера:
  • идентификатор — порядковый номер записи
  • доменное имя — имя домена, зону которого будет поддерживать Bind
  • www — Нужен ли поддомен www (1 — обязательно)
  • FTP — Требуется ли субдомен ftp (1 — обязательно)
  • почта — Требуются ли в зоне записи MX (1 — обязательно)
  • типмай l — определяет шаблон для генерации MX-записей («наш» — будет обслуживаться Postfix, «gmail» — на домене активированы Google Apps).

    Если mail = 0, это поле игнорируется.

    В будущем возможны и другие изменения

  • вторичноедля - Для каких DNS серверов (IP) наш сервер будет вторичным (NULL - мастер)
  • размещенный_он — Запись A: IP-адрес, на котором размещен сайт с этим доменным именем.

  • давать возможность — Активна ли зона (1 – активна).

    В противном случае эта зона не создается.

    Стоит отметить, что если зоне ответить Enable=0, это не удалит ее из службы привязки, но любые настройки через систему iadmin не будут иметь никакого эффекта.

  • сериал — Серийные зоны.

    После любых изменений в этой таблице, либо в dns_records, dns_subgmail значение необходимо увеличить.

    Структура год_месяц_день_edit — так удобно видеть, когда произошла смена зон.

  • владелец — писать NS сервера на английском (1) или стандартном (0)
Например, чтобы добавить англоязычную зону iadmin.vip для сервиса, с почтой gmail и без фтп (хостинг 123.123.4.56), нужно в таблицу прописать следующую строку:
идентификатор доменное имя www FTP почта печатать почту вторичноедля размещенный_он давать возможность сериал владелец
215 iadmin.vip 1 0 1 Gmail НУЛЕВОЙ 123.123.4.56 1 2010082001 1
Эта запись позволит вам сгенерировать файл зоны примерно следующего содержания:
 
 $TTL 86400
 iadmin.vip.     IN      SOA     ns0.english.com. ns1.english.com. (
                 2010082001    ; serial
                 10800           ; refresh
                 3600            ; retry
                 604800          ; expire
                 86400 )         ; minimum
                 IN      NS      ns0.english.com.
                 IN      NS      ns1.english.com.
                 IN      A       123.123.4.56
 ;                IN      MX      1 relay.iadmin.vip.
 ;relay           IN      A       77.88.99.11
                 IN      MX      1 ASPMX.L.GOOGLE.COM.
                 IN      MX      5 ALT1.ASPMX.L.GOOGLE.COM.
                 IN      MX      5 ALT2.ASPMX.L.GOOGLE.COM.
                 IN      MX      10 ASPMX2.GOOGLEMAIL.COM.
                 IN      MX      10 ASPMX3.GOOGLEMAIL.COM.
                 IN      MX      10 ASPMX4.GOOGLEMAIL.COM.
                 IN      MX      10 ASPMX5.GOOGLEMAIL.COM.
                 IN      TXT     "v=spf1 include:aspmx.googlemail.com ~all"
 mail            IN      CNAME   ghs.google.com.
 calendar        IN      CNAME   ghs.google.com.
 start           IN      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.
 ww              IN      CNAME   iadmin.vip.
 wwww            IN      CNAME   iadmin.vip.
 


таблица dns_records
Таблица используется для добавления произвольных записей в зону и состоит из следующих полей:
  • доменное имя — Имя доменной зоны, в которую добавляется запись
  • перепечатать — какой тип записи добавляется (A, CNAME, MX, NS и т.д.)
  • данные — Данные, которые добавляются
  • включено — Принимает значение 1 — эта запись будет добавлена и 0 — запись деактивирована.

  • идентификатор — порядковый номер записи (автоматически)
Например, чтобы добавить запись, в которой в доменной зоне iadmin.vip будут сторонние почтовые серверы (не наша почта или gmail), а, скажем, реле.

dc.ukrtel.net, нужно написать следующее линия:

доменное имя перепечатать данные включено идентификатор
.

iadmin.vip

МХ 10 реле.

dc.ukrtel.net.

1 680
Надо помнить, что после этого нам нужно увеличить серийник в dns_domains доменной зоны.



таблица dns_subgmail
Таблица служит для упрощения написания зон, имеющих несколько поддоменов, с помощью Google Apps и состоит из следующих полей:
  • идентификатор — порядковый номер записи (автоматически)
  • доменное имя — Имя доменной зоны, в которой используется субдомен субдомен
  • субдомен — Субдомен, для которого также требуются Google Apps.
  • давать возможность — Принимает значение 1 — этот поддомен будет добавлен и 0 — запись деактивирована.

Например, чтобы добавить запись, в которой доменная зона iadmin.vip также будет иметь поддомен синхронизации со службой Google Apps, нужно написать следующую строку:
идентификатор доменное имя субдомен давать возможность
56 iadmin.vip синхронизировать 1
Тогда доменная зона будет выглядеть так:
 
 $TTL 86400
 iadmin.vip.     IN      SOA     ns0.english.com. ns1.english.com. (
                 2010082001     ; serial
                 10800           ; refresh
                 3600            ; retry
                 604800          ; expire
                 86400 )         ; minimum
                 IN      NS      ns0.english.com.
                 IN      NS      ns1.english.com.
                 IN      A       77.88.99.11
 ;                IN      MX      1 relay.iadmin.vip.
 ;relay           IN      A       123.123.4.56
                 IN      MX      1 ASPMX.L.GOOGLE.COM.
                 IN      MX      5 ALT1.ASPMX.L.GOOGLE.COM.
                 IN      MX      5 ALT2.ASPMX.L.GOOGLE.COM.
                 IN      MX      10 ASPMX2.GOOGLEMAIL.COM.
                 IN      MX      10 ASPMX3.GOOGLEMAIL.COM.
                 IN      MX      10 ASPMX4.GOOGLEMAIL.COM.
                 IN      MX      10 ASPMX5.GOOGLEMAIL.COM.
                 IN      TXT     "v=spf1 include:aspmx.googlemail.com ~all"
 mail            IN      CNAME   ghs.google.com.
 calendar        IN      CNAME   ghs.google.com.
 start           IN      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.
 ww              IN      CNAME   iadmin.vip.
 wwww            IN      CNAME   iadmin.vip.
 sync               IN      MX      1 ASPMX.L.GOOGLE.COM.
 sync               IN      MX      5 ALT1.ASPMX.L.GOOGLE.COM.
 sync                IN      MX      5 ALT2.ASPMX.L.GOOGLE.COM.
 sync                IN      MX      10 ASPMX2.GOOGLEMAIL.COM.
 sync                IN      MX      10 ASPMX3.GOOGLEMAIL.COM.
 sync                IN      MX      10 ASPMX4.GOOGLEMAIL.COM.
 sync                IN      MX      10 ASPMX5.GOOGLEMAIL.COM.
 sync                IN      TXT     "v=spf1 include:aspmx.googlemail.com ~all"
 mail.sync           IN      CNAME   ghs.google.com.
 calendar.sync        IN      CNAME   ghs.google.com.
 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, записывает файлы конфигурации для бинда (На данный момент он находится на Perl, в будущем скорее всего будет переписан на python).

Исходные тексты размещены на github Теги: #Администрирование сервера #dns #perl #bind #генератор файлов конфигурации

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.