Существуют варианты этого вопроса, но я не могу быть уверен, что была задана именно моя ситуация.
Я настраиваю простую сеть Ethernet, которая выглядит так:
На узле 0 ("rpi1")Я запускаю dnsmasq как сервер DNS и DHCP. Вот часть его/etc/dnsmasq.conf
(за вычетом сведений о MAC-адресе ):
# Assign static IPs to cluster members
# Format = MAC:hostname:IP
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi1,10.0.0.1 # Node 0
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi2,10.0.0.2 # Node 1
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi3,10.0.0.3 # Node 2
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi4,10.0.0.4 # Node 3
. Оба аспекта DNS и DHCP работают. Каждому узлу назначается его предполагаемый 10.0.0.X
IP-адрес, и я могу разрешить любой домен на любом узле, запустив, например,.dig rpi4
(->... 10.0.0.4
). И, например, если я нахожусь внутри rpi2, то я могу войти в rpi3 с помощью ssh rpi3
, и я могу, например,. ping rpi4
или ping 10.0.0.4
и получите 0% потери пакетов.
Что мне не ясно, так это то, общаюсь ли я между узлами напрямую через коммутатор или через rpi1 (, который работает с dnsmasq и предоставляет услуги маршрутизатора).
Если узлы обмениваются данными напрямую, то я предполагаю, что они должны знать MAC-адреса друг друга, чтобы посылать кадры, которые идут непосредственно друг к другу через коммутатор. Если это так, то мои вопросы вкратце таковы::
Заранее спасибо!
В какой момент узел узнает MAC-адреса других узлов?
Сначала они будут запрашивать IP-адреса других узлов у DNS-сервера. После этого они отправят запрос «arp» всем узлам, и узел, имеющий IP-адрес, ответит на этот запрос «arp» своим MAC-адресом.
И как я могу проверить MAC-адрес, например,. rpi3 на rpi2, чтобы увидеть, что они узнали друг о друге?
'arp -a' обычно дает вам arp-таблицу, и вы можете просмотреть записи, чтобы узнать, узнали ли они MAC-адреса друг друга.