Adición de un controlador de dominio (DC) con Samba 4

Cómo crear un controlador de dominio (DC) y añadirlo a un directorio activo (AD) con Samba 4

Continuando con el artículo anterior, vamos a ver a continuación como añadir controladores de dominio adicionales a nuestra red con Samba 4. Partiremos de la existencia de al menos un controlador de dominio implementado preferiblemente con Samba 4, o con Windows Server en su defecto. Nuevamente, nuestro servidor contará con CentOS 6.x como sistema operativo y los paquetes de Enterprise Samba.

Requisitos

Debemos contar con un servidor con CentOS 6.x o Red Hat Enterprise Linux 6.x, y los paquetes de Enterprise Samba ya instalados; así como los paquetes de Bind modificados, de acuerdo a como indicamos en el artículo anterior.

Disponibilidad del directorio activo

Para comprobar su disponibilidad, probaremos un login con Kerberos. Creamos un fichero /etc/krb5.conf como el siguiente:

[libdefaults]
 default_realm = DRAMOR.INT
 dns_lookup_realm = false
 dns_lookup_kdc = true

También, verificaremos que el sistema tiene puesto como servidor DNS, el del otro controlador de dominio:

# cat /etc/resolv.conf
search dramor.int
nameserver 192.168.56.10

Y trataremos de obtener un ticket:

# kinit Administrador@DRAMOR.INT
Password: xxxx
Warning: Your password will expire in 41 days on Sun Mar 23 13:19:48 2014

Si todo ha ido correcto podremos conectarnos a algún recurso con ese usuario:

># smbclient -k //centos6ad/netlogon Domain=[DRAMOR] OS=[Unix] Server=[Samba 4.1.4-SerNet-RedHat-7.el6] smb:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrador@DRAMOR.INT
Valid starting Expires Service principal
02/08/14 23:43:38 02/09/14 09:43:41 krbtgt/DRAMOR.INT@DRAMOR.INT
 renew until 02/09/14 23:43:38
02/08/14 23:43:54 02/09/14 09:43:41 cifs/centos6ad@DRAMOR.INT

Unión como controlador de dominio (DC)

Nos uniremos con la orden samba-tool. Nos pedirá la contraseña del administrador y a continuación se unirá mostrándonos información abundante sobre el proceso de replicación de datos:

# samba-tool domain join dramor.int DC -UAdministrator --dns-backend=BIND9_DLZ
Finding a writeable DC for domain 'dramor.int'
Found DC centos6ad.dramor.int
Password for [DRAMOR\Administrator]:
workgroup is DRAMOR
realm is dramor.int
checking sAMAccountName
Adding CN=CENTOS6AD2,OU=Domain Controllers,DC=dramor,DC=int
Adding CN=CENTOS6AD2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=dramor,DC=int
Adding CN=NTDS Settings,CN=CENTOS6AD2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=dramor,DC=int
Adding SPNs to CN=CENTOS6AD2,OU=Domain Controllers,DC=dramor,DC=int
Setting account password for CENTOS6AD2$
Enabling account
Adding DNS account CN=dns-CENTOS6AD2,CN=Users,DC=dramor,DC=int with dns/ SPN
Setting account password for dns-CENTOS6AD2
Calling bare provision
No IPv6 address will be assigned
Provision OK for domain DN DC=dramor,DC=int
Starting replication
Schema-DN[CN=Schema,CN=Configuration,DC=dramor,DC=int] objects[402/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=dramor,DC=int] objects[804/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=dramor,DC=int] objects[1206/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=dramor,DC=int] objects[1550/1550] linked_values[0/0]
Analyze and apply schema objects
Partition[CN=Configuration,DC=dramor,DC=int] objects[402/1620] linked_values[0/0]
Partition[CN=Configuration,DC=dramor,DC=int] objects[804/1620] linked_values[0/0]
Partition[CN=Configuration,DC=dramor,DC=int] objects[1206/1620] linked_values[0/0]
Partition[CN=Configuration,DC=dramor,DC=int] objects[1608/1620] linked_values[0/0]
Partition[CN=Configuration,DC=dramor,DC=int] objects[1620/1620] linked_values[28/0]
Replicating critical objects from the base DN of the domain
Partition[DC=dramor,DC=int] objects[98/98] linked_values[23/0]
Partition[DC=dramor,DC=int] objects[313/215] linked_values[23/0]
Done with always replicated NC (base, config, schema)
Replicating DC=DomainDnsZones,DC=dramor,DC=int
Partition[DC=DomainDnsZones,DC=dramor,DC=int] objects[41/41] linked_values[0/0]
Replicating DC=ForestDnsZones,DC=dramor,DC=int
Partition[DC=ForestDnsZones,DC=dramor,DC=int] objects[19/19] linked_values[0/0]
Partition[DC=ForestDnsZones,DC=dramor,DC=int] objects[38/19] linked_values[0/0]
Committing SAM database
Sending DsReplicateUpdateRefs for all the replicated partitions
Setting isSynchronized and dsServiceName
Setting up secrets database
Joined domain DRAMOR (SID S-1-5-21-2470081830-1300756272-1234487377) as a DC

 

Ajuste de entradas DNS

Comprobaremos si se creó una entrada DNS para el nuevo servidor en el servidor al que nos hemos unido. Para ello intentamos resolver:

# host -t A centos6ad2.dramor.int.
Host centos6ad2.dramor.int. not found: 3(NXDOMAIN)

Si nos da error, debemos dar de alta el registro DNS. Podemos hacerlo con samba-tool. Si la IP del servidor DNS es 192.168.56.20 y la del servidor que acabamos de unir (centos6ad) es 192.168.56.10 introduciríamos una orden como:

# samba-tool dns add 192.168.56.30 dramor.int centos6ad2 a 192.168.56.10 -Uadministrador
Password for [DRAMOR\administrador]:
Record added successfully

Probamos de nuevo:

# host -t A centos6ad2.dramor.int.
centos6ad2.dramor.int has address 192.168.56.30

Tanto si hemos tenido que añadir este registro como si no, seguramente tendremos que añadir el GUID del servidor como registro CNAME del DNS. Comprobaremos si existe, en primer lugar obteniendo el GUID:

# ldbsearch -H /var/lib/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid
# record 1
dn: CN=NTDS Settings,CN=CENTOS6AD2,CN=Servers,CN=Nombre-predeterminado-primer-sitio,CN=Sites,CN=Configuration,DC=dramor,DC=int
objectGUID: 99889a59-e3b6-4c9d-a005-dc61fa238cad
...

Buscamos el registro:

# host -t CNAME 99889a59-e3b6-4c9d-a005-dc61fa238cad._msdcs.dramor.int.
Host 99889a59-e3b6-4c9d-a005-dc61fa238cad._msdcs.dramor.int. not found: 3(NXDOMAIN)

Si nos da este error, lo creamos:

# samba-tool dns add 192.168.56.20 _msdcs.dramor.int 99889a59-e3b6-4c9d-a005-dc61fa238cad CNAME centos6ad2.dramor.int -Uadministrador
Password for [DRAMOR\administrador]:
Record added successfully

Y probamos de nuevo:

# host -t CNAME 99889a59-e3b6-4c9d-a005-dc61fa238cad._msdcs.dramor.int.
99889a59-e3b6-4c9d-a005-dc61fa238cad._msdcs.dramor.int is an alias for centos6ad2.dramor.int.

Configuración de BIND

Para configurar y arrancar el servicio DNS tenemos que realizar las mismas configuraciones y posteriores revisiones de permisos de ficheros que hicimos con el primer controlador de dominio (ver artículo anterior).

Una vez arrancado podemos probar con dig que es capaz de resolver cualesquiera de los equipos de la red, por ejemplo, los dos servidores DC configurados hasta ahora (centos6ad y centos6ad2):

# host -t A centos6ad.dramor.int 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
centos6ad.dramor.int has address 192.168.56.10
# host -t A centos6ad2.dramor.int 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
centos6ad2.dramor.int has address 192.168.56.30

 

Arranque de Samba

Para arrancar Samba4 en modo directorio activo, editamos el fichero /etc/default/sernet-samba cambiando la variable SAMBA_START_MODE al valor “ad” en lugar de “none”. Finalmente, arrancamos con “service sernet-samba-ad start”.

Si vemos en los logs ( /var/log/samba/log.samba ) un error similar a este:

 

Failed to bind to uuid e3514235-4b06-11d1-ab04-00c04fc2dcd2 for e3514235-4b06-
11d1-ab04-00c04fc2dcd2@ncacn_ip_tcp:b78fee18-83b9-4478-9239-0d9a13b654c2._msdcs.
dramor.int[1024,seal,krb5] NT_STATUS_UNSUCCESSFUL

normalmente reiniciando el samba de esa máquina se soluciona.

Una vez dejemos de ver los errores, podemos comprobar que los objetos del directorio activo se replican, para ello desde uno de los servidores creamos un usuario:

# samba-tool user add usuario1
Password: XXXX
# samba-tool user list
dns-CENTOS6AD2
Administrator
dns-CENTOS6AD
usuario1
krbtgt
Guest

Tras unos segundos, ejecutando la misma orden (samba-tool user list) en el otro servidor DC debemos ver que también aparece el usuario1 recién creado.

Interacción con DC Windows Server

Si el servidor DC es Windows Server y no Samba 4, debemos tener en cuenta que tras añadir el servidor Samba 4 y arrancar Samba, no funcionará la replicación. Esto se verá con un error en los logs de Samba, similares a:

UpdateRefs failed with WERR_DS_DRA_BAD_NC/NT

Para solucionarlo, debemos ejecutar "repadmin /kcc" en el servidor Windows, o bien el siguiente comando en el Samba 4:

# samba-tool drs kcc -Uadministrator w2003srv.dramor.int
 Consistency check on centos6ad.dramor.int successful.

Tras esto podemos verificar la replicación con:

# samba-tool drs showrepl
 Default-First-Site-Name\CENTOS6AD2
 DSA Options: 0x00000001
 DSA object GUID: b78fee18-83b9-4478-9239-0d9a13b654c2
 DSA invocationId: 45869512-53e2-4e3e-9478-3c874e4352d7
==== INBOUND NEIGHBORS ====
DC=ForestDnsZones,DC=dramor,DC=int
 Default-First-Site-Name\W2003SRV via RPC
 DSA object GUID: ff97c348-e990-4a6a-a9c5-879c9b1e2dea
 Last attempt @ Sun Feb 9 14:04:42 2014 CET was successful
 0 consecutive failure(s).
 Last success @ Sun Feb 9 14:04:42 2014 CET
DC=dramor,DC=int
 Default-First-Site-Name\W2003SRV via RPC
 DSA object GUID: ff97c348-e990-4a6a-a9c5-879c9b1e2dea
 Last attempt @ Sun Feb 9 14:04:43 2014 CET was successful
 0 consecutive failure(s).
 Last success @ Sun Feb 9 14:04:43 2014 CET
...

 

 

También nos fallará el backend DNS BIND_DLZ, si el servidor es Windows 2003. Esto es en este momento, un error conocido sin resolver en Samba4, Se puede evitar utilizando el backend DNS interno de Samba 4, aunque habrá que tener en cuenta sus limitaciones.

 

BORING STORIES · FRIKADAS · RHEL
active directory centos 6 rhel 6 samba 4

Discusión