Windows 10 usa mDNS para resolução de nomes na rede local
Cenário: servidor Linux rodando Samba com clientes Windows.
Quando acessamos, num grupo de trabalho, outra máquina na rede local pelo
nome, digamos \\CENTOS
, o Windows 10 tentará os seguintes
protocolos para achá-la: NetBIOS, mDNS e LLMNR.
16:57:54.025570 IP 192.168.2.2.netbios-ns > 192.168.2.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST 16:57:54.025651 IP 192.168.2.2.mdns > 224.0.0.251.mdns: 0 A (QM)? CENTOS.local. (30) 16:57:54.025725 IP6 fe80::f0a4:cbb5:c600:f448.mdns > ff02::fb.mdns: 0 A (QM)? CENTOS.local. (30) 16:57:54.025870 IP 192.168.2.2.mdns > 224.0.0.251.mdns: 0 AAAA (QM)? CENTOS.local. (30) 16:57:54.025929 IP6 fe80::f0a4:cbb5:c600:f448.mdns > ff02::fb.mdns: 0 AAAA (QM)? CENTOS.local. (30) 16:57:54.026235 IP6 fe80::f0a4:cbb5:c600:f448.51438 > ff02::1:3.hostmon: UDP, length 24 16:57:54.026301 IP 192.168.2.2.51438 > 224.0.0.252.hostmon: UDP, length 24 16:57:54.026464 IP6 fe80::f0a4:cbb5:c600:f448.64716 > ff02::1:3.hostmon: UDP, length 24 16:57:54.026513 IP 192.168.2.2.64716 > 224.0.0.252.hostmon: UDP, length 24 16:57:54.459818 IP6 fe80::f0a4:cbb5:c600:f448.64716 > ff02::1:3.hostmon: UDP, length 24 16:57:54.459863 IP 192.168.2.2.64716 > 224.0.0.252.hostmon: UDP, length 24 16:57:54.459873 IP6 fe80::f0a4:cbb5:c600:f448.51438 > ff02::1:3.hostmon: UDP, length 24 16:57:54.459878 IP 192.168.2.2.51438 > 224.0.0.252.hostmon: UDP, length 24
Mais interessante ainda é que também responde às requisições mDNS:
17:02:10.520914 IP6 centos.mdns > ff02::fb.mdns: 0 A (QM)? WIN10.local. (29) 17:02:10.521021 IP centos.mdns > 224.0.0.251.mdns: 0 A (QM)? WIN10.local. (29) 17:02:10.521851 IP6 fe80::f0a4:cbb5:c600:f448.mdns > ff02::fb.mdns: 0*- [0q] 1/0/0 A 192.168.2.2 (39) 17:02:10.521964 IP 192.168.2.2.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/0 A 192.168.2.2 (39)
Versões anteriores (Vista até 8.1) usam apenas NetBIOS e LLMNR.
Samba responde às requisições NetBIOS através do
nmbd
(nmb.service
). Para os demais protocolos,
existem Avahi (mDNS) e systemd-resolved
(mDNS e LLMNR).
Avahi (avahi-daemon.service
) é preferido por ser a implementação
mDNS mais popular e robusta para Linux e por causa da integração com o Samba,
que registra os serviços DNS-SD _device-info._tcp
e
_smb._tcp
automaticamente. Dica: mdns name = mdns
na
seção [global]
de /etc/samba/smb.conf
(disponível
a partir do Samba 4.8.0) publica o nome da máquina (/etc/hostname
) ao invés do sempre
maiúsculo nome NetBIOS.
Com a remoção do protocolo SMB 1.0
a patir do Windows 10 1709, o serviço "Pesquisador de Computadores" (Browser
) é igualmente
removido. Ícones dos computadores não aparecerão em "Rede" no Windows
Explorer. Seus substitutos são os serviços "Host de Provedor da Descoberta de
Função" (fdPHost
) e "Publicação de Recursos de Descoberta de
Função" (FDResPub
). A
Microsoft recomenda
habilitá-los manualmente com "Automático (Atraso na Inicialização)". No
entanto, mesmo em "Manual", serão iniciados automaticamente caso a "Descoberta
de rede", configurável em "Central de Rede e Compartilhamento → Configurações
de compartilhamento avançadas", esteja ativa. Requer Web Services for Devices
(WSD), que não é suportado pelo Samba. Não confundir com WS-Discovery, que é o
protocolo de descoberta sobre o qual WSD é construído.
Além disso,
a partir do Samba 4.11.0, SMB 1.0 está desativado no servidor (server min protocol = SMB2_02
na seção [global]
de /etc/samba/smb.conf
). "Rede"
não será populada nos Windows anteriores também, portanto. A opção
server min protocol = NT1
volta ao comportamento antigo, mas é
bom evitar, pois é um protocolo inseguro. Note que a resolução de nomes via
NetBIOS continua funcionando ao acessar diretamente o servidor, o que pode ser
automatizado com atalhos no Windows Explorer.
A Netgear desenvolveu o wsdd2
(GPLv3) para uso em seus
Network-Attached Storage (NAS), mantido
neste repositório. Suporta WSD
e LLMNR. A partir da versão 1.8.5, funciona bem. Infelizmente, não está no
repositório oficial das principais distribuições, requerendo pacote de
terceiros ou compilação manual.
É uma pena a Microsoft ainda não ter implementado a listagem dos computadores
da rede local com mDNS + DNS-SD, talvez usando
_workstation._tcp
(publish-workstation=yes
na seção
[publish]
de /etc/avahi/avahi-daemon.conf
).
Melhoraria a interoperabilidade, algo que a empresa está levando mais a sério
de uns anos para cá. mDNS foi desenvolvido pela Apple e é suportado em seus
softwares. Avahi cobre os demais Unix-like.
Relacionado:
Guia de configuração do Samba não-PDC
Comentários
Postar um comentário