-1

У меня частная сеть с ПК и 3 малины.

PC--RPi1--RPi2--RPi3
  • ПК: 192.168.0.101/24 (от ssh до RPi1)
  • RPi1: 192.168.0.102/24 (eth0 связан с ПК) && 192.168.0.103/24 (eth1 связан с Rpi2)
  • Rpi2: 192.168.0.104/24 (eth0 связан с Rpi1) && 192.168.0.105/24 (eth1 связан с Rpi3)
  • RPi3: 192.168.0.106/24 (eth0 связан с Rpi2)

Я хочу отправить сообщение от RPi1 к RPi3. Не работает

Должен ли я изменить таблицу маршрутов? И как?

1 ответ1

2

Итак, во-первых, это не то, как работают обычные IP-маршрутизация и подсети.

Маршрутизаторы обычно сидят между сетями (подсетями). Они соединяют несколько сетей вместе - один интерфейс принадлежит подсети A, другой - подсети B. Они пересылают IP-пакеты, но не кадры Ethernet (на самом деле они могут соединять сети, которые вообще не похожи на Ethernet).

(Например, соединение PC-RPi1 будет использовать адреса из 192.168.0.0/24, в то время как соединение RPi1-RPi2 будет использовать 192.168. 1.0/24 и т.д.)

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

  1. Все устройства ожидают, что остальные будут доступны непосредственно на уровне Ethernet (потому что маска подсети говорит им об этом), но на самом деле это не так: например, ПК и RPi2 разделены маршрутизатором (RPi1). Когда ПК отправляет запрос ARP (широковещательный), этот запрос не будет проходить через маршрутизаторы. Если ПК отправляет кадр Ethernet непосредственно на MAC-адрес RPi2, он также ничего не достигнет, поскольку RPi2 не находится в той же сети Ethernet.

  2. Устройства, которые имеют несколько интерфейсов, настроенных для одной подсети, волшебным образом не знают, какой адрес доступен через какой интерфейс. Например, когда RPi2 хочет отправить пакет на 192.168.0.102, ему необходимо выбрать один из двух конфликтующих маршрутов: «192.168.0.0/24 на eth0» и «192.168.0.0/24 на eth1». Как он узнает, какой маршрут использовать?

Если вы должны использовать одну подсеть, то подобную "цепочку" можно заставить работать двумя способами:

  • Вы можете добавить индивидуальный маршрут к каждому устройству на каждом устройстве. (Например, RPi2 будет иметь маршрут к ПК, маршрут к RPi1 и маршрут к RPi3.) Это быстро приводит к большому количеству маршрутов, поэтому его лучше автоматизировать с использованием протоколов маршрутизации, таких как Babel или OSPF.

    Этот метод работает лучше всего, когда все интерфейсы настроены как /32 (то есть маска сети 255.255.255.255), так что они не предполагают, что все находятся в подсети.

  • Вы можете соединить интерфейсы вместо маршрутизации между ними. На уровне IP мост действует как единый интерфейс (один IP-адрес и т.д.) С несколькими "выходами" и передает все кадры Ethernet между ними точно так же, как коммутатор /концентратор Ethernet. Таким образом , после создания br0 на RPi1 /2 и поставить как eth0 и eth1 в нем, то оба интерфейса будут создавать одну большую подсеть.

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