2

У меня есть три малиновых писа, соединенных вместе в подсети через концентратор. Я дал им все статические IP-адреса, и я использую один основной Pi для проверки связи с двумя другими Pis.

Вот моя установка: рис установки

Как только основной Пи начинает пинговать другой Пи, каждый пинг возвращается полностью нормально. Но когда я сначала запускаю эхо-запрос, получение первого ответа может занять около 5 секунд. Это приводит к 30%+ потери пакетов или около того и делает так, что когда я запускаю сценарии, они часто терпят неудачу при передаче сообщений из-за тайм-аутов, пытающихся подключиться.

Вот фотография потери пакета при пинге одного пи затем другого:

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

Я пытался заменить Raspberry Pis, Ethernet-кабели и концентратор, но пока не повезло. Мне интересно, есть ли какое-то ограничение на Pis, о котором я не знаю, или это может быть неисправная аппаратная проблема с моим поставщиком концентратора.

РЕДАКТИРОВАТЬ: я запустил IP neighbor show со следующими результатами

pi@raspberrypi:~ $ ip neighbor show
192.168.2.1 dev wlan0 lladdr 40:c7:29:4e:4d:f8 STALE
192.168.3.32 dev enxb827eb9c0ecf lladdr 00:e0:4c:53:44:58 STALE
192.168.2.131 dev wlan0 lladdr 02:0f:b5:87:93:39 REACHABLE
192.168.3.37 dev enxb827eb9c0ecf lladdr 00:e0:4c:53:44:58 STALE

Причина, по которой он показывает две разные сети, заключается в том, что я подключен к Интернету через Wi-Fi в сети 192.168.2 . И я подключен через Ethernet к другим 2 Пис через 192.168.3 . Оба Pis IP можно увидеть там как .3.37 и .3.32 соответственно.

РЕДАКТИРОВАТЬ 2: Я заметил, поиграв с IP neighbor show что если я пинговать пи, то запустить IP neighbor show что рядом с этим пи написано REACHABLE . Но затем, если я пингую другой Пи, тогда первый Пинг, которого я пингую, покажет STALE а новый будет REACHABLE это происходит каждый раз, когда я пингую другой Пи.

2 ответа2

2

Проблема связана с тем, что оба ваших Raspberry Pi имеют одинаковый MAC-адрес. Мы можем видеть это из выходных данных ip neighbor show где и 3.32 и 3.37 имеют MAC-адрес 00:e0:4c:53:44:58 . Мало того, что вы испытаете то, что вы уже испытывали с эхо-запросами, но любое общение между вашим основным Пи и обоими другими Пи одновременно также будет проблематичным.

Этого не должно быть, поскольку MAC-адреса должны быть глобально уникальными, но, увы, мы здесь. Чтобы это исправить, вам нужно найти способ изменить MAC-адрес вручную. Этот пост с форумов Pi, кажется, предлагает способ сделать это:

По сути, создайте файл "/etc/systemd/network/00-default.link" с содержимым:

[Match]
MACAddress=current MAC address

[Link]
MACAddress=new MAC address

Затем выполните sudo ifdown и ifup для интерфейса, и у него должен быть новый MAC-адрес, и это изменение сохранится после перезагрузки.

Номера MAC-адресов состоят из 12 шестнадцатеричных символов (0-9, af). Они обычно разделяются каждые два символа двоеточиями или тире, но на самом деле они не являются частью адреса. Например:

01:23:45:ab:cd:ef

Да, просто используйте несколько случайных символов. Нам просто нужно что-то уникальное.

1

Когда вы начнете начальный пинг, введите следующую команду:

ip neighbor show

Это покажет ARP-кеш и даст подсказку, если ARP возобновлено или нет.

Просто отредактируйте свой вопрос и поместите туда вывод, а также добавьте IP-адреса целевых RasPI.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .