Veja: Qual Diferença Entre DC e AD em Informática?
A execução de apenas um controlador de domínio (DC) na rede é suficiente para o funcionamento do Active Directory(AD). No entanto, por motivos de redundância e balanceamento de carga, você deve adicionar mais DCs à sua floresta do AD.
Temos artigos mostrando como compilar/instalar e provisionar o samba:
- Instalando(Compilando) SAMBA 4.17 no DEBIAN 11 Bullseye
- Instalando(Compilando) SAMBA 4.17 no Oracle Linux 8
Nesses artigos acima, provisionamos o samba. Juntar(join) um DC adicional a um AD existente é diferente de provisionar o primeiro DC em uma floresta. no caso acima nós provisionamos o primeiro DC na floresta. Agora iremos juntar um novo DC a uma floresta já existente.
Informações do Servidor que Irá se Juntar(Join) ao AD
Nosso novo servidor terá essas informações:
- hostname: oracle86B
- Nome completo(FQDN): oracle86B.lab.interno
- Endereço IP: 192.168.50.4
Esses artigos podem ser ultéis para você: Linux: Como Ver e Alterar O Nome da Máquina(hostname)? e Linux: Como Ver e Alterar o Nome de Domínio DNS?
Irei desabilitar o firewall apenas para os testes, mas não faça isso em produção!! Veja: Portas a Serem Liberadas para o Samba
[root@oracle86 bin]# systemctl stop firewalld.service
Compilação/Instalação do Novo Samba que Irá se Juntar ao Domínio como DC
Instalando(Compilando) SAMBA 4.17 no DEBIAN 11 Bullseye: Se você estiver usando Debian ou alguma distro derivada então siga este link até o passo da compilação. Terminando a compilação pare e volte para cá. Não provisione! Não siga a etapa escrita “Provisionando o Samba” lá no link; volte para esse artigo e continue aqui.
Instalando(Compilando) SAMBA 4.17 no Oracle Linux 8: Se você estiver usando Red Hat, CentOS, Oracle Linux, Rocky Linux ou demais derivações, então siga este link até o passo da compilação. Terminando a compilação pare e volte para cá. Não provisione! Não siga a etapa escrita “Provisionando o Samba” lá no link; volte para esse artigo e continue aqui.
/etc/resolv.conf
Deixe o arquivo /etc/resolv.conf assim
domain lab.interno search lab.interno nameserver 192.168.50.3 nameserver 8.8.8.8
192.168.50.3 é o IP do outro servidor com o qual queremos unir ao domínio lab.interno.
Kerberos
#1 Defina as seguintes configurações no arquivo de configuração do cliente Kerberos /etc/krb5.conf
[libdefaults] dns_lookup_realm = false dns_lookup_kdc = true default_realm = LAB.INTERNO
Substitua LAB.INTERNO pelo seu domínio
#2 Execute o comando kinit administrator. knit é um comando do kerberos e administrator é o usuário admin do samba do outro servidor onde o samba já está implantado
[root@oracle86B ~]# kinit administrator Password for administrator@LAB.INTERNO: Warning: Your password will expire in 41 days on qua 29 mar 2023 12:25:54 EDT
Se ocorrer erro, veja esse link: Kerberos com Erro “kinit: Cannot find KDC for realm “LAB.INTERNO” while getting initial credentials”
#3 agora digite klist para listar os tickets do kerberos
[root@oracle86B ~]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@LAB.INTERNO Valid starting Expires Service principal 15/02/2023 12:29:54 15/02/2023 22:29:54 krbtgt/LAB.INTERNO@LAB.INTERNO renew until 16/02/2023 12:29:49
Data e Hora
O horário e data têm que estar corretos e ajustados.
#1 execute o comando date nos dois servidores e verifique data e horário. Poderá ajustar manualmente caso estejam errados.
O correto seria instalar um programa NTP para que sincronize o horário e data com um servidor de tempo na internet.
Juntando-se ao Active Directory como um controlador de domínio
Agora estamos prontos para adicionar o novo servidor samba ao domínio já existente. A esse domínio demos o nome de lab.interno
Acesse a pasta /usr/local/samba/bin
[root@oracle86B ~]# cd /usr/local/samba/bin
Existem três métodos de autenticação que você pode usar, nome de usuário e senha ou dois outros métodos do Kerberos(os métodos Kerberos dependem da execução do kinit como um usuário administrador).
Escolha um dos 3 modos abaixo para fazer a adesão do novo servidor ao domínio lab.interno.
Usuário senha:
# ./samba-tool domain join lab.interno DC -U"LAB\administrator"
Ou método do kerbero
# ./samba-tool domain join lab.interno DC -k yes
Ou ainda esse outro método do kerbero
# ./samba-tool domain join lab.interno DC --use-krb5-ccache=/tmp/krb5cc_0
Ao final, se obteve sucesso, verá uma linha em verde com a seguinte informação:
#1580: Joined domain LAB (SID S-1-5-21-4067999537-1990995468-3025962370) as a DC
Informações Adicionais
Se os outros DCs são Samba DCs, não Windows, e foram provisionados com –use-rfc2307, você deve adicionar –option=’idmap_ldb:use rfc2307 = yes’ ao comando join
Algumas opções ou parâmetros que você poderá fornecer na adesão(join) é:
- –dns-backend=NAMESERVER-BACKEND Substitua NAMESERVER-BACKEND pelo back-end do servidor DNS fornecido. As opções válidas são SAMBA_INTERNAL ou BIND9_DLZ, a menos que você queira usar o Bind9, não há necessidade de usar esta opção. Se você usar o servidor DNS interno, não será solicitado um encaminhador(forward) e aquele em /etc/resolv.conf não será obtido automaticamente. Você deve fornecer um com --option="dns forwarder=forwarder_endereco_ip".
- –site=SITE Junte-se diretamente ao host como controlador de domínio para um site específico do Active Directory.
- –option=”interfaces=lo eth0″ –option=”bind interfaces only=yes” Se o seu servidor tiver várias interfaces de rede, use essas opções para vincular o Samba às interfaces especificadas. Isso permite que o comando samba-tool registre o endereço IP da LAN correto no diretório durante a junção.
Replicação da Pasta Sysvol e Mapeamentos integrados(Built-in) de ID de usuário e grupo
Você precisa sincronizar o arquivo idmap.ldb do controlador de domínio que mantém a função PDC_Emulator FSMO para todos os outros DCS. Isso garante que todos os controladores de domínio usem as mesmas IDs. Se você não sincronizar o idmap.ldb, poderá obter IDs diferentes em cada DC. Abaixo explicamos como copiar o arquivo idmap.ldb usando a ferramenta tdbbackup
O Samba em seu estado atual não oferece suporte à replicação SysVol via DFS-R (Replicação do Sistema de Arquivos Distribuídos) ou o antigo FRS (Serviço de Replicação de Arquivos) usado no Windows Server 2000/2003 para replicação Sysvol.
É recomendado aos administradores usar uma das seguintes soluções alternativas:
- Solução alternativa de replicação SysVol baseada em Rsync (apenas DCs Samba): Configuração rápida, fácil de configurar.
- Solução alternativa de replicação SysVol baseada em Rsync/Unison bidirecional (somente DCs Samba): Mais complexo, requer script de terceiros, cada DC requer um cron job um contra o outro DC
- Solução alternativa de replicação SysVol baseada em Rsync/osync bidirecional (somente DCs Samba): mais complexo, requer script de terceiros, cada DC requer um cron job um contra o outro DC
- Solução alternativa de replicação SysVol baseada em Robocopy (DCs Samba -> DCs Windows): configuração rápida, fácil de configurar, usa MS robocopy
Para usar uma solução alternativa de replicação Sysvol, todos os controladores de domínio (DC) devem usar os mesmos mapeamentos de ID para usuários e grupos integrados. Por isso deixamos evidente em vermelho acima.
Por padrão, um Samba DC armazena os IDs de usuário e grupo nos atributos ‘xidNumber’ em ‘idmap.ldb‘. Devido à maneira como o ‘idmap.ldb’ funciona, você não pode garantir que cada DC usará o mesmo ID para um determinado usuário ou grupo. Para garantir que você use os mesmos IDs, você deve:
#1 Criar um hot-backup(backup quente) do arquivo /usr/local/samba/private/idmap.ldb no controlador de domínio existente:
tdbbackup -s .bak /usr/local/samba/private/idmap.ldb
Isso cria um arquivo de backup /usr/local/samba/private/idmap.ldb.bak.
#2 Mova o arquivo de backup para a pasta /usr/local/samba/private/ no novo controlador de domínio e remova o sufixo .bak para substituir o arquivo existente.
#3 Execute o net cache flush nesse novo controlador de domínio.
#4 Agora você precisará sincronizar o Sysvol com o novo DC.
#5 Redefina(reset) as listas de controle de acesso(ACL) do sistema de arquivos da pasta Sysvol no novo controlador de domínio:
samba-tool ntacl sysvolreset
Iniciando o Samba
Para iniciar o samba no novo servidor que se juntou ao domínio, execute /usr/local/samba/sbin/samba
[root@oracle86B ~]# /usr/local/samba/sbin/samba
Depois que o controlador de domínio (DC) foi iniciado, o verificador de consistência de conhecimento(KCC) no Samba DC cria contratos de replicação para outros DCs na floresta do Active Directory (AD). Pode levar até 15 minutos até que o KCC crie as conexões de replicação geradas automaticamente.
Para obter detalhes sobre como verificar se a replicação de diretório funciona corretamente, consulte Verifying the Directory Replication Statuses.
Para otimizar a latência e o custo da replicação, o KCC no Samba 4.5 e posterior não cria mais uma topologia de replicação totalmente em malha entre todos os DCs. Para mais detalhes, consulte The Samba KCC.
Testes com o Samba Recém Juntado(joined) ao Domínio
#1 Consulte o servidor DNS local para resolver o nome de domínio lab.interno com o comando host -t A lab.interno
[root@oracle86B ~]# host -t A lab.interno lab.interno has address 192.168.50.3 lab.interno has address 192.168.50.4
O DNS local resolve o nome de domínio para os endereços IP de todos os controladores de domínio (DC). Nesse caso temos 2 DCs.
Caso você receba nenhum resultado ou um resultado diferente, verifique:
- os logs do samba
- os logs do sistema
#2 Testando a replicação do diretório
Para testar se a replicação do diretório funciona corretamente, adicione, por exemplo, um usuário em um controlador de domínio existente e verifique se ele aparece automaticamente no controlador de domínio recém-ingressado.
Adicione um usuário em um dos servidores, irei adicionar no oracle86
[root@oracle86 ~]# cd /usr/local/samba/bin [root@oracle86 bin]# ./samba-tool user create maria
Agora verifique se a conta aparece no servidor oracle86B
[root@oracle86B ~]# cd /usr/local/samba/bin/ [root@oracle86B bin]# ./samba-tool user list krbtgt Guest Administrator maria
Exlente artigo. Atualmente na versão 4.19.2 do Samba, você sabe se é compativel com nivel funcional 2012 R2 ou teria que fazer um downgrade de nivel funcional?