Estou configurando um ambiente de teste para um cliente prestes a implantar o samba4 em 1400 sites remotos e estou me deparando com um problema. É meu trabalho, afinal, encontrar problemas e resolvê-los.
Active Directory
- raiz da floresta & domínio único: main.adlab.netdirect.ca
- criado no Windows 2008 R2
- 2008 FFL
- 2008 DFL
Escritório principal
- AD1: Windows 2008 R2 DC
- AD2: Windows 2008 R2 DC
- Clientes do Windows 7 Professional
Filial
- SLES11SP2 (totalmente atualizado!) com o Samba 4 (pacotes 4.1.1-7.suse111 da sernet)
- Samba 4 configurado como RODC
Configurei uma política de replicação de senha para permitir que determinadas contas sejam armazenadas em cache no RODC e, em seguida, preenchidas essas contas para o RODC:
sles-shire:~ # samba-tool rodc preload 'win7-shire$' --server main.adlab.netdirect.ca
Replicating DN CN=WIN7-SHIRE,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca
Exop on[CN=WIN7-SHIRE,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca] objects[1] linked_values[2]
sles-shire:~ # samba-tool rodc preload 'win7-shire-2$' --server main.adlab.netdirect.ca
Replicating DN CN=WIN7-SHIRE-2,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca
Exop on[CN=WIN7-SHIRE-2,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca] objects[1] linked_values[1]
sles-shire:~ # samba-tool rodc preload 'bilbo' --server main.adlab.netdirect.ca
Replicating DN CN=Bilbo Baggins,OU=Shire,OU=Offices,DC=main,DC=adlab,DC=netdirect,DC=ca
Exop on[CN=Bilbo Baggins,OU=Shire,OU=Offices,DC=main,DC=adlab,DC=netdirect,DC=ca] objects[1] linked_values[2]
Eu sei que essas credenciais estão sendo armazenadas em cache no RODC, pois se eu eliminar o link do site, posso fazer login com um usuário em cache, mas não com um usuário diferente:
michael@sles-shire:~> smbclient //sles-shire.main.adlab.netdirect.ca/sysvol -U michael
Enter michael's password:
session setup failed: NT_STATUS_IO_TIMEOUT
michael@sles-shire:~> smbclient //sles-shire.main.adlab.netdirect.ca/sysvol -U bilbo
Enter bilbo's password:
Domain=[MAIN] OS=[Unix] Server=[Samba 4.1.1-SerNet-SuSE-7.suse111]
smb: \> ls
. D 0 Mon Nov 18 16:09:44 2013
.. D 0 Mon Nov 18 16:11:15 2013
main.adlab.netdirect.ca D 0 Wed Nov 20 17:54:13 2013
Portanto, a autenticação está funcionando bem! Mas quando tento entrar no PC com Windows 7 (WIN7-SHIRE), recebo o erro:
An internal error has occurred.
Nossa. Obrigado. Se eu usar uma senha incorreta, recebo:
The user name or password is incorrect.
Portanto, a autenticação está acontecendo, mas o Windows 7 não gosta de alguma coisa . Eu vejo esses erros nos logs de eventos e acho que eles são relevantes para esse problema:
The Security System detected an authentication error for the server ldap/sles-shire.main.adlab.netdirect.ca. The failure code from authentication protocol Kerberos was "An internal error occurred. (0xc00000e5)".
The Security System detected an authentication error for the server DNS/sles-shire.main.adlab.netdirect.ca. The failure code from authentication protocol Kerberos was "An internal error occurred. (0xc00000e5)".
Se eu já estiver conectada e tentar usar serviços de rede, obtenho:
The Security System detected an authentication error for the server cifs/sles-shire.main.adlab.netdirect.ca. The failure code from authentication protocol Kerberos was "An internal error occurred. (0xc00000e5)".
Meu krb5.conf no servidor:
[libdefaults]
default_realm = MAIN.ADLAB.NETDIRECT.CA
dns_lookup_realm = true
dns_lookup_kdc = true
[realms]
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
Este é o verdadeiro kicker:
O comportamento ainda ocorre quando o link do site está para cima . Eu consigo fazer login no domínio do PC com contas que não estão armazenadas em cache no RODC, mas, se estiverem no RODC, recebo o mesmo erro.
Eu assegurei que todos os registros SRV apropriados no DNS do AD estão em vigor. Assegurei isso promovendo um DC do Windows 2008 R2 na filial para uma função de RODC e garantindo que todos os registros DNS apropriados estejam presentes para o RODC do Windows e do Samba.
(alguns foram necessários para adicionar à mão, pois ainda não foram adicionados pelo samba:
SRV _ldap._tcp.${SITE}._sites.DomainDnsZones.${DNSDOMAIN} ${HOSTNAME} 389
SRV _ldap._tcp.${SITE}._sites.ForestDnsZones.${DNSFOREST} ${HOSTNAME} 389
) (deve fechar o colchete)
Então… o que está quebrado e como conserto?
Informações do SPN
> dsquery * "CN=SLES-SHIRE,OU=Domain Controllers,DC=main,DC=adlab,DC=netdirect,DC=ca" -attr servicePrincipalName
servicePrincipalName
ldap/SLES-SHIRE;
ldap/4116d553-d66b-4c8b-9a60-90380ac69c04._msdcs.main.adlab.netdirect.ca;
ldap/SLES-SHIRE.main.adlab.netdirect.ca/main.adlab.netdirect.ca;
HOST/SLES-SHIRE.main.adlab.netdirect.ca/main.adlab.netdirect.ca;
ldap/SLES-SHIRE.main.adlab.netdirect.ca;
ldap/SLES-SHIRE.main.adlab.netdirect.ca/MAIN;
HOST/SLES-SHIRE.main.adlab.netdirect.ca/MAIN;
RestrictedKrbHost/SLES-SHIRE.main.adlab.netdirect.ca;
RestrictedKrbHost/SLES-SHIRE;
GC/SLES-SHIRE.main.adlab.netdirect.ca/main.adlab.netdirect.ca;
HOST/SLES-SHIRE.main.adlab.netdirect.ca;HOST/SLES-SHIRE;
> dsquery * "CN=WIN7-SHIRE,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca" -attr servicePrincipalName
servicePrincipalName
TERMSRV/WIN7-SHIRE.main.adlab.netdirect.ca;
TERMSRV/WIN7-SHIRE;
RestrictedKrbHost/WIN7-SHIRE;
HOST/WIN7-SHIRE;
RestrictedKrbHost/WIN7-SHIRE.main.adlab.netdirect.ca;
HOST/WIN7-SHIRE.main.adlab.netdirect.ca;