Ноя 102012
 


Подкинули работенку, установить и настроить dns север для простого обслуживание двух зон.
Не хотелось ставить bind, ибо в данном случаем он будет лишним.
Mydns не рекурсивный DNS сервер.
Ему мы цель определил первичным быть.
Так как нужно было только считывать данные, без добавления.
Нашел простенький mydns, этот dns сервер читает данные из БД.
Система используется FreeBSD 9.
Нашел краткую по основам инструкцию mydns.
Приступим к установки.

# cd /usr/ports/dns/mydns && make install clean

Добавим разрешение на запуск этого сервиса.

# echo 'mydns_enable="YES"' >> /etc/rc.conf

Установили, замечательно, теперь создадим бд.

$ mysql -u root -p
create database BDmydns;
grant all on BDmydns.* to 'Umydns'@'localhost' identified by 'Qq111111';

Где:
BDmydns.* — Бд.
‘Umydns’@’localhost’ — Учетная запись и сервер, то-есть разрешаем пользователю Umydns заходить только с локального хсота. Если же нам нужно указать, что пользователь будет авторизироватся с других хостов то прописываем его вместо localhost. А если проще то укажите % Это означает с любого хоста.
‘Qq111111’ — Пароль к учетной записи.
Осталось только создать таблицы в нашей базе данных.
Выполним команду.

serv0# mydns --create-table
--
--  Table layouts for mydns 1.1.0 (Nov 2012)
--  Copyright (C) 2002-2005 Don Moore
--
--  You might create these tables with a command like:
--
--    $ mydns --create-tables | mysql -hHOST -p -uUSER DATABASE
--
--

--
--  Table structure for table 'soa' (zones of authority)
--
CREATE TABLE IF NOT EXISTS soa (
  id         INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  origin     CHAR(255) NOT NULL,
  ns         CHAR(255) NOT NULL,
  mbox       CHAR(255) NOT NULL,
  serial     INT UNSIGNED NOT NULL default '1',
  refresh    INT UNSIGNED NOT NULL default '28800',
  retry      INT UNSIGNED NOT NULL default '7200',
  expire     INT UNSIGNED NOT NULL default '604800',
  minimum    INT UNSIGNED NOT NULL default '86400',
  ttl        INT UNSIGNED NOT NULL default '86400',
  UNIQUE KEY (origin)
) TYPE=MyISAM;

--
--  Table structure for table 'rr' (resource records)
--
CREATE TABLE IF NOT EXISTS rr (
  id         INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  zone       INT UNSIGNED NOT NULL,
  name       CHAR(64) NOT NULL,
  type       ENUM('A','AAAA','CNAME','HINFO','MX','NAPTR','NS','PTR','RP','SRV','TXT'),
  data       CHAR(128) NOT NULL,
  aux        INT UNSIGNED NOT NULL,
  ttl        INT UNSIGNED NOT NULL default '86400',
  UNIQUE KEY rr (zone,name,type,data)
) TYPE=MyISAM;

serv0#

Видим две таблицы.
Их нужно добавить к нашей базе.
Но у меня при добавлении этих таблиц произошел конфуз, из за параметра TYPE=MyISAM;, по копавшись понял нужно изменить на Engine=MyISAM;.
Продолжаем, таблицы созданы.
Теперь перейдем к самой настройке.
Конфигурационный файл mydns почти стандартный, пару изменений внес.

# nano /usr/local/etc/mydns.conf
                                # DATABASE INFORMATION
db-host = localhost             # SQL server hostname
db-user = Umydns                  # SQL server username
db-password = Qq111111  # SQL server password
database = BDmydns                # MyDNS database name
                                # GENERAL OPTIONS
user = nobody                   # Run with the permissions of this user
group = nobody                  # Run with the permissions of this group
listen = IP сервера укажим тут         # Listen on these addresses ('*' for all)
no-listen =                     # Do not listen on these addresses
                                # CACHE OPTIONS
zone-cache-size = 1024          # Maximum number of elements stored in the zone cache
zone-cache-expire = 60          # Number of seconds after which cached zones expires
reply-cache-size = 1024         # Maximum number of elements stored in the reply cache
reply-cache-expire = 30         # Number of seconds after which cached replies expire
                                # ESOTERICA
log = LOG_DAEMON                # Facility to use for program output (LOG_*/stdout/stderr)
pidfile = /var/run/mydns.pid    # Path to PID file
timeout = 120                   # Number of seconds after which queries time out
multicpu = 1                    # Number of CPUs installed on your system
recursive =                    # Location of recursive resolver
allow-axfr = no                 # Should AXFR be enabled?
allow-tcp = no                  # Should TCP be enabled?
allow-update = no               # Should DNS UPDATE be enabled?
ignore-minimum = no             # Ignore minimum TTL for zone?
soa-table = soa                 # Name of table containing SOA records
rr-table = rr                   # Name of table containing RR data
notify-enabled = no             # Enable notify from updates
notify-source = 0.0.0.0         # Source address for ipv4 notify messages
notify-source6 = 0.0.0.0        # Source address for ipv6 notify messages
soa-where =                     # Extra WHERE clause for SOA queries
rr-where =                      # Extra WHERE clause for RR queries

Думаю в настройки описывать лишним будет.
В этом файле и так все понятно, расписано.
Осталось только запустить сервис.

# service mydns start

Дальше заполняем наши таблицы данными.
У меня данные дампяться со второго днс севера.
Скрипт.

# cat /root/scripts/sh/dump_mydns_94.sh
#!/bin/sh
/usr/local/bin/mysqldump --host=24.75.121.51 --user=root --password=Mysql mydns > "/root/mydns.sql" && \
/usr/local/bin/mysql -uUmydns -pQq111111 BDmydns < "/root/mydns.sql"

Вот и все.

 Leave a Reply

(required)

(required)

36 Запросов к базе. 0,351 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.198.210.67