MyDNS установка · 8 min read · Jan 10, 2026
Запуск DNS-сервера на базе MySQL: MyDNS - Страница 2
2 Установите веб-интерфейс для MyDNS
В следующих шагах я предполагаю, что вы используете Debian Sarge; корневая директория Apache по умолчанию в Debian - /var/www, поэтому я установлю веб-интерфейсы здесь. Кроме того, я предполагаю, что имя хоста - ns1.example.com.
2.1 phpMyAdmin
phpMyAdmin был установлен в начале этого руководства ( apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin), поэтому вы должны иметь возможность получить к нему доступ по адресу http://ns1.example.com/phpmyadmin. Затем выберите базу данных mydns, и вы должны увидеть таблицы rr и soa. Посмотрите здесь для объяснения структуры/полей базы данных и т.д.: http://mydns.bboy.net/doc/html/mydns_8.html#SEC8
2.2 Оригинальный веб-интерфейс MyDNS
Чтобы установить оригинальный веб-интерфейс MyDNS (поставляется с исходниками MyDNS, которые должны все еще находиться в директории /tmp), выполните следующее:
cp /tmp/mydns-1.0.0/contrib/admin.php /var/www
Затем отредактируйте /var/www/admin.php и настройте переменные в первой части этого скрипта, например, так:
| /*************************************************************************** CONFIGURABLE OPTIONS ***************************************************************************/ /* Установите следующие четыре переменные на имя хоста вашего SQL-сервера, имя пользователя и пароль, используемые для доступа к этому серверу, и имя базы данных, ** в которой находятся ваши данные MyDNS. */ $dbhost = "localhost"; $dbuser = "mydns"; $dbpass = "mydns_password"; $dbname = "mydns"; /* Этот скрипт по умолчанию использует MySQL. Чтобы использовать PostgreSQL вместо этого, установите '$use_pgsql' в '1'. */ $use_pgsql = 0; /* Следующие две переменные сообщают этому скрипту имя вашей таблицы SOA и имя вашей таблицы RR. */ $soa_table_name = "soa"; $rr_table_name = "rr"; /* Следующие два значения настраивают количество записей, отображаемых на странице в браузере зон и редакторе ресурсных записей соответственно. */ $zone_group_size = 25; $rr_group_size = 20; /* Этот скрипт может автоматически обновлять серийный номер для зоны всякий раз, когда клиент изменяет любую запись в этой зоне. ** Установка '$auto_update_serial' в '1' включит эту опцию. */ $auto_update_serial = 1; /* Этот скрипт может автоматически обновлять PTR-записи, когда вы изменяете, добавляете или удаляете A-записи. Чтобы включить эту функциональность, установите '$auto_update_ptr' в '1'. Если вы включите это, обязательно заполните значения для '$default_ns' и '$default_mbox' ниже, чтобы ** новые SOA-записи имели правильную информацию. */ $auto_update_ptr = 1; /* Если эта опция ненулевая, этот скрипт не будет жаловаться, если TTL для записи установлен ниже минимального значения зоны. Обратите внимание, что если $ttl_min ниже ненулевое, это значение все равно будет ** проверяться. */ $ignore_minimum_ttl = 1; /* Следующие значения используются этим скриптом для обеспечения минимальных значений для SOA и RR записей. Скрипт предотвратит ввод клиентами ** значений ниже этих чисел. */ $ttl_min = 300; $refresh_min = 300; $retry_min = 300; $expire_min = 86400; /* Следующие две переменные указывают на сервер имен по умолчанию для новых SOA записей и почтовый ящик администратора по умолчанию для новых SOA записей. ** Эти значения будут автоматически заполнены всякий раз, когда создается новая зона. */ $default_ns = "ns1.example.com."; $default_mbox = "admin.example.com."; /* Следующий массив указывает на записи по умолчанию для новых SOA записей. Эти записи автоматически вставляются всякий раз, когда вставляется SOA. ** Формат каждой записи - (имя, тип, aux, данные). */ $default_records = array( array("", "NS", 0, "ns1.example.com."), /* array("", "MX", 10, "mail.example.com.") */ ); /* Следующие пять значений будут использоваться как значения по умолчанию всякий раз, когда создаются новые зоны. */ $default_ttl = 86400; $default_refresh = 28800; $default_retry = 7200; $default_expire = 604800; $default_minimum_ttl = 86400; /* ** Остальные переменные позволяют косметические изменения. */ $fontsize = 12; /* Размер шрифта по умолчанию (пиксели) */ $font_color = "#663300"; /* Цвет шрифта */ $page_bgcolor = "white"; /* Цвет фона страницы */ $help_bgcolor = "#FFFFCC"; /* Цвет фона основного экрана помощи */ $soa_bgcolor = "#FFFF99"; /* Цвет фона редактора SOA */ $list_bgcolor_1 = "#FFFFCC"; /* Цвет фона элементов списка #1 */ $list_bgcolor_2 = "#FFFFAA"; /* Цвет фона элементов списка #2 */ $query_bgcolor = "#FFFFCC"; /* Цвет фона ввода поискового запроса */ $query_fgcolor = "black"; /* Цвет шрифта ввода поискового запроса */ $input_bgcolor = "white"; /* Цвет фона текстового поля ввода */ $input_fgcolor = "black"; /* Цвет шрифта текстового поля ввода */ /** Конец настраиваемых опций *****************************************/ |
Убедитесь, что вы заполнили правильные данные базы данных. В дополнение к этому я установил $auto_update_serial и $auto_update_ptr в 1 и указал значения в $default_ns и $default_mbox, чтобы серийные номера автоматически увеличивались в случае изменений, а PTR записи также создавались автоматически. Но, конечно, это зависит от вас, хотите ли вы такое поведение.
Теперь вы можете получить доступ к веб-интерфейсу по адресу http://ns1.example.com/admin.php.
2.3 Установите MyDNSConfig
MyDNSConfig - это интерфейс, написанный мной на PHP. Я обнаружил, что оригинальный веб-интерфейс MyDNS трудно использовать для новичков, потому что в нем нет описаний полей (с ним легко управлять, если вы приходите из мира Bind, благодаря дизайну интерфейса, который напоминает файлы зон Bind).
Вы можете скачать MyDNSConfig с http://www.mydnsconfig.org.
Теперь предположим, что вы скачали mydnsconfig-
cd /tmp
tar xvfz mydnsconfig-
cd mydnsconfig
cp -fr
Затем вам нужно отредактировать /var/www/lib/config.inc.php. Мой файл выглядит так:
| |
Убедитесь, что вы заполнили правильные данные базы данных! Если вы хотите, чтобы MyDNSConfig автоматически создавал обратные DNS-записи ( PTR записи) при создании новых DNS-записей, установите $conf[‘auto_create_ptr’] в 1 и укажите сервер имен по умолчанию в $conf[‘default_ns’] (не забудьте точку в конце!) и адрес электронной почты администратора в $conf[‘default_mbox’] (также с точкой в конце, и знак @ должен быть заменен на точку!).
Далее нам нужно изменить таблицы rr и soa в базе данных mydns и создать новую таблицу, необходимую для MyDNSConfig:
mysql -u root -p
Введите пароль:
Используйте mydns;
ALTER TABLE rr ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;
ALTER TABLE soa ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;
CREATE TABLE sys_user (userid int(11) NOT NULL auto_increment,sys_userid int(11) NOT NULL default ‘0’,sys_groupid int(11) NOT NULL default ‘0’,sys_perm_user varchar(5) NOT NULL default ‘’,sys_perm_group varchar(5) NOT NULL default ‘’,sys_perm_other varchar(5) NOT NULL default ‘’,username varchar(100) NOT NULL default ‘’,passwort varchar(100) NOT NULL default ‘’,modules varchar(255) NOT NULL default ‘’,startmodule varchar(255) NOT NULL default ‘’,app_theme varchar(100) NOT NULL default ‘default’,typ varchar(20) NOT NULL default ‘user’,active tinyint(4) NOT NULL default ‘1’,name varchar(100) NOT NULL default ‘’,vorname varchar(100) NOT NULL default ‘’,unternehmen varchar(100) NOT NULL default ‘’,strasse varchar(100) NOT NULL default ‘’,ort varchar(100) NOT NULL default ‘’,plz varchar(10) NOT NULL default ‘’,land varchar(50) NOT NULL default ‘’,email varchar(100) NOT NULL default ‘’,url varchar(255) NOT NULL default ‘’,telefon varchar(100) NOT NULL default ‘’,fax varchar(100) NOT NULL default ‘’,language varchar(10) NOT NULL default ‘de’,groups varchar(255) NOT NULL default ‘’,default_group int(11) NOT NULL default ‘0’,
PRIMARY KEY (userid)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
INSERT INTO sys_user (userid, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, username, passwort, modules, startmodule, app_theme, typ, active, name, vorname, unternehmen, strasse, ort, plz, land, email, url, telefon, fax, language, groups, default_group) VALUES (1, 1, 0, ‘riud’, ‘riud’, ‘’, ‘admin’, ‘21232f297a57a5a743894a0e4a801fc3’, ‘admin,designer,resellers,sites,dns’, ‘dns’, ‘default’, ‘admin’, 1, ‘’, ‘Administrator’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘en’, ‘1,2’, 1);
quit;
Теперь вы можете получить доступ к MyDNSConfig по адресу http://ns1.example.com. Имя пользователя по умолчанию для входа - admin, пароль также admin. Пожалуйста, измените пароль после первого входа в систему в разделе Система -> Изменить пользователя.
2.4 Используйте dig для тестирования ваших записей
После того как вы создали DNS-записи с помощью одного из трех веб-интерфейсов, которые я описал здесь, вы можете протестировать ваши записи, используя dig. Предположим, что вы создали зону test.com. (с точкой в конце!) с A-записью www. Когда вы выполните команду
dig @localhost www.test.com
вывод должен выглядеть примерно так:
| :~# dig @localhost www.test.com ; <> DiG 9.2.4 <> @localhost www.test.com ;; глобальные параметры: printcmd ;; Получен ответ: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12658 ;; флаги: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; СЕКЦИЯ ВОПРОСА: ;www.test.com. IN A ;; СЕКЦИЯ ОТВЕТА: www.test.com. 86400 IN A 1.2.3.4 ;; Время запроса: 20 мс ;; СЕРВЕР: 1.2.3.4#53(localhost) ;; КОГДА: Пт Дек 16 14:14:19 2005 ;; РАЗМЕР СООБЩЕНИЯ, полученного: 45 |
Если вы включили автоматическое создание PTR записей в оригинальном веб-интерфейсе MyDNS или в MyDNSConfig, вы также можете проверить обратную DNS-запись. Если www.test.com указывает на 1.2.3.4, тогда
dig @localhost -x 1.2.3.4
должен показать что-то вроде этого:
| ~# dig @localhost -x 1.2.3.4 ; <> DiG 9.2.4 <> @localhost -x 1.2.3.4 ;; глобальные параметры: printcmd ;; Получен ответ: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46572 ;; флаги: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; СЕКЦИЯ ВОПРОСА: ;4.3.2.1.in-addr.arpa. IN PTR ;; СЕКЦИЯ ОТВЕТА: 4.3.2.1.in-addr.arpa. 86400 IN PTR www.test.com. ;; Время запроса: 15 мс ;; СЕРВЕР: 1.2.3.4#53(localhost) ;; КОГДА: Пт Дек 16 14:21:05 2005 ;; РАЗМЕР СООБЩЕНИЯ, полученного: 69 |
Get new posts in your inbox
No spam. Unsubscribe anytime.