Como o comando arp resolve nomes de host?

0

Quando eu executo o comando arp, recebo o seguinte:

mark@mark-P8Z77-I-0:~$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.128            ether   08:86:3b:c8:d8:09   C                     eth0
192.168.1.4              ether   e0:91:f5:7c:7c:34   C                     eth0
192.168.1.110            ether   9c:d3:6d:b1:d3:49   C                     eth0
192.168.1.101            ether   94:10:3e:48:60:0d   C                     eth0
mark-N3050T              ether   d0:17:c2:ad:ff:58   C                     eth0
192.168.1.117            ether   b8:27:eb:ad:2e:72   C                     eth0
192.168.1.129                    (incomplete)                              eth0
192.168.1.103            ether   ec:1a:59:cb:42:25   C                     eth0
192.168.1.111            ether   54:4a:16:02:54:a8   C                     eth0
192.168.1.127            ether   84:ba:3b:05:6d:45   C                     eth0
192.168.1.106            ether   a4:77:33:2b:29:40   C                     eth0
192.168.1.122            ether   00:18:dd:04:6a:cc   C                     eth0
mark-N53Jf               ether   48:5d:60:71:7f:be   C                     eth0
gateway                  ether   28:c6:8e:20:a8:e5   C                     eth0

Todos os três nomes de host presentes no relatório também podem receber ping usando ping hostname A tabela arp, / proc / net / arp contém apenas endereços IP:

mark@mark-P8Z77-I-0:~$ cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
192.168.1.128    0x1         0x2         08:86:3b:c8:d8:09     *        eth0
192.168.1.4      0x1         0x2         e0:91:f5:7c:7c:34     *        eth0
192.168.1.110    0x1         0x2         9c:d3:6d:b1:d3:49     *        eth0
192.168.1.101    0x1         0x2         94:10:3e:48:60:0d     *        eth0
192.168.1.138    0x1         0x2         d0:17:c2:ad:ff:58     *        eth0
192.168.1.117    0x1         0x2         b8:27:eb:ad:2e:72     *        eth0
192.168.1.129    0x1         0x0         00:00:00:00:00:00     *        eth0
192.168.1.103    0x1         0x2         ec:1a:59:cb:42:25     *        eth0
192.168.1.111    0x1         0x2         54:4a:16:02:54:a8     *        eth0
192.168.1.127    0x1         0x2         84:ba:3b:05:6d:45     *        eth0
192.168.1.106    0x1         0x2         a4:77:33:2b:29:40     *        eth0
192.168.1.122    0x1         0x2         00:18:dd:04:6a:cc     *        eth0
192.168.1.121    0x1         0x2         48:5d:60:71:7f:be     *        eth0
192.168.1.1      0x1         0x2         28:c6:8e:20:a8:e5     *        eth0

Qual serviço o comando arp e o ping usam para resolver o nome do host?

Eu tentei vários, mas o mais próximo que eu fico é avahi-browse. No entanto, ele informa mais nomes de host em minha rede do que relatórios arp e todos têm .local anexado ao nome.

Além disso, dois dos três nomes de host que arp relatórios são sistemas ubuntu remotos. Não me lembro de realizar qualquer configuração especial nesses sistemas para permitir esse comportamento. O nome do host "gateway" é fornecido pelo roteador. Um dos sistemas conectados é um sistema raspiano.

Como eu configuraria o raspian para esse comportamento? Como os nomes de host são transferidos?

Qual comando eu usaria para resolver esses nomes de host?

Uma nota final: Os nomes de host parecem vir e ir com base em como os dados são obsoletos, mas eu não investiguei totalmente isso. Eu só sei que eu preciso fazer ping de um determinado host (ubuntu) para que ele capture nomes de host de outros sistemas. Eu não escorei quais consultas mais rapidamente preenchem essa informação.

Depois de analisar os comentários a partir das 20h de 18 de dezembro, 18, posso compartilhar as seguintes informações: A linha de hosts em /etc/nsswitch.conf :

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns mdns4 myhostname

não há hosts remotos listados em /etc/hosts

avahi-resolve-address resolve o seguinte:

192.168.1.1    Failed to resolve: Timeout reached (is "gateway")
192.168.1.117 raspberrypi.local    (shows in arp report as 192.168.1.117)
192.168.1.138 mark-3050T.local    (shows in arp as mark-3050T)
192.168.1.130 is currently offline but is similar to 192.168.1.130

Embora o mark-N3050T seja relatado pelo arp, o ping falha. ping mark-N3050T.local falha, mas ping 192.168.1.138 é bem-sucedido O gateway de ping é bem-sucedido. ping raspberrypi.local é bem-sucedido, apesar de o raspberrypi não ser relatado pelo arp

Quando eu estava escrevendo minha postagem original, ping mark-N3050T funcionaria, então está ocorrendo algum envelhecimento que remove esse nome de host. Eu não encontrei o comando que irá atualizar o nome do host. A diferença entre arp e ping é que arp está resolvendo um endereço IP para um nome de host enquanto o ping está executando o oposto. No entanto, eu esperaria simetria nas respostas.

Estou apenas buscando isso para aumentar minha compreensão de como funciona a rede LAN. Eu aprecio qualquer um que esteja disposto a me ajudar.

    
por mrh53 17.12.2016 / 23:18

2 respostas

4

Aqui está a sequência:

  • No início, arp obtém seus dados (cache) de /proc/net/arp , o Linux expõe seu cache ARP através do arquivo procfs do psuedo /proc/net/arp do sistema de arquivos para o usuário. O kernel não armazena nenhum nome de domínio, apenas endereços IP; isso é análogo ao uso de arp -n

  • Agora, quando você quiser que arp obtenha os nomes de host, arp simplesmente seguirá a configuração glibc nsswitch , precisamente /etc/nsswitch.conf , e tentará obter os nomes de host usando a própria sequência mencionado nesse arquivo, por exemplo um exemplo é hosts: files mdns4 dns , nesse caso arp :

    • Verifique o arquivo /etc/hosts
    • Em seguida, mdns (DNS multicast)
    • DNS geral

    Apenas para observar, se você vir .local no final de um nome de domínio, ele (presumivelmente) será resolvido por mdns (a menos que você realmente tenha esse TLD).

por heemayl 18.12.2016 / 04:21
1

protocolo de resolução de endereço (ARP) transmite um pacote de solicitação ARP para todos os hosts na rede dizendo

Source=MAC-ADDRESS B
Destination=????    
who-has IP A Tell IP B

em que IP A é o ip que você procura e IP B é o seu endereço IP, se o endereço IP do computador receptivo corresponder, ele envia uma resposta ARP unicast para o seu computador com

Source=MAC-ADDRESS A
Destination=MAC-ADDRESS B    
IP A is-at MAC-Address A

e isso é tudo dose arp

    
por Dam30n 18.12.2016 / 01:14