Porque Fazer um Joining?
Bom, uma instalação apenas do samba é suficiente mas por questão de backup e load balancing(balanceamento de carga) é bom adicionar mais controladores de domínios(DC) ao Active Directory(AD). Se um dia um servidor parar outro continuará trabalhando.
Um servidor de DNS serve para transformar/ traduzir Nomes para IPs. Quando acessamos o site www.google.com o servidor de DNS direciona esse endereço para o IP 172.217.172.142. O Samba também usa Serviços de DNS. Assim, quando temos um segundo servidor samba unido a outro temos redundância/backup de dns do Active Directory. Como iremos usar o serviço de DNS interno do samba não precisaremos fazer nada, tudo será configurado automaticamente ao termos um outro samba ao domínio.
Servidores Usados
Após instalar o Debian 10 e instalar o Samba nele, instalei um segundo servidor Debian seguindo as mesmas etapas do primeiro.
Então tenho dois servidores Debian abaixo:
No server01 tenho o samba já instalado e provisionado enquanto que no server02 tenho samba instalado mas sem provisionar, ou seja, instalei o samba e não executei o comando “samba-tool domain provision“. Na verdade esse comando não irá ser usado no server02 como foi no server01, sabe por quê? porque não iremos provisionar o server02 mas sim juntá-lo ao samba no server01. Usaremos o comando “samba-tool domain join“.
Preparativos
Antes de iniciar o join precisamos fazer alguns ajustes no server02
-
- Verifique com o comando “date” se a data e horário dos dois servidores estão iguais
No server01elder@server01:~$ date sex dez 18 10:33:46 -03 2020
No server02
elder@server02:~$ date sex dez 18 10:33:48 -03 2020
- Deixe o arquivo “/etc/resolv.conf” do server02 da seguinte forma. Use seu editor de texto predileto, usei o vim, mas o editor nano é mais fácil de usar.
- Verifique com o comando “date” se a data e horário dos dois servidores estão iguais
elder@server02:~$ sudo vim /etc/resolv.conf
domain lab.local search lab.local nameserver 192.168.0.40 nameserver 8.8.8.8
O “nameserver 192.168.0.40” aponta para o server01. O segundo “nameserver 8.8.8.8” é aponta para servidor dns do google
-
-
- Depois de editado o arquivo “/etc/resolv“, ainda no server02, execute o comando “nslookup server01” para verificarmos se o dns traduz corretamente
elder@server02:~$ nslookup server01 Server: 192.168.0.40 Address: 192.168.0.40#53 Name: server01.lab.local Address: 192.168.0.40
Vimos acima que ele encontrou server01 como sendo 192.168.0.40. Funcionou
- No server02, renomeie “/etc/krb5.conf” para “/etc/krb5.conf.bkp”
elder@server02:~$ sudo mv /etc/krb5.conf /etc/krb5.conf.bkp
- Ainda no server02, crie um novo arquivo “/etc/krb5.conf” e coloque dentro dele o conteúdo abaixo
[libdefaults] dns_lookup_realm = false dns_lookup_kdc = true default_realm = LAB.LOCAL
- Faça o teste com “kinit administrator“. Quando perguntado pela senha coloque a do usuário administrator do server01.
elder@server02:~$ sudo kinit administrator Password for administrator@LAB.LOCAL: Warning: Your password will expire in 41 days on qui 28 jan 2021 12:54:37 -03
Acima, se a mensagem que aparecer for “kinit: Cannot find KDC for realm “LAB.LOCAL” while getting initial credentials” é porque sua configuração está errada dentro de “/etc/krb5.conf”.
- Faça outro teste rodando “klist”
elder@server02:~$ sudo klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@LAB.LOCAL Valid starting Expires Service principal 18/12/2020 11:03:50 18/12/2020 21:03:50 krbtgt/LAB.LOCAL@LAB.LOCAL renew until 19/12/2020 11:03:40
- Depois de editado o arquivo “/etc/resolv“, ainda no server02, execute o comando “nslookup server01” para verificarmos se o dns traduz corretamente
-
Se acima deu tudo certo então podemos prosseguir para a junção(joining) do samba do server02 para o do server01.
Joining(juntando) o Samba
A ferramenta samba-tool está dentro de “/usr/local/samba/bin/”.
Para o joining podemos usar um dos 3 comando abaixo.
samba-tool domain join lab.local DC -U"LAB\administrator"
ou
samba-tool domain join lab.local DC -k yes
ou
samba-tool domain join lab.local DC --krb5-ccache=/tmp/krb5cc_0
Aplicando o Joining
elder@server02:~$ sudo /usr/local/samba/bin/samba-tool domain join lab.local DC -U"LAB\administrator"
Um monte de texto irá começar a aparecer rolando na sua tela. O que precisa ficar atento é se o texto abaixo em laranja irá surgir indicando que o samba do server02 foi unido(joined) ao domínio do server01.
Password for [LAB\administrator]:
..............
Joined domain LAB (SID S-1-5-21-2438428484-488911018-1413011155) as a DC
Inicie o samba no server02
execute “sudo /usr/local/samba/sbin/samba” para iniciar o samba em server02
elder@server02:~$ sudo /usr/local/samba/sbin/samba
Confirmando o Joining
Obs.: O servidor samba adicionado pode levar até 15 minutos para ter uma conexão OK.
-
-
-
- No server02 liste os usuários. Anteriormente criei um usuário chamado “polo” no server01, vamos ver se ele irá aparecer:
elder@server02:~$ sudo /usr/local/samba/bin/samba-tool user list Guest Administrator polo krbtgt
- Verifique entradas dns
elder@server02:~$ sudo host -t A server01.lab.local server01.lab.local has address 192.168.0.40
elder@server02:~$ sudo host -t A server02.lab.local server02.lab.local has address 192.168.0.41
- No server02 liste os usuários. Anteriormente criei um usuário chamado “polo” no server01, vamos ver se ele irá aparecer:
-
-
Crie a usuária “maria” no server01
elder@server01:~$ sudo /usr/local/samba/bin/samba-tool user create maria
Agora rode o comando “samba-tool user list” e confirme se a usuária criada no server01 aparece no server02
elder@server02:~$ sudo /usr/local/samba/bin/samba-tool user list Guest Administrator polo maria krbtgt
Fala o contrário, crie um usuário no server02 e veja se aparece no server01
No server02
elder@server02:~$ sudo /usr/local/samba/bin/samba-tool user create joao New Password: Retype Password: User 'joao' created successfully
No server01
elder@server01:~$ sudo /usr/local/samba/bin/samba-tool user list Guest Administrator polo joao maria krbtgt
Exibindo o Status da Replicação
Execute em qualquer um dos servidores do domínio o seguinte comando:
samba-tool drs showrepl
Irá ser exibido um texto longo. Ao final terá algo parecido com isso:
Connection -- Connection name: fb03f58b-1654-4a02-8e11-f0ea120b60cc Enabled : TRUE Server DNS name : lab.local Server DN name : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local TransportType: RPC options: 0x00000001 Warning: No NC replicated for Connection!
Alaranjei acima alguns pontos importantes
A conexão está ativa = Enable : true
O alerta “Warning: No NC replicated for Connection!” pode ser ignorado
Conclusão
Agora temos um samba(servidor de arquivos de impressão) executando em mais de um servidor e dessa forma temos redundância e load balance. Se um servidor ficar danificado todas as estações de trabalho continuarão trabalhando sem problemas. Aliás, veja nosso post Samba 007: Adicionando Windows 7 ao Domínio do Samba para saber como adicionar computadores Windows em nosso domínio. Tome cuidado para substituir empresa100.local pelo seu, no meu caso eu substituo empresa100.local por lab.local.
Fontes: samba.org
3 Comments to “Samba 19: Unindo(Joining) Um Servidor Samba ao Domínio”