Antes de tudo, vamos rever o que é um DNS.
DNS vem de Domain Name System ou, em português, Sistema de Nome de Domínio. DNS traduz domínio em endereço IP e vice-versa.
Os computadores ou servidores possuem um número que os identificam na internet. Esse número é conhecido como IP. O Endereço IP do servidor onde está o site www.categoriaoutros.com.br é o 45.93.101.37.
domínio é apenas uma forma de facilitar a memorização, já que ficaria difícil memorizarmos o endereço IP ao invés do domínio.
Um servidor DNS faz essa tradução para você. Ele diz: “Olha o endereço IP do domínio www.categoriaoutros.com.br é o 45.93.101.37”
categoriaoutros
Se você estiver executando o Samba como controlador de domínio do Active Directory, também precisará administrar um servidor DNS.
Um Active Directory faz bastante uso de DNS. Não é apenas para resolver endereços IP em nomes e vice-versa. Os clientes encontram seu(s) controlador(es) de domínio e outros serviços AD importantes por meio de consultas DNS, o que significa que seus clientes devem usar seu(s) controlador(es) de domínio como seus servidores de nomes. Não use mais nada entre seus clientes e controladores de domínio.
Zonas DNS no Samba
Uma zona dns é um espaço reservado para guardar os registros. Podemos criar uma zona para guardar registros dns que apontam para um servidor de imagens e outra zona para registros que apontem para servidor de documentos, por exemplo.
Essa explicação é um pouco rude, crua, mas podemos entender ao pensarmos em pastas como zonas. Mas ficou confuso ainda quanto ao termo registros? vamos tentar elucidar melhor. Registros são apontamentos, quando crio dentro de uma zona DNS um apontamento que diz, olha, ao acessar arquivos.categoriaoutros vá para o servidor de arquivos no IP 10.9.8.2, mas quando eu entrar com fotos.categoriaoutros vá para o servidor 13.5.6.3.
No exemplo acima, tenho dois registros: arquivos.categoriaoutros e fotos.categoriaoutros.
DNS no Samba
Quando compilamos o Samba criamos um domínio chamado lab.interno. Podemos ver esse domínio exibindo o conteúdo do arquivo smb.conf
maria@debian11VM:~$ cat /usr/local/samba/etc/smb.conf # Global parameters [global] dns forwarder = 192.168.50.6 netbios name = DEBIAN11VM realm = LAB.INTERNO server role = active directory domain controller workgroup = LAB
Veja acima em realm: LAB.INTERNO
Ao provisionarmos o samba com nosso domínio lab.interno, automaticamente serão criadas essas duas zonas avançadas:
- lab.interno que é a zona para o seu domínio
- _msdcs.lab.inerno que é o ForestDNSZone, que contém vários registros de serviço para todo o diretório.
O nome DC(Controlador de Domínio) padrão é DEBIAN11VM com IP 192.168.50.6
Posso Usar BIND para DNS
Samba pode usar tanto a sua própria ferramenta(implementação) Interna do DNS quando um outro módulo chamado BIND DLZ para gerir o dns. Mas essas duas implementações são novas e não cobrem ainda todas as funções que, por exemplo, o AD da Microsoft cobre.
O BIND está em milhares de milhares de servidores no mundo todo e é bastante consolidado, O Samba pode fazer uso do BIND, mas, por padrão, oferece seu Servidor DNS Interno. A página wiki.samba relata,
O DNS interno do Samba é uma nova implementação. Embora o BIND seja um DNS adulto e há muito tempo em produção em milhões de servidores, o módulo Samba BIND DLZ ainda é novo. É por isso que ambos os back-ends ainda não cobrem todos os recursos que você pode configurar com as ferramentas de DNS da Microsoft. Se você descobrir problemas ou recursos ausentes, abra um relatório de bug/solicitação de recurso em https://bugzilla.samba.org/.
Embora o DNS interno e os módulos BIND DLZ sejam novos, ambos suportam todos os requisitos básicos do Active Directory e muito mais.
Outra limitação que a página do samba relata é,
O gerenciamento de transferências de zona ainda não foi implementado. Relatório de bug nº 9951:DNS MMC: Falha na ativação das transferências de zona DNS no MMC
Opções do Comando “samba-tool dns”
Options: -h, --help mostra esta mensagem de ajuda e sai Available subcommands: add - Adicionar um registro DNS cleanup - Limpa registros DNS para um host DNS. delete - Excluir um registro DNS query - Consulta um nome. roothints - Consulte as dicas de raiz. serverinfo - Consulta de informações do servidor. update - Atualize um registro DNS zonecreate - Cria uma zona. zonedelete - Excluir uma zona. zoneinfo - Consulta de informações de zona. zonelist - Query for zones. zoneoptions - Altere as opções de envelhecimento da zona. For more help on a specific subcommand, please type: samba-tool dns <subcommand> (-h|--help)
Para cada registro, temos
A ipv4_endereco_string AAAA ipv6_endereco_string PTR fqdn_string CNAME fqdn_string NS fqdn_string MX "fqdn_string preferencia" SRV "fqdn_string porta prioridade peso" TXT "'string1' 'string2' ..."
Administrando DNS no Linux com samba-tool
Veja também: DNS: O que é Forward Zona e Zona Reversa?
O samba tem que estar iniciado!
acesse a pasta onde encontra-se o samba-tool
maria@debian11VM:~$ cd /usr/local/samba/bin
Daqui em diante, iremos estar dentro da pasta /usr/local/samba/bin
Exibindo Zonas com samba-tool
A sintaxe de uso é:
samba-tool dns zonelist nome-servidor -Uadministrator
Podemos substituir nome-servidor por DEBIAN11VM, por 192.168.50.6 ou ainda, se o samba estiver sendo executado na própria máquina, com localhost.
“-U administrator” é o nome do usuário super do samba.
Para exibir execute samba-tool dns zonelist localhost -Uadministrator
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns zonelist localhost -Uadministrator Password for [LAB\administrator]: 2 zone(s) found pszZoneName : lab.interno Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.lab.interno pszZoneName : _msdcs.lab.interno Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED pszDpFqdn : ForestDnsZones.lab.interno
Criando Zona Reversa com samba-tool
Resumidamente, zona reversa trata-se da conversão de um ip para um nome. Ao criar uma zona reversa o seu nome fica com essa sintaxe:
168.192.0.in-addr.arpa
Ou seja, o ip 192.168.0.0 ao contrário(reverso) e terminado com in-addr.arpa. Logicamente que 192.168.0.0 se refere a 192.168.0.0.24. Poderíamos usar outras faixas, como:
- 10.0.0.0/8 = permitindo um total de 16,777,214 endereços ips
- 172.16.0.0/12 = permitindo um total de 1,048,574 endereços ips
- 192.168.0.0/16 = permitindo um total de 65,534 endereços ips
Vamos criar zonas 🙂
A sintaxe é a seguinte
samba-tool dns zonecreate nome-servidor endereco-ip-ao-contrario.in-addr.arpa
Vamos executar
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns zonecreate localhost 50.168.192.in-addr.arpa -Uadministrator Password for [LAB\administrator]: Zone 50.168.192.in-addr.arpa created successfully
exiba as zonas
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns zonelist localhost -Uadministrator Password for [LAB\administrator]: 3 zone(s) found pszZoneName : 50.168.192.in-addr.arpa Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.lab.interno pszZoneName : lab.interno Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.lab.interno pszZoneName : _msdcs.lab.interno Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED pszDpFqdn : ForestDnsZones.lab.interno
Exibindo Informações da Zona com samba-tool
mostrando informações de uma zona
Execute samba-tool dns zoneinfo localhost empresa100 -U administrator
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns zoneinfo localhost empresa100 -U administratorPassword for [LAB\administrator]: pszZoneName : empresa100 dwZoneType : DNS_ZONE_TYPE_PRIMARY fReverse : FALSE fAllowUpdate : DNS_ZONE_UPDATE_SECURE fPaused : FALSE fShutdown : FALSE fAutoCreated : FALSE fUseDatabase : TRUE pszDataFile : None aipMasters : [] fSecureSecondaries : DNS_ZONE_SECSECURE_NO_XFER fNotifyLevel : DNS_ZONE_NOTIFY_LIST_ONLY aipSecondaries : [] aipNotify : [] fUseWins : FALSE fUseNbstat : FALSE fAging : FALSE dwNoRefreshInterval : 168 dwRefreshInterval : 168 dwAvailForScavengeTime : 0 aipScavengeServers : [] dwRpcStructureVersion : 0x2 dwForwarderTimeout : 0 fForwarderSlave : 0 aipLocalMasters : [] dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.lab.interno pwszZoneDn : DC=empresa100,CN=MicrosoftDNS,DC=DomainDnsZones,DC=lab,DC=interno dwLastSuccessfulSoaCheck : 0 dwLastSuccessfulXfr : 0 fQueuedForBackgroundLoad : FALSE fBackgroundLoadInProgress : FALSE fReadOnlyZone : FALSE dwLastXfrAttempt : 0 dwLastXfrResult : 0
Criando uma Forward Zone
Trata-se de uma zona para registros que convertem um nome em um endereço ip.
A sintaxe é a seguinte
samba-tool dns zonecreate nome-servidor nome-nova-zona -Uadministrator
Execute sudo ./samba-tool dns zonecreate localhost empresa100 -Uadministrator
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns zonecreate localhost empresa100 -Uadministrator Password for [LAB\administrator]: Zone empresa100 created successfully
Vamos exibir as novas zonas
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns zonelist localhost -Uadministrator Password for [LAB\administrator]: 4 zone(s) found pszZoneName : 50.168.192.in-addr.arpa Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.lab.interno pszZoneName : empresa100 Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.lab.interno pszZoneName : lab.interno Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED pszDpFqdn : DomainDnsZones.lab.interno pszZoneName : _msdcs.lab.interno Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE ZoneType : DNS_ZONE_TYPE_PRIMARY Version : 50 dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED pszDpFqdn : ForestDnsZones.lab.interno
Adicionando Novos Registros nas Zonas com samba-tool
Veja: DNS – Quando Usar os Tipos de Registros: A, AAAA, SRV, TXT, CNAME? e DNS – Tipos de Registros: A, CNAME, MX e TXT
Vamos adicionar alguns registros à zona empresa100.
#1 quando acessar video.empresa100 faça redirecionamento para 192.168.50.6
Execute samba-tool dns add localhost empresa100 video A 192.168.50.6 -Uadministrator
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns add localhost empresa100 video A 192.168.50.6 -Uadministrator [sudo] senha para maria: Password for [LAB\administrator]: Record added successfully
Então, video é um endereço(A) para 192.168.50.6
#2 Vamos criar mais dois. Quando acessar docs.empresa100 vá para 192.168.51.40 e quando acessar filmes vá para 10.4.5.3
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns add localhost empresa100 docs A 192.168.51.40 -Uadministrator Password for [LAB\administrator]: Record added successfully
e
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns add localhost empresa100 filmes A 10.4.5.3 -Uadministrator Password for [LAB\administrator]: Record added successfully
#3 Agora vamos adicionar registros na zona reversa. Lembre que a zona reversa é destinada a redirecionar um ip para um nome.
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns add localhost 50.168.192.in-addr.arpa 55 PTR exemplo.lab.interno -Uadministrator Password for [LAB\administrator]: Record added successfully
Acima, usamos 55 PTR para declarar que estamos criando um registro em uma zona reversa.
Dizemos então que estamos adicionando um PTR record ou registro PTR.
#4 adicionando registro SRV
permite serviços como os de mensagens instantânea ou voip ser redirecionado para um endereço uma porta e host diferentes.
Ele é utilizado para serviços que requerem informações adicionais além do endereço IP do servidor, como por exemplo, serviços de correio eletrônico, mensagens instantâneas e voz sobre IP.
Geralmente, o registro DNS SRV é utilizado em redes corporativas ou em ambientes que utilizam serviços específicos, como em sistemas de telefonia IP ou em serviços de mensagens instantâneas. Um exemplo de uso do registro DNS SRV seria em um ambiente de telefonia IP, onde os telefones IP utilizam esse registro para localizar o servidor de chamadas telefônicas. Nesse caso, o registro DNS SRV aponta para o endereço IP do servidor que gerencia as chamadas telefônicas. O registro DNS SRV é utilizado quando há a necessidade de especificar informações adicionais além do endereço IP do servidor, e é comumente utilizado em ambientes corporativos e em serviços específicos. veja mais em categoriaoutros
Adicionando um registro SRV a _tcp.lab.interno.
Execute samba-tool dns add localhost lab.interno _exemplo._tcp SRV ‘exemplo.lab.interno 8080 0 100’ -U administrator
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns add localhost lab.interno _exemplo._tcp SRV 'exemplo.lab.interno 8080 0 100' -U administrator [sudo] senha para maria: Password for [LAB\administrator]: Record added successfully
Uma observação sobre os registros SRV é que deve estar entre ‘ ‘.
Veja que temos porta 8080, prioridade como 0 e peso 100
#5 Adicionando um registro NS
NS significa name server. Serve para dizer quem é o servidor de nomes responsável(autoritativo) por um domínio ou subdomínio.
Execute samba-tool dns add localhost empresa100 @ NS novodc.lab.interno -U administrator
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns add localhost empresa100 @ NS novodc.lab.interno -U administrator [sudo] senha para maria: Password for [LAB\administrator]: Record added successfully
Exibindo os Registros das Zonas com samba-tool
#1 Execute samba-tool dns query localhost empresa100 @ ALL -U administrator para ver todas os registos dentro da zona
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns query localhost empresa100 @ ALL -U administrator Password for [LAB\administrator]: Name=, Records=3, Children=0 SOA: serial=5, refresh=900, retry=600, expire=86400, minttl=3600, ns=debian11vm.lab.interno., email=hostmaster.lab.interno. (flags=600000f0, serial=5, ttl=3600) NS: debian11vm.lab.interno. (flags=600000f0, serial=1, ttl=3600) NS: novodc.lab.interno. (flags=600000f0, serial=5, ttl=900) Name=docs, Records=1, Children=0 A: 192.168.51.40 (flags=f0, serial=3, ttl=900) Name=filmes, Records=1, Children=0 A: 10.4.5.3 (flags=f0, serial=4, ttl=900) Name=video, Records=1, Children=0 A: 192.168.50.6 (flags=f0, serial=2, ttl=900)
#2 para ver apenas registros NS execute samba-tool dns query localhost empresa100 @ NS -U administrator
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns query localhost empresa100 @ NS -U administrator Password for [LAB\administrator]: Name=, Records=2, Children=0 NS: debian11vm.lab.interno. (flags=600000f0, serial=1, ttl=3600) NS: novodc.lab.interno. (flags=600000f0, serial=5, ttl=900) Name=docs, Records=0, Children=0 Name=filmes, Records=0, Children=0 Name=video, Records=0, Children=0
Atualizando(update) Registros DNS com samba-tool
#1 alterando um registro A. Alteraremos docs de 192.168.51.40 para 19.18.5.99
maria@debian11VM:/usr/local/samba/bin$ ./samba-tool dns update localhost empresa100 docs A 192.168.51.40 19.18.5.99 -U administrator Password for [LAB\administrator]: Record updated successfully
#2 Esse próximo exemplo foi retirado do site wiki.samba. Vamos alterar um registro de recurso SOA. A parte de dados do registro SOA consiste em 7 elementos separados por espaços (‘ ‘) na seguinte ordem: nameserver, email, serial, refresh, retry, expire, minimum-ttl
O exemplo a seguir altera o endereço de e-mail do host master:
$ samba-tool dns updatesamdom.example.com @ SOA \ "dc1.samdom.example.com hostmaster.example.com 63 900 600 86400 3600" \ "dc1.samdom.example.com admin.example.com 64 900 600 86400 3600" -U administrator Password for [administrator@SAMDOM.EXAMPLE.COM]: Record updated successfully
Deletando Registros dns com samba-tool
Vamos excluir o registro docs do tipo A
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns delete localhost empresa100 docs A 19.18.5.99 -U administrator Password for [LAB\administrator]: Record deleted successfully
Deletando Zonas dns com samba-tool
Vamos excluir a zona reversa
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool dns zonedelete localhost 50.168.192.in-addr.arpa -U administrator Password for [LAB\administrator]: Zone 50.168.192.in-addr.arpa deleted successfully
Veja também: