Как arp управляет именами хостов твердости?

Когда я выполняю команду arp, я получаю следующее:

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

Все три имен хостов, которые присутствуют в отчете, могут также быть проверены с помощью ping-запросов с помощью ping hostname arp таблица,/proc/net/arp содержит только 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

Какой сервис arp управляет и проверяет с помощью ping-запросов использование для разрешения имени хоста?

Я попробовал несколько, но самым близким, который я получаю, является avahi-обзор. Однако это сообщает о большем количестве имен хостов относительно моей сети, чем отчеты о arp, и все имеют .local добавленный к имени.

Также два из трех имен хостов, что отчеты о arp являются удаленными системами человечности. Я не вспоминаю выполнение никакой специальной конфигурации в тех системах разрешать это поведение. Имя хоста "шлюза" обеспечивается маршрутизатором. Одна из связанных систем является raspian системой.

Как я настроил бы raspian для этого поведения? Как имена хостов передаются?

Какую команду я использовал бы для разрешения этих имен хостов?

Заключительное примечание: имена хостов, кажется, приходят и уходят на основе того, насколько устаревший данные всего лишь, я не полностью исследовал это. Я только знаю, что должен проверить с помощью ping-запросов от данного (человечность) хост к нему для получения имен хостов других систем. Я не определил объем, что запрашивает, наиболее быстро заполняют эту информацию.

После рассмотрения комментариев по состоянию на 20:00 EST 18 декабря. Я могу поделиться следующей информацией: строка хостов в /etc/nsswitch.conf:

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

никакие удаленные хосты не перечислены в /etc/hosts

avahi-resolve-address разрешает следующее:

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

Хотя о метке-N3050T сообщает arp, проверение с помощью ping-запросов его перестало работать. ping mark-N3050T.local сбои, но ping 192.168.1.138 успешно выполняется шлюз ping успешно выполняется. ping raspberrypi.local успешно выполняется даже при том, что о raspberrypi не сообщает arp

Когда я писал свое исходное сообщение ping mark-N3050T работал бы, таким образом, некоторое старение происходит, который удаляет это имя хоста. Я не нашел команду, которая обновит имя хоста. Различие между arp и ping - то, что arp разрешает IP-адрес к имени хоста, в то время как ping выполняет противоположное. Однако я ожидал бы симметрию в ответах.

Я только преследую это для увеличения моего понимания того, как сети LAN работают. Я действительно ценю любого, кто готов помочь мне.

1
задан 19 December 2016 в 04:46

2 ответа

протокол определения адресов (ARP) широковещательно передает пакет запроса ARP ко всем хостам в сети, говоря

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

, где IP A является IP, Вашим поиском и IP B является Ваш IP-адрес, если соответствия IP-адреса receving компьютера, это передает одноадресный ответ ARP обратно Вашему компьютеру с

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

и это - вся arp доза

1
ответ дан 3 December 2019 в 06:24

Вот последовательность:

  • Сначала arp добирается это - данные (кэш) от /proc/net/arp, Linux выставляет, это - кэш ARP через psuedo procfs файловая система /proc/net/arp файл для пространства пользователя. Ядро не хранит доменного имени, только IP-адреса; это походит на использование arp -n

  • Теперь, когда Вы хотите arp получить Вас имена хостов, arp будет просто следовать glibc nsswitch конфигурация, точно /etc/nsswitch.conf, и попытается получить Вас, имена хостов с помощью самой последовательности, упомянутой в том файле, например, примере, hosts: files mdns4 dns, в этом случае arp будет:

    • Проверьте /etc/hosts файл
    • Затем mdns (Многоадресно передайте DNS),
    • Общий DNS

    Только для замечания, если Вы видите .local в конце доменного имени затем это (по-видимому), разрешено mdns (если у Вас на самом деле нет такого TLD).

6
ответ дан 3 December 2019 в 06:24

Другие вопросы по тегам:

Похожие вопросы: