Samba AD-DC2 Replicador
Samba AD-DC Controlador Domínio (DC2) Replicador DC1
Vamos configurar a Segunda máquina para agir como um Replicador do DC1 (backup).
OBS: Seu DC1 deve neste momento estar operacional e funcionando corretamente. Antes de continuar, faça esta verificação.
Iniciando o processo:
Execute Update e Upgrade do sistema:
Execute um update e um upgrade do sistema com o comando abaixo:
dnf update -y && dnf upgrade -y
Instale o nano e o wget
Instale o editor de textos nano e a ferramenta wget com o comando:
dnf install -y nano wget
Verifique a rede
Verifique sua configuração de rede. O DNS deve ser PREFERENCIALMENTE o IP do Controlador de domínio (DC1), bem como nome de domínio e um IP fixo. Uma das opções para configurar a rede, é executar o comando nmtui que abre uma GUI no terminal:
nmtui
Selecione Editar uma conexão
Então a opção Editar
Verifique ou altere seu endereço ip, máscara de sub-rede e seu Gateway
Na opção Servidor DNS insira PREFERENCIALMENTE o ip de seu Controlador de Domínio Principal (DC1)
Não esqueça de inserir em Domínios de pesquisa: seu.domínio.
Vá até o fim e selecione OK para salvar.
Selecione Voltar e então no menu, selecionar a opção:
Definir nome de máquina do sistema: dc2.seu.dominio.
Agora selecione a opção: OK para salvar. Novamente selecione OK. Deve retornar para o terminal.
Edite o arquivo /etc/hosts
Com o editor de textos nano edite o arquivo /etc/hosts com o comando:
nano /etc/hosts
Insira os dados referentes ao seu Controlador de Domínio DC2:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# insira os dados de seu MEMBRO DE DOMÍNIO
10.1.1.38 dc2 dc2.seu.dominio
Salve o arquivo
Para salvar: control+o e para sair: control+x
Onde:
10.1.1.38 = IP de seu DC2
dc2 = nome curto do host do DC2
dc2.seu.domínio = nome curto de seu host + seu domínio
Algum Samba rodando
Verifique se existe algum processo do samba rodando com o comando:
ps ax | egrep "samba|smbd|nmbd|winbindd"
Remova qualquer configuração smb.conf que houver, checando com o comando:
smbd -b | grep "CONFIGFILE"
# o resultado deve ser parecido com a linha abaixo:
-bash: smbd: command not found
Remova o arquivo /etc/krb5.conf
Remova o arquivo /etc/krb5.conf se houver, com o comando:
rm /etc/krb5.conf -y
Instale os repositórios de Plugins CRB e Epel
Instale os plugins e habilite o repositório CRB. Instale também o repositório epel release e execute um update com os comandos abaixo:
dnf config-manager --enable crb && dnf install epel-release -y && dnf update -y
Cheque os repositórios adicionados com o comando:
dnf repolist
O resultado deve ser algo como:

