Guia do Linux/Avançado/SAMBA/Resolução de nomes de máquinas no samba

Resolução de nomes de máquinas no samba

editar

O Samba pode utiliza os seguintes métodos para resolução de nomes de máquinas na rede ([#s-s-samba-nome Nome de máquina (nome NetBios), Seção 18.2.1]). Eles estão listados em ordem de prioridade do mais para o menos recomendável:

    • lmhosts - Pesquisa primeiro o arquivo /etc/samba/lmhosts (veja [#s-s-samba-s-nameresolv-lmhosts Arquivo /etc/samba/lmhosts, Seção 18.5.1] para detalhes sobre este arquivo).
    • host - Faz a pesquisa no arquivo /etc/hosts e no DNS em busca do nome da máquina.
    • wins - Pesquisa no servidor WINS especificado pelo parâmetro wins server do smb.conf (veja [#s-s-samba-s-nameresolv-wins WINS, Seção 18.5.2]).
    • bcast - Envia um pacote para o endereço de broadcast de sua configuração de rede. Este geralmente deve ser o último método por gerar tráfego excessivo em uma rede com um considerável número de computadores.

A ordem que a resolução de nomes é feita pelo samba, pode ser modificada usando o parâmetro "name resolve order = [ordem]" no arquivo de configuração do samba (ex. name resolve order = lmhosts host wins bcast).


Arquivo /etc/samba/lmhosts

editar

Este arquivo é um banco de dados que mapeia o endereço IP com o nome NetBIOS de uma máquina, semelhante ao formato do /etc/hosts. Este arquivo é útil quando temos servidores que são acessados com frequência, quando servidores de rede estão em segmentos separados e não temos um servidor WINS entre os dois pontos para resolução de nomes, para definir máquinas WINS que serão acessados pela internet, etc. Para ter certeza da localização do arquivo lmhosts em sua máquina, digite smbclient -d 3 -L localhost e veja o diretório de pesquisa deste arquivo. Veja um exemplo de arquivo lmhosts em [#s-s-samba-s-nameresolv-lmhosts-unix-ex Exemplo de lmhosts do UNIX, Seção 18.5.1.1]. O uso do arquivo lmhosts evita o excesso de broadcasting na rede, pois a ordem padrão usada para a resolução de nomes do samba, procura primeiro resolver o nome procurando em arquivos lmhosts, depois usando dns, wins e broadcast. Dependendo do projeto de sua rede e como as máquinas resolvem os nomes, ele pode ser uma camada a mais de segurança contra um simples hijacking de servidor através de NetBEUI ou WINS (isso é evitado com o uso de domínios, veja [#s-s-samba-dom-config Configurando um servidor PDC no SAMBA, Seção 18.7.4]). OBS: Note que em clientes Windows que estejam em outra subrede, é necessário o arquivo \windows\lmhosts apontando para um servidor PDC mesmo que ele esteja apontando para o servidor WINS, caso contrário, a máquina não efetuará o logon. O formato do arquivo lmhosts do Windows é mais complexo do que o do Linux pois o sistema precisa de mais detalhes para resolver os nomes e tipos de máquinas no domínio. Veja o modelo lmhosts.sam em seu sistema Windows para compreender seu funcionamento.


Exemplo de lmhosts do UNIX

editar

O exemplo abaixo mapeia o endereço IP das máquinas (primeira coluna) com o respectivo nome de máquina (segunda coluna):

     172.16.0.34 servarq
     172.16.0.30 serverdom
     192.168.5.2 servwins
     172.16.0.3 servpdc
     172.16.0.1 gateway

Exemplo de lmhosts do Windows

editar

O arquivo possui uma sintaxe idêntica a do lmhosts do UNIX, mas alguns parâmetros especiais são especificados para ajudar o Windows resolver algumas coisas que não consegue fazer sozinho (principalmente com relação a identificação de função de máquinas em redes segmentadas):

     192.168.0.5 servarq
     192.168.0.1 serverpdc #PRE #DOM:dominio
     192.168.0.2 "serverwins    \0x1e" #PRE
     #INCLUDE \\serverpdc\lmhosts

A primeira entrada do arquivo é a tradicional, onde o nome da máquina NetBIOS é associada ao IP. A segunda utiliza dois parâmetros adicionais:

    • #PRE - Faz a entrada ser carregada logo na inicialização e se tornando uma entrada permanente no cache NetBIOS.
    • #DOM - Especifica que a máquina é um controlador de domínio. A máquina deverá ter sido configurada para a função de domínio, pois caso contrário isso simplesmente não funcionará.

Note que ambos #PRE e #DOM devem ser especificados em maiúsculas. O terceiro exemplo faz uma referência permanente (#PRE) a máquina servidora WINS serverwins. Neste exemplo é usada uma característica especial para especificar a ID hexadecimal da máquina na rede 1e. O quarto utiliza um include para associar outro arquivo ao atual, útil quando temos um compartilhamento que distribui um arquivo lmhosts para diversas máquinas na rede. De preferência, utilize sempre uma diretiva #PRE para todas as máquinas especificadas na diretiva #INCLUDE em seu arquivo de configuração. Para a especificação de ID de serviço manual, é necessário manter os 15 caracteres no nome da máquina (preenchendo os restantes com espaços, caso seja preciso). O último caracter é o código hexadecimal que identifica o serviço de rede (veja [#s-s-samba-c-workgroup-linux-nmblookup nmblookup, Seção 18.14.2.9.3] para ver a lista de serviços e sua respectiva função). OBS: Caso crie este arquivo em um editor de textos do Linux, não se esqueça de converter o arquivo para que contenha o CR LF no final das linhas.


Este é um serviço de resolução de nomes que funciona de forma semelhante ao DNS, só que voltado para o NetBIOS. Quando uma máquina cliente NetBIOS entra na rede, o servidor WINS pega seu nome e IP e inclui em uma tabela para futura consulta pelos clientes da rede. Esta tabela consultada toda vez que um cliente NetBIOS solicita um nome de máquina, componentes do grupo de trabalho ou domínio na rede. Uma outra aplicação importante de um servidor WINS é permitir a resolução de nomes em pontos de redes que requerem roteamento, a simplicidade de um protocolo não roteável como o NetBIOS fica limitada a simplicidade das instalações de rede. Um servidor WINS pode ser instalado em cada ponta da rede e eles trocarem dados entre si e atualizar suas tabelas de nomes/grupos de trabalhos/IPs. A resolução de nomes de máquinas será feita consultando diretamente a máquina WINS ao invés de broadcasting (que geram um tráfego alto na rede).


Configurando o servidor WINS

editar

Para ativar o servidor WINS no samba, inclua as seguinte linha na seção [global] do seu arquivo /etc/samba/smb.conf:

     [global]
     wins support = yes
     wins proxy = no
     dns proxy = no
     max wins ttl = 518400

O parâmetro wins proxy pode ser necessário para alguns clientes antigos que tenham problemas no envio de suas requisições WINS. O dns proxy permite que o servidor WINS faça a pesquisa no DNS para localização de nomes de máquinas caso não exista no cache. Ambas as opções wins support, wins proxy e dns proxy tem como valor padrão não. Pronto, seu servidor samba agora suporta WINS. Fácil, prático e rápido :-) Se estiver configurando uma subrede com masquerade para acesso a um PDC ou um servidor WINS, você terá que mexer no gateway central para apontar uma rota para o gateway masquerade. O motivo disto é porque o masquerade do Linux atua somente nos cabeçalhos, mas o IP da estação é enviada e processada pelo PDC para retornar uma resposta. Da mesma forma, este IP é registrado no servidor WINS para uso das estações de trabalho. Isto só vai ser resolvido quando for escrito um módulo de conntrack para conexões SAMBA (até o lançamento do kernel 2.4.22, isso ainda não ocorreu). OBS1: NUNCA configure mais de um servidor WINS em uma mesma rede. OBS2: NÃO especifique o parâmetro wins server caso esteja usando o suporte a WINS.


Configurando o Cliente WINS

editar

Para os clientes da rede (Linux, Windows, OS/2, etc.) fazer uso das vantagens da resolução de nomes usando o WINS, é necessário configurar para que eles o utilizem para resolver os nomes de máquinas. Isto é feito da seguinte forma em cada um dos sistemas operacionais:

  • Linux
    Adicione a linha wins server = ip_do_servidor_WINS na seção global do arquivo /etc/samba/smb.conf:
     [global]
     wins server = 192.168.1.1

Após isto, reinicie o servidor samba. Caso esteja executando o servidor via inetd, digite: killall -HUP nmbd. Se estiver rodando através de daemons: /etc/init.d/samba restart. Não é necessário reiniciar o computador!

  • Windows 9x
    Clique com o botão direito sobre o ícone Ambiente de Rede e selecione propriedades. Na janela de configuração de rede clique na aba Configuração. Na lista que aparece selecione o protocolo TCP/IP equivalente a sua placa de rede local e clique em Propriedades.

Na tela de Propriedades TCP/IP clique em Configurações WINS e marque a opção Ativar resolução WINS. Digite o endereço do servidor WINS e clique em Adicionar. OBS: Se utilizar um servidor DHCP em sua rede local e o endereço do servidor WINS também é oferecido através dele, você poderá marcar a opção Usar DHCP para resolução WINS. Note que esta opção somente estará disponível se escolher a opção Obter um endereço IP automaticamente na tab Endereços IP. Clique em OK até fechar todas as telas e reinicie quando o computador perguntar :-)