Por que as máquinas Windows podem resolver nomes locais quando o Linux não pode?

18

Eu tenho uma pequena rede com máquinas Windows e Linux conectadas a um roteador D-Link DIR-825.

As máquinas Windows na rede podem alcançar todas as outras máquinas pelo nome, enquanto as máquinas Linux podem alcançar outras máquinas apenas pelo endereço IP.

Eu posso ver todas as máquinas listadas com nomes e seus endereços atribuídos ao DHCP na lista de status do cliente DHCP na interface de administração da web do roteador.

Por que as máquinas Linux não conseguem encontrar nenhuma outra máquina pelo nome, enquanto o Windows não tem problemas em encontrar as máquinas Linux?

Per Salmi
fonte
2
Como é feita a sua resolução de nomes? DNS? Você tem um sufixo de pesquisa configurado?
Shane Madden
Todas as máquinas estão usando DHCP, conectadas ao roteador D-Link, onde parecem se registrar e isso provavelmente é suficiente para o Windows encontrar todas as máquinas. Mas as máquinas Linux realmente exigem um servidor DNS local que não seja o roteador?
Por Salmi
Não tem certeza sobre esse roteador específico, mas a maioria dos roteadores de consumo não integra clientes DHCP ao serviço DNS interno. A resposta de Joe provavelmente é seu culpado.
Shane Madden
Então as máquinas Linux responderiam às mensagens LLMNR, mas não as usariam para encontrar outras máquinas?
Por Salmi

Respostas:

32

Não sou especialista em rede e também estou pesquisando MUITO por respostas neste tópico. Minhas descobertas atuais são:

  • O Windows usa nomes NetBIOS, e esse protocolo, sendo difundido, permite que eles se encontrem sem nenhum servidor central.

  • Máquinas Linux em distribuições modernas usam nativamente um protocolo chamado Avahi , que também é um protocolo de transmissão independente do servidor. Máquinas de rede local possuem um sufixo .local, para que você possa executar o ping do Linux para o Linux usandoping hostname.local ou visualizá-las com o avahi-discoverpacote. alguns aplicativos no Gnome usam o avahi para listar máquinas na rede (por exemplo, o Visualizador da área de trabalho remota)

  • Instalar o SAMBA em uma máquina Linux atribuirá a ele um nome NetBIOS (ou, mais tecnicamente, fará com que uma máquina Linux se anuncie em solicitações de transmissão com seu nome NetBIOS, que é por padrão o nome do host) e que permita que as máquinas Windows encontrem o Linux uns .

  • Entendi: Embora as máquinas Linux com Samba respondam às solicitações do protocolo NetBIOS, com configurações padrão em distribuições como Ubuntu, ele não usará o NetBIOS como um método para resolver nomes, e é por isso que as máquinas Linux não podem "se ver" ou o Windows máquinas . Para isso, é necessário editar o /etc/nsswitch.confarquivo e adicionar winsà lista nesta linha:

    hosts: files mdns4_minimal [NOTFOUND=return] dns wins mdns4

  • Você pode precisar instalar winbind(e, se não for instalado automaticamente, libnss-winbind) pacote para o acima para o trabalho.

  • Portanto, para o problema de visibilidade, você instala o Samba em todas as máquinas Linux (e também edita o /etc/nsswitch.conf para ativar a resolução de nomes NetBIOS) ou instala o suporte Avahi nas máquinas Windows.

  • Quanto ao compartilhamento de arquivos, o Samba fornece ao Windows recursos de compartilhamento de arquivos de máquinas Linux. Não há necessidade de editar o /etc/nsswitch.conf para máquinas Linux para ver pastas compartilhadas entre si e Windows (e vice-versa) na seção "Rede" do Nautilus

Espero que isso tenha ajudado! : D

MestreLion
fonte
2
A nsswitch.congquestão: se ping HOSTNAMEvocê der um erro no sistema, esse é o sinal de que o pacote libnss-winbind é necessário.
Michael Stum
18

Por padrão, sem um servidor DNS, o Windows pode usar o NetBIOS (um protocolo de resolução de nomes da Microsoft) para descobrir os nomes de outros sistemas Windows locais na sua rede. Conforme mencionado nesta resposta , parece que você precisa configurar o SAMBA (ou pelo menos o winbind) no lado do Linux. Aqui está um conjunto básico de instruções :

Para habilitar a resolução de nomes netbios do Windows em um computador Linux, verifique se o Samba está instalado (embora o serviço smb não precise estar em execução). O pacote Samba inclui winbind, que permite que os nomes de host do Windows sejam resolvidos. Depois edite o /etc/nsswitch.conf e altere esta linha:

hosts: files dns

para isso:

hosts: files dns wins

Em seguida, teste executando o ping no nome do computador da máquina Windows na LAN:

$ ping windowsbox

BTW, isso não tem nada a ver diretamente com o WINS. O WINS é um servidor NetBIOS normalmente usado em redes maiores para reduzir o tráfego de broadcast, fornecer uma plataforma de resolução de nomes centralizada herdada e, finalmente, permitir que sistemas em redes diferentes conheçam o mapeamento NetBIOS-nome-para-IP um do outro.

Uma alternativa ao SAMBA seria configurar um servidor DNS e garantir que atualizações dinâmicas de DNS sejam configuradas ou que o DHCP possa registrar registros DNS.

Eric C. Singer
fonte
3

Provavelmente LLMNR .

joeqwerty
fonte
11
Então, isso faria as máquinas Windows encontrarem as caixas Linux usando as informações registradas no DHCP do roteador? Mas o Linux não suporta o uso dos nomes registrados no roteador para encontrar alguma coisa?
Por Salmi
3
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Mark Henderson
Não parece que o LLMNR explique por que o Windows pode encontrar as caixas do Linux, mas não o contrário. Se o Linux não usa LLMNR, o Windows encontraria o Windows, mas não o Linux?
Por Salmi
2

Você provavelmente só precisa configurar a resolução Avahi / mDNS. Faz o mesmo que o LLMNR no Windows.

juwi
fonte
0

O Linux pode resolver nomes locais, embora o software necessário não esteja instalado por padrão ...

A maioria das distribuições Linux faz algumas suposições sobre seus requisitos de software além do kernel ... Referência Debian DNSMasq

dnsmasq de pesquisa apt-cache ...

Eddie B
fonte