Setar servidor NTP (horário):
Liste as opções de hora local com o comando:
timedatectl list-timezones
Para setar o timezone desejado, use o comando:
timedatectl set-timezone America/Sao_Paulo
Verifique o timezone setado com o comando:
timedatectl
O resultado deve parecer como abaixo:
Local time: qua 2023-04-12 09:04:22 -03
Universal time: qua 2023-04-12 12:04:22 UTC
RTC time: qua 2023-04-12 12:00:16
Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Instale dependências necessárias
Instale as dependências necessárias para compilar e instalar o samba. Crie um arquivo do tipo script executável e insira os comandos no arquivo. No terminal, execute o editor de textos nano com o nome desejado do arquivo por exemplo:
nano depende.sh
Copie e Cole as linhas abaixo para o seu arquivo:
set -xueo pipefail
dnf install -y yum-utils
dnf update -y
yum install -y \
gcc.x86_64 \
krb5-workstation.x86_64 \
tar \
bind \
bind-utils \
python3-devel \
wget \
nano \
perl.x86_64 perl-Parse-Yapp.noarch \
libacl.x86_64 \
nfs4-acl-tools.x86_64 \
gnutls-devel.x86_64 \
zlib.x86_64 \
krb5-devel.x86_64 \
krb5-server \
libblkid.x86_64 \
dbus-devel.x86_64 \
jansson-devel.x86_64 \
readline.x86_64 \
bsdtar.x86_64 \
docbook-dtds.noarch \
pam-devel \
cups \
python3-markdown \
patchutils.x86_64 \
gpgme-devel \
flex \
python3-iso8601.noarch \
python3-cryptography.x86_64 \
python3.11-devel.x86_64 \
lmdb.x86_64 \
libarchive-devel \
libacl-devel \
openldap-devel \
python3-dns \
perl-Convert-ASN1.noarch \
rpcgen.x86_64 \
perl-App-cpanminus \
popt-devel.x86_64 \
zlib-devel.x86_64 \
lmdb-devel.x86_64 \
bison-devel.x86_64 \
libtasn1-tools \
bison \
perl-JSON \
bzip2-devel \
openssl-devel \
yum autoremove -y
yum clean all
Salve o arquivo:
Para salvar: control+o e para sair: control+x
Transforme o arquivo criado em um arquivo executável com o comando:
chmod +x depende.sh
Execute o arquivo para que o mesmo instale as dependências necessárias. Utilize o comando:
./depende.sh
Download do Samba (4.19.5)
Faça o download do samba ou da versão desejada, utilizando o comando:
wget https://download.samba.org/pub/samba/stable/samba-4.19.5.tar.gz
Descompacte o arquivo utilizando o comando:
tar -zxvf samba-nome-arquivo
Mude para o diretório onde o arquivo foi descompactado com o comando:
cd samba-nome-arquivo/
Compilar o Samba
Compile o samba e faça com que o arquivo de configuação (smb.conf) seja gravado no diretório /etc/samba/smb.conf com o comando:
./configure --sysconfdir=/etc/samba/
Aguarde o procedimento terminar.
Comandos make e make install
Execute os comandos make e make install:
make && make install
Este processo pode ser demorado, aguarde até finalizar!
Mude para o diretório /root e edite o arquivo .bash_profile para que o comando samba-tool possa ser executado de qualquer diretório. Execute os comandos:
cd /root
nano .bash_profile
E insira a linha:
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
#ESTA LINHA:
PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH
export PATH
Salve o arquivo
Para salvar: control+o e para sair: control+x
Serviço Systemd Samba
Crie um arquivo de serviço systemd para o Samba. Mas antes execute os comandos:
systemctl mask smbd nmbd winbind
systemctl disable smbd nmbd winbind
Crie o arquivo de serviço do samba-ad-dc com o editor de texto nano. Execute o comando:
nano /etc/systemd/system/samba-ad-dc.service
Copie e cole o conteúdo para seu arquivo:
[Unit]
Description=Samba Active Directory Domain Controller
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/samba/sbin/samba -D
PIDFile=/usr/local/samba/var/run/samba.pid
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Salve o arquivo
Para salvar: control+o e para sair: control+x
Recarregue o systemd
Recarregue o systemd com o comando:
systemctl daemon-reload
Habilite o samba-ad-dc para iniciar no boot do sistema:
systemctl enable samba-ad-dc
Configure o Firewall
Adicione os seguintes serviços no firewall, com o comando abaixo:
firewall-cmd --add-service={dns,ldap,ldaps,kerberos}
Abra as portas TCP utilizadas pelo samba:
firewall-cmd --permanent --zone=public --add-port={53/tcp,135/tcp,139/tcp,389/tcp,445/tcp,465/tcp,636/tcp,3268/tcp,3269/tcp,49152-65535/tcp};
Abra as portas UDP utilizadas pelo samba:
firewall-cmd --permanent --zone=public --add-port={88/udp,123/udp,137/udp,138/udp,389/udp,464/udp};
Recarregue o Firewall com o comando:
firewall-cmd --reload
Desabilite o SELinux
Edite o arquivo /etc/selinux/config com o comando:
nano /etc/selinux/config
Encontre a linha e altere para a opção disabled como mostra abaixo:
# disabled - No SELinux policy is loaded.
SELINUX=disabled
Salve o arquivo:
Para salvar: control+o e para sair control+x
Reboot o sistema
Execute um reboot com o comando:
reboot
Execute o comando samba
Quando o sistema reiniciar execute o comando samba
samba
Junte-se (join AD) ao Controlador de Domínio (AD-DC)
Execute o comando abaixo para juntar-se ao Active Directory (DC1) a partir de seu Controlador de Domínio (DC2). Substitua: seu.domínio para seu cenário:
samba-tool domain join seu.dominio DC -Uadministrator --realm=seu.dominio
Ao final do processo, na última linha deve mostrar: Joined domain seu.dominio como mostra na figura abaixo:
Com o comando acima seu Controlador de Domínio DC2 deve juntar-se ao DC1 (Seu Controlador de Domínio PRINCIPAL).