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