Configurar Directorio Activo (Active Directory) en GNU/Linux CentOS 6.3 con Samba 4.0.1
By: Date: enero 19, 2013 Categories: Consultoria y Manuales

Existió un tiempo en el que poner un servidor de dominio en Windows era algo muy sencillo, emular un Windows NT4 era la cosa más simple del mundo y firmar computadoras con Windows 95 , Windows 98 y Windows ME era simple rápido y fácil. Si no querías pagar las licencias impuestas siempre podías instalar un GNU/Linux con Samba y evitar usar tecnologías de SERVER Microsoft.

Ocurrió que por el 2000 Microsoft cambio las reglas del juego, con el Windows XP y Windows 2000 Server se hizo una integración llamada Directorio Activo, donde ya no solo era un servidor controlador de dominio, sino un sistema formado por el PDC, Listas en directorios (Protocolo Ligero de Acceso a Directorios) Aka LDAP y para rematar un DNS Server. Son más cosas pero esas 3 básicas forman en si el Directorio Activo y en los primeros días era horrible homologar un GNU/Linux a un Servidor Windows 2000, 2003 y 2008 para entrar al mundo del Active Directory. No porque no se pueda, si no por que intentarlo es abrumador llevar a cabo todas las configuraciones necesarias.

Afortunadamente la versión 4.0.0 de Samba hace que esto sea un poco mas sencillo y ahora si me da un artículo para dar los pasos necesarios para convertir tu equipo GNU/Linux en un servidor de dominio con rol de PDC/AD aka (Controlador Primario de Dominio con Directorio Activo)

Los siguientes pasos los hice con un CentOS 6.3 a 64 bits y SAMBA 4.0.1 descargado de su sitio oficial en código fuente para su compilación en el equipo.

1.0 Instalar GNU/Linux 6.3 a 64bits

2.0 Preparar el sistema.

2.1 Deshabilitar SELinux, desactivar los firewall y quitar toda regla iptables filter

2.2 Instalar los paquetes y herramientas necesarias con yum, con darle copiar y pegar a la siguiente línea bastara.

yum -y install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation bind bind-libs bind-utils

2.3 Descargar Samba 4.0.X o superior, al momento de redactor este articulo estaba la versión 4.0.1 y la obtuve del siguiente URL

http://www.samba.org/samba/ftp/stable/samba-4.0.1.tar.gz

2.3.1 Preparar el Makefile para compilarlo usando configure y la bandera –enable-selftest.

./configure –enable-selftest

Nota que no doy prefix, dejo que se instale en su ruta por default.

2.4 Crear el smb.conf usando el comando samba-tool, se encuentra /usr/local/samba/bin/ que es el lugar donde estarán los binarios de SAMBA después de la compilación e instalación. En este articulo usare lastdragon como dominio de red y lastdragon.net dominio de directorio activo.
La línea a usar es:

/usr/local/samba/bin/samba-tool domain provision –realm=lastdragon.net –domain=lastdragon –adminpass ‘C@ntraseña1#’ –server-role=dc –dns-backend=BIND9_DLZ

Nota que el parámetro de adminpass es seguido por la contraseña de administrador entre apostrofes, esta contraseña se le asignara al usuario Administrator, usuario que usaras para unir las maquinas con Windows al dominio, la contraseña debe tener obligatoriamente una mayúscula, un numero, un símbolo y al menos 6 caracteres de largo. El nombre de dominio debe ser diferente al HOSTNAME (Nombre) de tu maquina GNU/Linux. Cuando este comando termine de ejecutarse creara el archivo smb.conf en la ruta /usr/local/samba/etc/.

El smb.conf se crea solo y se auto configura, salvo quieras editarlo para compartir alguna carpeta en red. Si no vas a compartir nada puedes dejarlo como te lo entrega el samba-tool y será funcional para el propósito de Active Directory

El contenido del archivo será muy similar a:

[global]
workgroup = lastdragon
realm = lastdragon.net
netbios name = HOSTNAME
server role = active directory domain controller
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate

[netlogon]
path = /usr/local/samba/var/locks/sysvol/adevya.com/scripts
read only = No

[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No

3.0 Configurando el servicio de DNS Server

3.1 generar la llave

rndc-confgen -a -r /dev/urandom

3.2 editar named.conf en /etc,
El contenido de /etc/named.conf debe ser:

options {
listen-on port 53 { any; };
forwarders {192.168.1.1; };
allow-query { any; };
tkey-gssapi-keytab “/usr/local/samba/private/dns.keytab”;
};
include “/usr/local/samba/private/named.conf”;

nota la ip en forwarders escribo la ip de mi GNU/Linux en este caso es 192.168.1.1

3.2.1 Edita el archivo named.conf en /usr/local/samba/private/

El contenido del archivo /usr/local/samba/private/named.conf debe ser:

# This DNS configuration is for BIND 9.8.0 or later with dlz_dlopen support.
#
# This file should be included in your main BIND configuration file
#
# For example with
# include “/usr/local/samba/private/named.conf”;

#
# This configures dynamically loadable zones (DLZ) from AD schema
# Uncomment only single database line, depending on your BIND version
#
dlz “AD DNS Zone” {
# For BIND 9.8.0
database “dlopen /usr/local/samba/lib/bind9/dlz_bind9.so”;

# For BIND 9.9.0
# database “dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so”;
};

3.3 edita resolv.con en /etc

El contenido de /etc/resolv.conf debe ser:

nameserver 127.0.0.1
domain lastdragon.net

Nota la línea de domain, ahí va el dominio de directorio activo que usaras en tu red, yo uso lastdragon.net como lo especifique en el paso 2.4

4.0 Configurando Kerberos

4.1 Editando el archivo krb5.conf en /etc
El contenido del archivo /etc/krb5.conf debe ser:
/etc/krb5.conf

[libdefaults]
default_realm = LASTDRAGON.NET
dns_lookup_realm = false
dns_lookup_kdc = true

Nota la línea de default_realm es LASTDRAGON.NET como lo especifique en el paso 2.4 y le hice de nuevo mención en el paso 3.3

5.0 Instalar NTP
Si abres tu archivo smb.conf que se genero con samba-tool en la línea de servicios encontraras una referencia de ntp_signd, esta característica no la tiene el ntp que incluye la instalación de CentOS por lo que como en samba; habrá que descargar ntp y compilarlo asegurándonos que tenga signd

Yo descargue la versión ntp-4.2.6p5 con el siguiente URL

http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz

5.1 Compilando ntp
al igual que con SAMBA para preparar el Makefile usamos ./configure pero con la bandera que nos interesa, la de signd usando la línea.

./configure –enable-ntp-signd

Nota que no uso prefix, permito que se instale en sus directorios por default.

5.2 Configurando NTP el archivo ntp.conf en /etc

El contenido de /etc/ntp.conf debe ser

server 127.127.1.0
fudge 127.127.1.0 stratum 10
server 0.pool.ntp.org iburst prefer
server 1.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery

6.0 Aplicando los permisos finales a los archives de configuración con las líneas.

chown named:named /usr/local/samba/private/dns
chown named:named /usr/local/samba/private/dns.keytab
chmod 775 /usr/local/samba/private/dns

Felicidades hasta aquí ya tienes un servidor de directorio activo, pero recuerda que el samba y el ntp fueron compilados y al no venir en los paquetes RPM de la distribución no están aun reconocidos como servicios del sistema y no arrancaran por si solos, tampoco tendrán un apagado correcto cuando quieras reiniciar o apagar tu servidor. A continuación pondré como integrar samba y ntp como servicios en el sistema operativo.

6.1 Crear el archivo samba en /etc/init.d/

El contenido de /etc/init.d/samba debe ser.

#! /bin/bash
#
# samba4 Bring up/down samba4 service
#
# chkconfig: – 90 10
# description: Activates/Deactivates all samba4 interfaces configured to \
# start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions

if [ -f /etc/sysconfig/samba4 ]; then
. /etc/sysconfig/samba4
fi

CWD=$(pwd)
prog=”samba4″

start() {
# Attach irda device
echo -n $”Starting $prog: ”
/usr/local/samba/sbin/samba
sleep 2
if ps ax | grep -v “grep” | grep -q /samba/sbin/samba ; then success $”samba4 startup”; else failure $”samba4 startup”; fi
echo
}
stop() {
# Stop service.
echo -n $”Shutting down $prog: ”
killall samba
sleep 2
if ps ax | grep -v “grep” | grep -q /samba/sbin/samba ; then failure $”samba4 shutdown”; else success $”samba4 shutdown”; fi
echo
}
status() {
/usr/local/samba/sbin/samba –show-build
}

# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
status)
status irattach
;;
restart|reload)
stop
start
;;
*)
echo $”Usage: $0 {start|stop|restart|status}”
exit 1
esac

exit 0

6.2 Crear el archivo ntp en /etc/init.d/

El contenido de /etc/init.d/ntp debe ser

#! /bin/bash
#
# ntp Bring up/down ntp service
#
#chkconfig: – 99 30
#description: Bring up/down ntp
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down ntp
# Description: Bring up/down ntp
### END INIT INFO
# Source function library.
. /etc/init.d/functions

CWD=$(pwd)
NTPD=/usr/local/bin/ntpd
prog=”ntp”
start() {
# Attach irda device
echo -n $”Starting $prog: ”
$NTPD -p /var/run/ntpd.pid
sleep 2
if ps ax | grep -v “grep” | grep -q $NTPD ; then success $”ntp startup”; else failure $”ntp startup”; fi
echo
}
stop() {
# Stop service.
echo -n $”Shutting down $prog: ”
kill -9 `cat /var/run/ntpd.pid` > /dev/null 2>&1
sleep 2
if ps ax | grep -v “grep” | grep -q $NTPD ; then failure $”ntp shutdown”; else success $”ntp shutdown”; fi
echo
}
# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo $”Usage: $0 {start|stop|restart}”
exit 1
esac
exit 0

6.3 Darles permiso de ejecución

chmod +x /etc/init.d/ntp
chmod +x /etc/init.d/samba

6.4 Con la siguiente secuencia de arranque puedes activar el servicio

/etc/init.d/named start
/etc/init.d/ntp start
/etc/init.d/samba start

Pero si quieres que inicien sin intervención cuando inicie tu servidor ejecuta las siguientes líneas.

chkconfig –levels 35 samba on
chkconfig –levels 35 ntp on
chkconfig –levels 35 named on

7.0 Administrando usuarios en el directorio activo.

Puedes usar el comando smbpass, yo uso pdbedit

Con pdbedit –L puedes listar todos los usuarios registrados en el directorio, tanto usuarios de computadoras, como usuarios humanos. Consulta la ayuda de pdbedit para ver cómo crear, editar o borrar usuarios.

Yo probé uniendo a mi dominio una maquina con Windows 7, no tenia mas equipos a la mano, pero si se une una Windows 7, igual se une un Windows Vista y anteriores. Me falta probar si se une Windows 8 aunque seguramente si se unirá a dominio. El usuario para unir las maquinas a dominio es Administrator, la contraseña es la que se puso en la línea de comando del paso 2.4

Aunque parecen muchos pasos, el 90% de la configuración se resuelve dándole copiar y pegar, solo hay que cambiar donde escribo lastdragon.net, lastdragon y la clave del Administrator

