Introdução
Recentemente, implementei o Samba 4 para um cliente que deu um pouco de trabalho, pois a infraestrutura contava com redes com várias subnets.Analisando a documentação oficial (SambaWiki), eu verifiquei que o próprio Samba roda um DNS interno. Porém, os computadores que precisavam ingressar no AD, fazem parte de redes diferentes e a configuração com o DNS interno não permitia fazer a comunicação dos computadores com o DC.
Para resolver esse problema, foi necessário encaminhar as requisições de resolução de nomes para o DNS principal da rede. A imagem abaixo, mostra a infraestrutura básica para implementar o Samba 4: Observando a figura, temos duas redes neste cenário: 1. A rede 192.167.10.0, onde encontra-se o DNS principal da rede e outros hosts (podendo ser clientes do Samba). Para esse nosso teste, os hosts do cenário tem os seguintes IPs:
O objetivo principal deste artigo, é fazer o Samba reportar-se a diferentes redes. Portanto, não será demonstrado como ingressar um computador no domínio. Poderá ser um tópico para outra ocasião. Para evitar problemas de bloqueio, eu desabilitei o Firewall do servidor do Samba 4 e as políticas de SELinux. Os testes executados neste artigo foram realizados com a distribuição CentOS 6.4. |
|
Instalação do Samba 4
Com a instalação mínima do CentOS 6.4, executar os seguintes comandos:# yum install gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils bind wget -y
Incluir as opções acl e user_xattr no arquivo “/etc/fstab” na partição onde está o diretório “/usr”. Estas opções devem ser acrescentadas após a opção defaults. Seu arquivo “/etc/fstab”, deverá ficar parecido com a linha abaixo: /dev/mapper/VolGroup-lv_root / ext4 defaults,acl,user_xattr 1 1
Para esse teste, o “/usr” estava na partição /. Antes de compilarmos o Samba, precisamos remontar o sistema de arquivos: # mount -o remount / Para verificar se o sistema está montado com as opções acl e user_xattr, execute: # mount | grep acl Deve retornar algo, como:
Para uma lista completa dos requisitos do Samba 4, acesse: Baixar a última versão estável do Samba 4: # cd /usr/src/ Compilar o Samba 4: # ./configure Se você desejar exportar para a variável PATH, os diretórios utilizados pelo Samba (o que é aconselhável), digite os seguintes comandos: # echo “export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/local/samba/sbin:/usr/local/samba/bin” >> /root/.bashrc Samba 4 instalado. Hora de fazer as configurações básicas antes de configurarmos o AD DC. Dois arquivos importantes que devem ser editados são: “/etc/hosts” e “/etc/resolv.conf”. Nesse nosso teste, o nome do host será samba-4 e o nome do domínio testesamba.com.br. O arquivo “/etc/hosts” deverá ficar da seguinte forma: 127.0.0.1 localhost
127.0.0.1 samba-4.testesamba.com.br samba-4 192.167.0.251 samba-4.testesamba.com.br samba-4 O IP 192.167.0.251 é o IP escolhido para o servidor que irá rodar o Samba 4. Já o arquivo “/etc/resolv.conf”, deverá ficar da seguinte forma: search testesamba.com.br
nameserver 192.167.10.51 Iremos utilizar o DNS BIND no servidor do Samba 4, que irá encaminhar a resolução de nomes para o servidor DNS externo (principal DNS de toda a rede). Observe que no arquivo “/etc/resolv.conf”, o nosso servidor de nomes está configurado com o IP do servidor DNS externo. Essa configuração é mais utilizada para redes que possuem várias sub-redes e também vários domínios, mas o Samba precisa reportar-se a todas as redes. |
|
Configuração
Vamos configurar o domínio para o Samba 4:Execute:
# samba-tool domain provision Responda às opções:
E aguarde a configuração terminar. Com essa configuração, o Samba 4 irá solicitar a resolução de nomes para o servidor BIND, rodando em seu próprio servidor, e o BIND irá encaminhar as requisições para o servidor principal da rede (essa configuração será realizada a seguir). Ao final da execução do comando anterior, veremos as seguintes informações: Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: SAMBA-4 NetBIOS Domain: TESTESAMBA DNS Domain: testesamba.com.br DOMAIN SID: S-1-5-21-1472350804-1383287446-2542997206 Configuramos o arquivo “/etc/named.conf”, incluindo na seção options o seguinte conteúdo: forwarders {192.167.10.51;};
…que é o IP do servidor DNS principal da rede. Até aqui, as configurações foram realizadas no no próprio servidor do Samba. Agora, precisamos fazer algumas configurações no servidor DNS principal. No arquivo “/etc/named.conf”, devemos incluir a zona do domínio do Samba: zone “testesamba.com.br” {
type master; file “data/samba-4.db”; }; Observe que informamos que o arquivo de configuração da zona testesamba.com.br é samba-4.db, que criaremos dentro do diretório “/var/named/data/”. Este arquivo deverá ter o seguinte conteúdo: $TTL 86400
$ORIGIN testesamba.com.br. @ IN SOA localhost. root.testesamba.com.br. ( 2013300777 ; serial 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS samba-4 samba-4 IN A 192.167.0.251 _kerberos._tcp.testesamba.com.br. IN SRV 0 100 88 samba-4 _ldap._tcp.testesamba.com.br. IN SRV 0 100 389 samba-4 _kpasswd._udp.testesamba.com.br. IN SRV 0 0 464 samba-4 Devemos também, incluir o servidor do Samba na zona reversa do DNS. O arquivo da configuração da zona reversa do meu servidor é “/var/named/rev/0.167.192.db”: 251 IN PTR samba-4.testesamba.com.br.
Reinicie o serviço do BIND no servidor DNS principal e também no servidor do Samba: # service named start Tudo certo com o DNS. Agora, podemos iniciar o Samba e fazer alguns testes (voltar a executar os comandos no servidor do Samba, pois as configurações no DNS principal terminaram). Execute: # samba Pode usar o comando ps aux | grep samba, para verificar se os processos estão em execução. Agora executamos os seguintes comandos, para verificar o funcionamento do Samba. Para listar os compartilhamentos do Samba: # smbclient -L localhost -U% Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.0.9) Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9] Server Comment --------- ------- Workgroup Master --------- ------- Para testar a autenticação no compartilhamento netlogon do Samba: # smbclient //samba-4.testesamba.com.br/netlogon -UAdministrator%’p@ssw0rd’ -c ‘ls’ Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9] . D 0 Wed Sep 4 15:36:58 2013 .. D 0 Wed Sep 4 15:37:35 2013 52726 blocks of size 131072. 38573 blocks available Para checar as configurações do arquivo “smb.conf”: # testparm Após os testes, podemos continuar com a configuração do domínio. Vamos ajustar a configuração do Kerberos. Renomeie o arquivo padrão de configuração: # mv /etc/krb5.conf /etc/krb5.conf.old Copie o arquivo criado pelo Samba para o nosso domínio: # ln -s /usr/local/samba/private/krb5.conf /etc/ O arquivo “krb5.conf” deve ter o seguinte conteúdo: [libdefaults]
default_realm = TESTESAMBA.COM.BR dns_lookup_realm = false dns_lookup_kdc = true Iniciamos um ticket do Kerberos para o usuário Administrator: # kinit [email protected] Password for [email protected]: Warning: Your password will expire in 41 days on Wed Oct 16 16:05:41 2013 Para verificarmos o ticket gerado: # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: [email protected] Valid starting Expires Service principal 09/04/13 16:11:36 09/05/13 02:11:36 krbtgt/[email protected] renew until 09/05/13 16:11:32 Para testar a autenticação no Samba utilizando Kerberos, executamos: # smbclient -k //samba-4.testesamba.com.br/netlogon -c ‘ls’ Domain=[TESTESAMBA] OS=[Unix] Server=[Samba 4.0.9] . D 0 Wed Sep 4 16:05:22 2013 .. D 0 Wed Sep 4 16:05:50 2013 52726 blocks of size 131072. 38572 blocks available Para testar se o DNS está funcionando corretamente, execute o seguinte comando: Obs.: o comando abaixo, realiza o teste para uma consulta ao serviço LDAP. # host -t SRV _ldap._tcp.testesamba.com.br. _ldap._tcp.testesamba.com.br has SRV record 0 100 389 samba-4.testesamba.com.br. Se o resultado do comando acima for diferente, por exemplo, conter no final: not found: 3(NXDOMAIN), alguma coisa errada tem com o DNS, tanto no servidor do Samba 4, como também no servidor DNS principal. Com isso, você já pode ingressar com os computadores de outras sub-redes no servidor do Samba 4, pois as requisições de resolução de nome para o Samba serão encaminhadas por um servidor DNS central, que irá fazer o tratamento correto. |