Когда я выполняю команду 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 работают. Я действительно ценю любого, кто готов помочь мне.
протокол определения адресов (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 доза
Вот последовательность:
Сначала 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),Только для замечания, если Вы видите .local
в конце доменного имени затем это (по-видимому), разрешено mdns
(если у Вас на самом деле нет такого TLD).