ARP hostnames problem

1

Estou tendo problemas com a exibição de nomes de host de dispositivos localizados em minha LAN. No meu primeiro laptop (Ubuntu 18.04 LTS Desktop edition) resultado do seguinte comando:

arp -a

É exatamente o que eu quero:

X (192.168.56.243) at 40:a3:cc:99:2d:66 [ether] on wlan0
test-test-test (192.168.56.146) at 48:bf:6b:e3:bf:5a [ether] on wlan0
TP-Link_Archer_ (192.168.56.1) at 10:7b:44:40:61:70 [ether] on wlan0

Usando o nmap , posso verificar minha LAN usando este comando:

nmap -sn 192.168.56.0/24

E obtenho os resultados perfeitos com nomes de host:

Starting Nmap 7.60 ( https://nmap.org ) at 2018-08-07 09:07 EDT
Nmap scan report for TP-Link_Archer_ (192.168.56.1)
Host is up (0.0054s latency).
Nmap scan report for ZZ (192.168.56.156)
Host is up (0.00045s latency).

No entanto, em outro laptop com o Debian 9 x64 Minimal instalado, a parte inteira dos nomes de host está faltando. Sempre que eu emito arp -a , recebo o seguinte:

? (192.168.56.243) at 40:a3:cc:99:2d:66 [ether] on wlan0
? (192.168.56.146) at 48:bf:6b:e3:bf:5a [ether] on wlan0
? (192.168.56.1) at 10:7b:44:40:61:70 [ether] on wlan0

Além disso, a varredura com nmap -sn 192.168.56.0/24 produz esta saída:

Starting Nmap 7.60 ( https://nmap.org ) at 2018-08-07 09:17 EDT
Nmap scan report for 192.168.56.1
Host is up (0.0054s latency).
Nmap scan report for 192.168.56.156
Host is up (0.00045s latency).

Eu honestamente não faço ideia do que está acontecendo, muito provavelmente estou perdendo alguma coisa na instalação do Debian Minimal , que está instalada no Ubuntu. Mas eu não tenho idéia de onde encontrar a parte que está faltando, então a máquina Debian pode começar a me mostrar nomes de host.

Alguma idéia?

EDITAR: Meu /etc/nsswitch.conf é exatamente isso:

root@zxcv:/home/test# cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the 'glibc-doc-reference' and 'info' packages installed, try:
# 'info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

No entanto, eu configurei uma VM com adaptador de rede em ponte, instalei a mesma versão do Debian Minimal e sou capaz de obter os nomes de host para todos os IPs. A questão agora é, quais pacotes / módulos / serviços está faltando o Debian em falta, o que impede de obter nomes de host?

    
por RedS 07.08.2018 / 15:13

2 respostas

0

Você não tem acesso ao servidor DNS que pode converter endereços IP em nomes.

Existem outras maneiras de associar nomes de host e endereços IP, mas se você tiver mais de um computador, o DNS é sua melhor resposta.

E, em resposta ao seu comentário, sim, o /etc/resolv.conf deve conter o endereço do servidor DNS. Em uma rede pequena, isso geralmente é o mesmo que o roteador.

    
por 07.08.2018 / 19:37
1

arp está interrogando seu sistema para determinar como ele pode converter IP's em nomes de host. Se você usar a opção -n , ela renunciará a isso e simplesmente mostrará os IPs sem nenhuma tradução para nomes de host.

Como a maioria das ferramentas no Linux, arp usa o NS (Name Service Switch) para fazer as pesquisas. Se você usar o comando strace your arp , poderá ver tudo isso:

$ strace -s 2000 arp -a
...
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 5

Depois de procurar neste arquivo, arp descobrirá como é suposto procurar nomes de host.

$ grep hosts: /etc/nsswitch.conf
#hosts:     db files nisplus nis dns
hosts:      files dns myhostname

Isso diz para procurar nos arquivos 1st, depois perguntar ao DNS 2nd ... A palavra files aqui significa usar o arquivo /etc/hosts do sistema. Você pode saber como o NS faria isso usando o comando getent hosts .

Exemplo

Na minha VM do CentOS 7, por exemplo:

$ arp -a
? (10.0.2.3) at 52:54:00:12:35:03 [ether] on eth0
gateway (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0
$ arp -an
? (10.0.2.3) at 52:54:00:12:35:03 [ether] on eth0
? (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0

Se perguntarmos a getent procurando pelo IP 10.0.2.2:

$ getent hosts 10.0.2.2
10.0.2.2        gateway

Os IPs, se não estiverem presentes localmente em qualquer arquivo, serão procurados no DNS a seguir. Como meus IPs são todos IPs privados para essa VM, e eles não estão explicitamente no DNS definido da minha VM, que é incidentalmente definido aqui:

$ more /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.2.3

OBSERVAÇÃO: arp não tem outra opção senão mostrar um ponto de interrogação, porque não encontrou nenhum nome para usar.

    
por 07.08.2018 / 15:47