Tabla de Contenidos

Servidor de dominio Samba4 con DNS externos

En el siguiente manual vamos a instalar samba4 con un servidor de nombres (DNS) externo.

Preparativos

Partiendo de que el servidor DNS está funcionando, lo primero es dar un IP a nuestro servidor de dominio.

root@dominio:~# nano /etc/network/interfaces
    address 192.168.0.1
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.2
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.0.1 192.168.0.3 192.168.0.4
    dns-search abtss.co.cu
    dns-domain abtss.co.cu

Donde:

Las dos últimas indican el nombre de búsqueda del dominio y el nombre del dominio en si.

Después editamos el fichero /etc/resolv.conf quedando de la siguiente forma.

root@dominio:~# nano /etc/resolv.conf
domain abtss.co.cu
search abtss.co.cu
nameserver 192.168.0.3

Donde las 2 primeras líneas son el dominio de nuestra red y la tercera es el ip de la maquina. Entramos en el fichero /etc/fstab, y configuramos que todas las unidades de disco duro nos queden con la configuración.

root@dominio:~# nano /etc/fstab
UUID=b99750a8-9c39-11e3-82f1-525400990c6c  / ext4      user_xattr,acl  0       2

Y por último configuramos el fichero /etc/apt/sources.list para los repositorios de debian wheezy, en este caso pongo los de jovenclub.

root@dominio:~# nano /etc/apt/sources.list
deb http://descargas.jovenclub.cu/repos/debian/wheezy wheezy main contrib non-free
deb http://descargas.jovenclub.cu/repos/debian/wheezy-backports wheezy-backports main contrib non-free
deb http://descargas.jovenclub.cu/repos/debian/wheezy-multimedia wheezy main contrib non-free
deb http://descargas.jovenclub.cu/repos/debian/wheezy-security wheezy/updates main contrib non-free
deb http://descargas.jovenclub.cu/repos/debian/wheezy-updates wheezy main contrib non-free

Reiniciamos para que el servidor tome bien todas las configuraciones hechas hasta ahora, y hasta aquí tenemos el servidor listo para comenzar a configurar samba4.

root@dominio:~# init 6

Descarga, instalación, configuración

En este caso vamos a descargar la última versión estable disponible, en el momento de hacer este documento es samba-4.2.0.

Puedes descargarla de aquí.

Para comenzar con la instalación y configuración de samba4, debemos instalar unos paquetes que son necesarios para su posterior configuración.

root@dominio:~# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev \
libgnutls-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config \
libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl

Como parte de la instalación, debemos configurar keberos 5. Las configuraciones que nos va a pedir son las siguientes:

  1. Dominio Real al que pertenece la maquina, siempre (debemos tener en cuenta que se escribe con mayúsculas completo ABTSS.CO.CU).
  2. Nombre del servidor que estamos utilizando. (se escribe con minúsculas dominio)
  3. El nombre de la maquina con el dominio incluido. (se escribe con minúsculas dominio.abtss.co.cu)

Una vez hechas estas configuraciones pasamos a instalar el servicio NTP.

root@dominio:~# apt-get install ntp

Después de instalado el servicio pasamos a configurarlo.

root@dominio:~# mv /etc/ntp.conf /etc/ntp.conf.original

root@dominio:~# nano /etc/ntp.conf</code>

y lo dejamos con el siguiente contenido:

# mensaje de registro (notrap)
restrict default modify notrap noquery
 
# Permitir todo el acceso a la interfaz de retorno del sistema
restrict 127.0.0.1
 
 
# Reloj Local indisciplinado
driftfile /var/lib/ntp/drift broadcastdelay 0.008
logfile /var/log/ntpd.log
 
server 127.0.0.1
fudge 127.0.0.1 stratum 12
server domain.abtss.co.cu iburst prefer
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
 
# Se le permite a la red local sincronizar con el servidor
restrict -4 default kod notrap nomodify nopeer noquery mssntp
restrict default mssntp
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer noquery
 
 
# Se activa la difucion hacia los clientes
broadcastclient

Después de puestas estas opciones guardamos y reiniciamos el servicio

root@dominio:~# service ntp restart

Después de tener configurado el servidor de tiempo pasamos a la carpeta /usr/src/ para descargar el samba4.

root@dominio:~# cd /usr/src/
root@dominio:/usr/src# wget http://descargas.jovenclub.cu/GUTL/Aplicaciones_Softwares/Linux/TAR_X/samba-4.2.0.tar.gz

Descompactamos el fichero.

root@dominio:/usr/src# tar -zxvf samba-4.2.0.tar.gz

Y comenzamos con la configuración usando los siguientes comandos. (En estos puntos se demora bastante la instalación así que no se preocupen por eso.)

root@dominio:/usr/src # cd samba-4.2.0
root@dominio:/usr/src/samba-4.2.0# ./configure --enable-debug
root@dominio:/usr/src/samba-4.2.0# make
root@dominio:/usr/src/samba-4.2.0# make install

Una vez terminado este proceso, estamos a la mitad del camino en cuanto a configuraciones se refiere, pero en tiempo estamos terminando.

La instalación por defecto es en /usr/local/samba, por lo que añadimos las nuevas rutas en la variable de entorno $PATH. En mi caso se declara en /etc/bash.bashrc para que se aplique a todos los usuarios, root incluido:

root@dominio:/usr/src/samba-4.2.0# nano /etc/bash.bashrc