24 thoughts on “Configurar Directorio Activo (Active Directory) en GNU/Linux CentOS 6.3 con Samba 4.0.1

  1. Mozilla Firefox 18.0 Ubuntu Linux

    Muy interesante, no esta por demas saber algo como esto.
    Actualmente estoy usando ubuntu y me gustaria saber si podrias poner como poder compilar el kernel, ya que eh leido las ventajas que esto tiene.
    Saludos desde Colima last.

  2. Google Chrome 24.0.1312.57 Linux

    me da error el include cuando reinicio el servicio named dice /etc/named.conf:8 open: /usr/local/samba/private/named.conf: file not found

  3. Internet Explorer 9.0 Windows 7

    Jose Gabriel

    Tienes razon olvide poner el contenido de ese archivo, edite el articulo y anexe el paso 3.2.1

    Relee el articulo y busca el paso 3.2.1 Edita el archivo named.conf en /usr/local/samba/private/

  4. Google Chrome 24.0.1312.57 Linux

    Como quiera sigue el mismo error el archivo no existe cuando voy hacia esa ruta de verdad no existe solo habia uno que se llamaba named.conf.update entoces lo que hice fue que lo cree el archivo /usr/local/samba/private/named.conf y copie lo que pusiste y como quiera cuando reinicio el servicio me da el mismo error

  5. Mozilla Firefox 18.0 Ubuntu Linux

    Jose, por supuesto que el archivo no existe, CREALO tu mismo, puedes usar un editor de texto o lo mas básico, ejecuta el siguiente comando

    touch /usr/local/samba/private/named.conf

    Esto es por que la configuración no es natural del sistema, hacemos que un sistema GNU/Linux se comporte como un PDC con AD,

  6. Google Chrome 24.0.1312.68 Linux

    hey si eso lo se que tenia que crearlo y eso hice como te apunte en el ultimo coment y copie y pegue lo que pusiste en el archivo normal y cuando voy y lo reinicio da el mismo error lo has probado??

  7. Google Chrome 24.0.1312.68 Linux

    hey gracias por tus respuestas y demas yo lo eh hecho ya el samba pero con la version 4.0.0 y me salia perfecto estaba el archivo ya creado osea el /usr/local/samba/private/named.conf entonces lo estoy haciendo de nuevo pero con la nueva version 4.0.2 de samba y cuando llego a ese paso es que me da ese error el cual te comente y eh buscado en internet y nada y ya habia hecho el paso anterior el de crear el archivo en la ruta y lo hice y cuando reinicio me da el mismo error

  8. Google Chrome 25.0.1364.172 Windows 7

    lastdragon, y una vez creado el AD en linux, has probado si se puede aplicar reglas o politicas de tipo GPO y administrarlas estas desde la consola de administracion del AD instalada en mi estacion windows7? yo lo he probado con una distribución ya preparada para este caso se llama SerNet Samba 4 y si funciona, me gustaria saber si tu instalacion cumple las mismas funciones. Saludos

  9. Mozilla Firefox 20.0 Ubuntu Linux

    Hola admin, tengo una duda, soy novatillo en esto y no entiendo muy bien el punto 2.3.1 y el 2.4, lo que pone es lo que tenemos que escribir tal cual??

  10. Mozilla Firefox 20.0 Ubuntu Linux

    Vale, el punto 2.3.1 ya lo tengo resuelto, pero el el punto 2.4 no se que es lo que tengo que hacer… no existe la ruta…

  11. Google Chrome 29.0.1547.66 Windows 7

    Buena tarde
    Admin, me encuentro realizando el procedimiento paso a paso pero en el punto 2.3.1 al ejecutar el comando me sale el siguiente error.

    Unable to find build target matching –enable-selftest

    Ademas de otros mensajes en amarillo relacionados al test. Mi instalación es Centos 6.3 x64 instalación minima

  12. Mozilla Firefox 24.0 Linux

    Esimado: interesante tu pagina, he seguido cada paso que mencionas, cuando deseo iniciar el servicio named, me sale el siguiente error.

    [root@localhost /]# /etc/init.d/named start
    Iniciando named:
    Error in named configuration:
    /etc/named.conf:14: expected quoted string near ‘“’
    [FALLÓ]

    Estimado dicho archivo en ningun momento lo editado.

    Esperando tu apoyo.
    Muchas Gracias

  13. Mozilla 11.0 Windows 7

    Aveces dependiendo si estas en MacBook en una PC o en GNU/Linux cuando copias al portapales directamente del navegador algunos caracteres no son equivalente y son sustituidos por otros, por ejemplo

    /etc/named.conf:14: expected quoted string near ‘“’ debería ser ” ( comillas dobles ) las que están en el numero 2 del teclado QWERTY, revisa bien que sea ” y no ” a la vista se parecen pero no es lo mismo esto es un carácter ” y esto son 2 caracteres ”

  14. Mozilla Firefox 24.0 Linux

    Estimado : gracias por tu respuesta rapida. Pero el archivo /etc/init.d/named yo no le creado, editado. Solo segui bien tu buena guia y inicie dicho servicio y salio el mensaje.
    Lo que quisiera saber en que linea esta dicho error para solucionar.

    Muchas Gracias por todo.

    Te dejo el script

    #!/bin/bash
    #
    # named This shell script takes care of starting and stopping
    # named (BIND DNS server).
    #
    # chkconfig: – 13 87
    # description: named (BIND) is a Domain Name Server (DNS) \
    # that is used to resolve host names to IP addresses.
    # probe: true

    ### BEGIN INIT INFO
    # Provides: $named
    # Required-Start: $local_fs $network $syslog
    # Required-Stop: $local_fs $network $syslog
    # Default-Start:
    # Default-Stop: 0 1 2 3 4 5 6
    # Short-Description: start|stop|status|restart|try-restart|reload|force-reload DNS server
    # Description: control ISC BIND implementation of DNS server
    ### END INIT INFO

    # Source function library.
    . /etc/rc.d/init.d/functions

    [ -r /etc/sysconfig/named ] && . /etc/sysconfig/named

    RETVAL=0
    export KRB5_KTNAME=${KEYTAB_FILE:-/etc/named.keytab}

    named=’named’
    if [ -x /usr/sbin/named-sdb ]; then
    named=’named-sdb’
    fi

    # Don’t kill named during clean-up
    NAMED_SHUTDOWN_TIMEOUT=${NAMED_SHUTDOWN_TIMEOUT:-25}

    if [ -n “$ROOTDIR” ]; then
    ROOTDIR=`echo $ROOTDIR | sed ‘s#//*#/#g;s#/$##’`;
    rdl=`/usr/bin/readlink $ROOTDIR`;
    if [ -n “$rdl” ]; then
    ROOTDIR=”$rdl”;
    fi;
    fi

    PIDFILE=”/var/run/named/named.pid”

    ROOTDIR_MOUNT=’/etc/named /etc/pki/dnssec-keys /var/named /etc/named.conf
    /etc/named.dnssec.keys /etc/named.rfc1912.zones /etc/rndc.conf /etc/rndc.key
    /usr/lib64/bind /usr/lib/bind /etc/named.iscdlv.key /etc/named.root.key’

    mount_chroot_conf()
    {
    if [ -n “$ROOTDIR” ]; then
    for all in $ROOTDIR_MOUNT; do
    # Skip nonexistant files
    [ -e “$all” ] || continue

    # If mount source is a file
    if ! [ -d “$all” ]; then
    # mount it only if it is not present in chroot or it is empty
    if ! [ -e “$ROOTDIR$all” ] || [ `stat -c’%s’ “$ROOTDIR$all”` -eq 0 ]; then
    touch “$ROOTDIR$all”
    mount –bind “$all” “$ROOTDIR$all”
    fi
    else
    # Mount source is a directory. Mount it only if directory in chroot is
    # empty.
    if [ -e “$all” ] && [ `ls -1A $ROOTDIR$all | wc -l` -eq 0 ]; then
    mount –bind “$all” “$ROOTDIR$all”
    fi
    fi
    done
    fi
    }

    umount_chroot_conf()
    {
    if [ -n “$ROOTDIR” ]; then
    for all in $ROOTDIR_MOUNT; do
    # Check if file is mount target. Do not use /proc/mounts because detecting
    # of modified mounted files can fail.
    if mount | grep -q ‘.* on ‘”$ROOTDIR$all”‘ .*’; then
    umount “$ROOTDIR$all”
    # Remove temporary created files
    [ -f “$all” ] && rm -f “$ROOTDIR$all”
    fi
    done
    fi
    }

    pidofnamed() {
    pidofproc -p “$ROOTDIR/$PIDFILE” “$named”;
    }

    # Check if all what named needs running
    start()
    {
    [ “$EUID” != “0” ] && exit 4

    # Source networking configuration.
    [ -r /etc/sysconfig/network ] && . /etc/sysconfig/network

    # Check that networking is up
    [ “${NETWORKING}” = “no” ] && exit 1

    [ -x /usr/sbin/”$named” ] || exit 5

    if [ ! -s /etc/rndc.key ]; then
    # Generate rndc.key if doesn’t exist
    echo -n $”Generating /etc/rndc.key:”
    if /usr/sbin/rndc-confgen -a > /dev/null 2>&1; then
    chmod 640 /etc/rndc.key
    chown root.named /etc/rndc.key
    [ -x /sbin/restorecon ] && /sbin/restorecon /etc/rndc.key
    success $”/etc/rndc.key generation”
    echo
    else
    failure $”/etc/rndc.key generation”
    echo
    fi
    fi

    # Handle -c option
    previous_option=’unspecified’;
    for a in $OPTIONS; do
    if [ $previous_option = ‘-c’ ]; then
    named_conf=$a;
    fi;
    previous_option=$a;
    done;

    named_conf=${named_conf:-/etc/named.conf};

    mount_chroot_conf

    if [ ! -r $ROOTDIR$named_conf ]; then
    echo ‘Cannot find configuration file. You could create it by system-config-bind’
    exit 6;
    fi;

    [ -x /sbin/portrelease ] && /sbin/portrelease named &>/dev/null || :

    # all pre-start is done, lets start named
    echo -n $”Starting named: ”
    if [ -n “`pidofnamed`” ]; then
    echo -n $”named: already running”
    success
    echo
    exit 0;
    fi;

    if ! [ “$DISABLE_ZONE_CHECKING” = yes ]; then
    ckcf_options=’-z’; # enable named-checkzone for each zone (9.3.1+) !
    fi;

    if [ -n “${ROOTDIR}” -a “x${ROOTDIR}” != “x/” ]; then
    OPTIONS=”${OPTIONS} -t ${ROOTDIR}”
    ckcf_options=”$ckcf_options -t ${ROOTDIR}”;
    [ -s /etc/localtime ] && cp -fp /etc/localtime ${ROOTDIR}/etc/localtime;
    fi

    RETVAL=0
    # check if configuration is correct
    if [ -x /usr/sbin/named-checkconf ] && [ -x /usr/sbin/named-checkzone ] && /usr/sbin/named-checkconf $ckcf_options ${named_conf} >/dev/null 2>&1; then

    daemon –pidfile “$ROOTDIR/$PIDFILE” /usr/sbin/”$named” -u named ${OPTIONS};
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
    rm -f /var/run/{named,named-sdb}.pid;
    ln -s $ROOTDIR/”$PIDFILE” /var/run/”$named”.pid;
    fi;

    else
    named_err=”`/usr/sbin/named-checkconf $ckcf_options $named_conf 2>&1`”;
    echo
    echo “Error in named configuration:”;
    echo “$named_err”;
    failure
    echo
    [ -x /usr/bin/logger ] && echo “$named_err” | /usr/bin/logger -pdaemon.error -tnamed;
    umount_chroot_conf
    exit 2;
    fi;
    echo
    if [ $RETVAL -eq 0 ]; then
    touch /var/lock/subsys/named;
    else
    umount_chroot_conf
    exit 7;
    fi
    return 0;
    }

    stop() {
    [ “$EUID” != “0” ] && exit 4

    # Stop daemons.
    echo -n $”Stopping named: ”
    [ -x /usr/sbin/rndc ] && /usr/sbin/rndc stop >/dev/null 2>&1;
    RETVAL=$?
    # was rndc successful?
    [ “$RETVAL” -eq 0 ] || \
    killproc -p “$ROOTDIR/$PIDFILE” “$named” -TERM >/dev/null 2>&1

    timeout=0
    RETVAL=0
    while pidofnamed &>/dev/null; do
    if [ $timeout -ge $NAMED_SHUTDOWN_TIMEOUT ]; then
    RETVAL=1
    break
    else
    sleep 2 && echo -n “.”
    timeout=$((timeout+2))
    fi;
    done

    umount_chroot_conf

    # remove pid files
    if [ $RETVAL -eq 0 ]; then
    rm -f /var/lock/subsys/named
    rm -f /var/run/{named,named-sdb}.pid
    fi;

    if [ $RETVAL -eq 0 ]; then
    success
    else
    failure
    RETVAL=1
    fi;
    echo
    return $RETVAL
    }

    rhstatus() {
    [ -x /usr/sbin/rndc ] && /usr/sbin/rndc status;
    status -p “$ROOTDIR/$PIDFILE” -l named /usr/sbin/”$named”;
    return $?
    }
    restart() {
    stop
    start
    }
    reload() {
    [ “$EUID” != “0” ] && exit

    echo -n $”Reloading “$named”: ”
    p=`pidofnamed`
    RETVAL=$?
    if [ “$RETVAL” -eq 0 ]; then
    /usr/sbin/rndc reload >/dev/null 2>&1 || /bin/kill -HUP $p;
    RETVAL=$?
    fi
    [ “$RETVAL” -eq 0 ] && success $”$named reload” || failure $”$named reload”
    echo
    return $RETVAL
    }

    checkconfig() {
    ckcf_options=’-z’;
    if [ -n “${ROOTDIR}” -a “x${ROOTDIR}” != “x/” ]; then
    ckcf_options=”$ckcf_options -t ${ROOTDIR}”;
    mount_chroot_conf
    fi;
    if [ -x /usr/sbin/named-checkconf ] && [ -x /usr/sbin/named-checkzone ] && /usr/sbin/named-checkconf $ckcf_options ${named_conf} ; then
    umount_chroot_conf
    return 0;
    else
    umount_chroot_conf
    return 1;
    fi
    }

    # See how we were called.
    case “$1″ in
    start)
    start
    ;;
    stop)
    stop
    ;;
    status)
    rhstatus;
    RETVAL=$?
    ;;
    restart)
    restart
    ;;
    condrestart|try-restart)
    if [ -e /var/lock/subsys/named ]; then restart; fi
    ;;
    reload)
    reload
    ;;
    force-reload)
    if ! reload; then restart; fi
    ;;
    checkconfig|configtest|check|test)
    checkconfig
    ;;
    *)
    echo $”Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}”
    [ “x$1” = “x” ] && exit 0
    exit 2
    esac

    exit $RETVAL

  15. Mozilla Firefox 24.0 Linux

    Gracias por la ayuda, cambie las comillas como me mencionaste y lo ejecute y me salio el siguiente mensajes:

    /usr/bin/readlink: missing operand
    Pruebe `/usr/bin/readlink –help’ para más información.
    /etc/init.d/named: línea 304: try-restart: no se encontró la orden
    echo $“Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}“

    /etc/init.d/named: línea 304: force-reload}“: no se encontró la orden
    echo $“Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}“

    /etc/init.d/named: línea 252: [: “3“: se esperaba una expresión entera
    if [ “$RETVAL“ -eq 0 ]; then

    /etc/init.d/named: línea 256: [: “3“: se esperaba una expresión entera
    [ “$RETVAL“ -eq 0 ] && success $“$named reload“ || failure $“$named reload“

    de ante mano muchas gracias

    Esperando tu respuesta.

    Gracias

    1. Google Chrome 70.0.3538.110 Windows NT

      Pues segun esto es una IPv6 de la red Tor

      2001:620:20d0::20

      Usando firefox 6 en un Windows 7 de 64 bits en suiza

      Non-authoritative answer:
      0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.0.2.0.2.6.0.1.0.0.2.ip6.arpa name = tor4e3.digitale-gesellschaft.ch.

  16. Google Chrome 76.0.3809.132 Mac OS X 10.12.6

    Muchas gracias por compartir.

    ¿Por casualidad tienes algún videoturorial para seguirlo con más detalle?

    De nuevo, muy agradecido con el post.

Responder a dirseu Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *