MyDNS Server · 9 min read · Jan 10, 2026

Ejecutando un servidor DNS basado en MySQL: MyDNS - Página 2

2 Instalar una interfaz web para MyDNS

En los siguientes pasos asumo que usas Debian Sarge; la raíz del documento de Apache por defecto de Debian es /var/www así que instalaré las interfaces web aquí. Además, asumo que el nombre del host es ns1.example.com.

2.1 phpMyAdmin

phpMyAdmin ha sido instalado al comienzo de este tutorial ( apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin), así que deberías poder acceder a él en http://ns1.example.com/phpmyadmin. Luego selecciona la base de datos mydns, y deberías ver las tablas rr y soa. Echa un vistazo aquí para una explicación de la estructura/campos de la base de datos, etc.: http://mydns.bboy.net/doc/html/mydns_8.html#SEC8

2.2 La interfaz web original de MyDNS

Para instalar la interfaz web original de MyDNS (viene con las fuentes de MyDNS que deberían seguir en el directorio /tmp), haz esto:

cp /tmp/mydns-1.0.0/contrib/admin.php /var/www

Luego edita /var/www/admin.php y configura las variables en la primera parte de ese script, por ejemplo así:

| /*************************************************************************** OPCIONES CONFIGURABLES ***************************************************************************/ /* Establece las siguientes cuatro variables al nombre de host de tu servidor SQL, el nombre de usuario y la contraseña utilizados para acceder a ese servidor, y el nombre de la ** base de datos donde residen tus datos de MyDNS. */ $dbhost = "localhost"; $dbuser = "mydns"; $dbpass = "mydns_password"; $dbname = "mydns"; /* Este script utiliza MySQL por defecto. Para usar PostgreSQL en su lugar, establece '$use_pgsql' a '1'. */ $use_pgsql = 0; /* Las siguientes dos variables le dicen a este script el nombre de tu tabla SOA y el nombre de tu tabla RR. */ $soa_table_name = "soa"; $rr_table_name = "rr"; /* Los siguientes dos valores configuran el número de registros mostrados por página en el navegador de zonas y el editor de registros de recursos, respectivamente. */ $zone_group_size = 25; $rr_group_size = 20; /* Este script puede actualizar automáticamente el número de serie para una zona cada vez que un cliente modifica cualquier registro en esa zona. ** Establecer '$auto_update_serial' a '1' habilitará esta opción. */ $auto_update_serial = 1; /* Este script puede actualizar automáticamente los registros PTR cuando modificas, agregas o eliminas registros A. Para habilitar esta funcionalidad, establece '$auto_update_ptr' a '1'. Si habilitas esto, asegúrate de llenar los valores para '$default_ns' y '$default_mbox', a continuación, para que ** los nuevos registros SOA tengan la información correcta. */ $auto_update_ptr = 1; /* Si esta opción es diferente de cero, este script no se quejará si el TTL para un registro se establece por debajo del mínimo de la zona. Ten en cuenta que si $ttl_min a continuación es diferente de cero, ese valor aún será ** verificado. */ $ignore_minimum_ttl = 1; /* Los siguientes valores son utilizados por este script para hacer cumplir valores mínimos para registros SOA y RR. El script evitará que los clientes ingresen ** valores inferiores a estos números. */ $ttl_min = 300; $refresh_min = 300; $retry_min = 300; $expire_min = 86400; /* Las siguientes dos variables especifican el servidor de nombres por defecto para nuevos registros SOA, y el buzón de administrador por defecto para nuevos registros SOA. ** Estos se llenarán automáticamente cada vez que se cree una nueva zona. */ $default_ns = "ns1.example.com."; $default_mbox = "admin.example.com."; /* El siguiente array especifica registros por defecto para nuevos registros SOA. Estos se insertan automáticamente cada vez que se inserta un SOA. ** El formato de cada registro es (nombre, tipo, aux, datos). */ $default_records = array( array("", "NS", 0, "ns1.example.com."), /* array("", "MX", 10, "mail.example.com.") */ ); /* Los siguientes cinco valores se utilizarán como valores por defecto cada vez que se creen nuevas zonas. */ $default_ttl = 86400; $default_refresh = 28800; $default_retry = 7200; $default_expire = 604800; $default_minimum_ttl = 86400; /* ** El resto de estas variables habilitan cambios estéticos. */ $fontsize = 12; /* Tamaño de fuente por defecto (píxeles) */ $font_color = "#663300"; /* Color de fuente */ $page_bgcolor = "white"; /* Color de fondo de la página */ $help_bgcolor = "#FFFFCC"; /* Color de fondo del cuadro de ayuda de la pantalla principal */ $soa_bgcolor = "#FFFF99"; /* Color de fondo del editor SOA */ $list_bgcolor_1 = "#FFFFCC"; /* Color de fondo de los elementos de lista #1 */ $list_bgcolor_2 = "#FFFFAA"; /* Color de fondo de los elementos de lista #2 */ $query_bgcolor = "#FFFFCC"; /* Color de fondo de la entrada de consulta de búsqueda */ $query_fgcolor = "black"; /* Color de fuente de la entrada de consulta de búsqueda */ $input_bgcolor = "white"; /* Color de fondo de la caja de entrada de texto */ $input_fgcolor = "black"; /* Color de fuente de la caja de entrada de texto */ /** Fin de opciones configurables *****************************************/ |

Asegúrate de que llenas los detalles correctos de la base de datos. Además de eso, establecí $auto_update_serial y $auto_update_ptr a 1 y especifiqué valores en $default_ns y $default_mbox para que los números de serie se incrementen automáticamente en caso de cambios y los registros PTR también se creen automáticamente. Pero, por supuesto, esto depende de ti si deseas ese comportamiento.

Ahora puedes acceder a la interfaz web en http://ns1.example.com/admin.php.

2.3 Instalar MyDNSConfig

MyDNSConfig es una interfaz escrita por mí usando PHP. Encontré que la interfaz web original de MyDNS es difícil de manejar para los novatos porque no tiene descripciones de campo (es fácil de gestionar si vienes del mundo de Bind, sin embargo, debido al diseño de la interfaz que se asemeja a los archivos de zona de Bind).

Puedes descargar MyDNSConfig desde http://www.mydnsconfig.org.

Ahora supongamos que has descargado mydnsconfig-.tar.gz a /tmp. Luego lo instalas así:

cd /tmp
tar xvfz mydnsconfig-.tar.gz
cd mydnsconfig
cp -fr
/var/www*

Luego debes ajustar /var/www/lib/config.inc.php. El mío se ve así:

| |

¡Asegúrate de llenar los detalles correctos de la base de datos! Si deseas que MyDNSConfig cree automáticamente registros DNS inversos ( registros PTR) cuando creas un nuevo registro DNS, entonces establece $conf[‘auto_create_ptr’] a 1 y especifica un servidor de nombres por defecto en $conf[‘default_ns’] (¡no olvides el punto al final!) y una dirección de correo electrónico de administrador en $conf[‘default_mbox’] (también con un punto al final, y el signo @ debe ser reemplazado por un punto!).

A continuación, debemos cambiar la tabla rr y soa en la base de datos mydns y crear una nueva tabla necesaria para MyDNSConfig:

mysql -u root -p
Introduce la contraseña:

Usa 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, ‘’, ‘Administrador’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘en’, ‘1,2’, 1);

quit;

Ahora puedes acceder a MyDNSConfig en http://ns1.example.com. El nombre de usuario de inicio de sesión por defecto es admin, la contraseña también es admin. Por favor, cambia la contraseña después de tu primer inicio de sesión en Sistema -> Editar usuario.

2.4 Usar dig para probar tus registros

Después de que hayas creado registros DNS usando una de las tres interfaces web que he descrito aquí, puedes probar tus registros usando dig. Supongamos que has creado la zona test.com. (¡con un punto al final!) con el registro A www. Cuando ejecutes

dig @localhost www.test.com

la salida debería verse así:

| :~# dig @localhost www.test.com ; <> DiG 9.2.4 <> @localhost www.test.com ;; opciones globales: printcmd ;; Se obtuvo respuesta: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12658 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; SECCIÓN DE PREGUNTAS: ;www.test.com. IN A ;; SECCIÓN DE RESPUESTA: www.test.com. 86400 IN A 1.2.3.4 ;; Tiempo de consulta: 20 msec ;; SERVIDOR: 1.2.3.4#53(localhost) ;; CUANDO: Vie Dic 16 14:14:19 2005 ;; TAMAÑO MSG recibido: 45 |

Si has habilitado la creación automática de registros PTR en la interfaz web original de MyDNS o en MyDNSConfig, entonces también puedes verificar el registro DNS inverso. Si www.test.com apunta a 1.2.3.4, entonces

dig @localhost -x 1.2.3.4

debiera mostrar algo como esto:

| ~# dig @localhost -x 1.2.3.4 ; <> DiG 9.2.4 <> @localhost -x 1.2.3.4 ;; opciones globales: printcmd ;; Se obtuvo respuesta: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46572 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; SECCIÓN DE PREGUNTAS: ;4.3.2.1.in-addr.arpa. IN PTR ;; SECCIÓN DE RESPUESTA: 4.3.2.1.in-addr.arpa. 86400 IN PTR www.test.com. ;; Tiempo de consulta: 15 msec ;; SERVIDOR: 1.2.3.4#53(localhost) ;; CUANDO: Vie Dic 16 14:21:05 2005 ;; TAMAÑO MSG recibido: 69 |

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.