Dentro del fichero agregaremos la línea de exportación de la variable debajo de las lineas comentadas, quedando como lo pongo a continuación:

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.
export PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin

Además, lo ejecutamos para comenzar a utilizar el servicio samba.

root@dominio:/usr/src/samba-4.2.0# export PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin

También creamos un enlace dentro de /etc para que Samba encuentre el archivo de configuración:

root@dominio:/usr/src/samba-4.2.0#  ln -s /usr/local/samba/etc/ /etc/samba

Vamos ya a configurar el servidor Samba. Para ello ejecutamos:

root@dominio:/usr/src/samba-4.2.0# samba-tool domain provision --realm=abtss.co.cu --domain=ABTSS --adminpass=Contraseña --use-rfc2307

Donde:

Si todo sale bien tras un ratito Samba terminara de configurarse y te mostrará unas salidas donde aparecen:

Server Role:               active directory domain controler
Hostname:                  dominio
NetBIOS Domain:            ABTSS
DNS Domain:                abtss.co.cu
DOMAIN SID:                S-1-5-21-236987452-85659585-695823657

Ahora vamos a editar el archivo /etc/samba/smb.conf. Por ahora lo que nos interesa es la siguiente línea:

dns forwarder = 192.168.0.3

Esta línea debe de apuntar al servidor DNS que nos da salida a Internet (en este caso, el DNS de mi red). Samba la toma por defecto de la configuración de la red pero es recomendable verificarlo.

Ahora iniciamos el servicio:

root@dominio:/usr/src/samba-4.2.0# samba

Comprobamos la conexión ejecutando:

root@dominio:/usr/src/samba-4.2.0# smbclient -L localhost -U%

Y si todo esta correcto nos mostrará una en pantallas unos letreros donde los ultimos son:

   Server                     Comment
   ------                     -------

   Workgoup                    Master
   ------                     -------

En caso de que de error es que cometimos algún error en los pasos anteriores.

Comprobación

Ahora vamos a comprobar que nos podemos conectar:

root@dominio:/usr/src/samba-4.2.0# kinit administrator@ABTSS.CO.CU

Ojo, el dominio tiene que escribirse en mayúsculas.

Acto seguido nos pedirá la contraseña del usuario, en este caso el del administrador. OJO, la contraseña tiene que ser compleja, de lo contrario puede traer problemas. Si nos sale un mensaje que dice “Warning: Your password will expire in 41 days on dia-semana mes dia hora año” es que salió correctamente.

Bueno, ya hemos completado este pequeño tutorial. Ya podemos incluso conectarnos con RSAT desde una máquina que este unida al dominio y con un usuario con privilegios administrativos.

Para finalizar solo nos queda un pequeño detalle, cuando el servidor se apague por alguna razón no va a ejecutar el samba, pero la solución es muy sencilla. Agregar en /etc/init.d/ el siguiente script, para poder tratar la instalacion como si la hubieses hecho directo desde el paquete.

root@dominio: # nano /etc/init.d/samba4
#! /bin/sh
 
### BEGIN INIT INFO
# Este Script ha sido Adaptado por Arnel González Rodríguez
### END INIT INFO
 
#
# Start/stops the Samba daemon (samba).
# Adapted from the Samba 3 packages.
#
# Defaults
RUN_MODE="daemons"
 
[ -r /etc/default/samba ] && . /etc/default/samba
 
PIDDIR=/usr/local/samba/var/run
SAMBAPID=$PIDDIR/samba.pid
 
# clear conflicting settings from the environment
unset TMPDIR
 
# See if the daemon and the config file are there
test -x /usr/local/samba/sbin/samba -a -r /etc/samba/smb.conf || exit 0
 
. /lib/lsb/init-functions
 
case "$1" in
	start)
		log_daemon_msg "Starting Samba 4 daemon" "samba"
		# Make sure we have our PIDDIR, even if it's on a tmpfs
		install -o root -g root -m 755 -d $PIDDIR
 
		if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D; then
			log_end_msg 1
			exit 1
		fi
 
		log_end_msg 0
		;;
	stop)
		log_daemon_msg "Stopping Samba 4 daemon" "samba"
 
		start-stop-daemon --stop --quiet --name samba $SAMBAPID
		# Wait a little and remove stale PID file
		sleep 1
		if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
		then
			# Stale PID file (samba was succesfully stopped),
			# remove it (should be removed by samba itself IMHO.)
			rm -f $SAMBAPID
		fi
 
		log_end_msg 0
 
		;;
	restart|force-reload)
		$0 stop
		sleep 1
		$0 start
		;;
	*)
		echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}"
		exit 1
		;;
esac
 
exit 0

Le damos permiso de ejecución.

root@dominio: # chmod 777 /etc/init.d/samba4

Ahora solo nos falta que se ejecute siempre que inicie el sitema para ello aplicamos el comando:

root@dominio: # update-rc.d samba4 defaults

Ahora si tenemos el samba funcionando sin problemas de ningún tipo, además podemos hacer uso de stop, start y restart.




Autor: Arnel González Rodríguez

Correo electrónico: dir.informatica@abtss.co.cu

Muy bueno el tutorial, Arnel. De hecho, lo utilicé acá en mi red. Solo te faltó, en mi opinión, lanzar al final de todo el comando rcconf y allí declarar Samba4 como un programa que debe levantar al (re)iniciarse el sistema.