2

Странный сценарий для вас:

У меня есть два Raspberry Pis под управлением Raspbian 8 (Джесси), соединенные друг с другом перекрестным кабелем между их портами Ethernet. Порт Ethernet на устройстве A статически настроен как 10.5.10.1. Порт Ethernet на устройстве B статически настроен как 10.5.10.2. Маска подсети для интерфейса Ethernet: 255.255.255.0 - /24.

Оба устройства используют демон точки доступа хоста (hostapd) и сервер DHCP на своем интерфейсе Wifi (wlan0). Каждый из них имеет уникальный SSID: единица A - «raspiA», а единица B - «raspiB». Блок А работает на канале 1. Блок B работает на канале 11.

Адаптер wlan0 на устройстве A статически назначен как 10.10.1.1. Сервер DHCP на устройстве A обслуживает адреса в диапазоне 10.10.1.50 - 10.10.1.250. Адаптер wlan0 на устройстве B статически назначен как 10.10.2.1. На сервере DHCP на блоке B семь адресов в диапазоне 10.10.2.50 - 10.10.2.250. Маски подсетей для адаптеров wlan0: /24.

Системы полностью изолированы - нет подключения к Интернету.

Обе системы запускают процесс, который запускает HTTP-сервер через порт 80, доступный через любой интерфейс (eth0 или wlan0).

Я хочу, чтобы клиент, подключенный к точке доступа в системе A, имел возможность доступа к процессу в системе B 10.10.1.2.

Я хочу, чтобы клиент, подключенный к точке доступа в системе B, имел доступ к процессу в системе A в 10.10.2.2.

[Client 1]         [Unit A              ]        [Unit B ]
10.10.1.50 —wifi—> 10.10.1.2 —> 10.5.10.1 —eth—> 10.5.10.2

А также...

[Unit A ]        [Unit B              ]         [Client 2]
10.5.10.1 <—eth— 10.5.10.2 <— 10.10.2.2 <—wifi— 10.10.2.50

Каков наилучший способ сделать это?

2 ответа2

1

Все, что вам нужно сделать, это включить ip forwarding на A и B (как root):

echo 1> /proc /sys /net /ipv4 /ip_forward

1

Я наконец нашел конфигурацию, которая работает. Это позволяет клиенту присоединиться к любой сети и иметь доступ к обеим системам. Это также не требует маршрутизации, что важно, так как любая схема, которая назначает маршрутизатор (шлюз по умолчанию), заставляет мобильные клиенты (iOS, Android) определять приоритеты их интерфейса Wi-Fi через интерфейс 4G, ограничивая доступ в Интернет.

Я упростил схему IP, переместив все в один сегмент / 24 (класс c). Я установил мосты между интерфейсом eth0 и интерфейсом wlan0 в обеих системах. Мост в системе A был назначен .1, а мост в системе B был назначен .2. Все услуги, предоставляемые системой, привязаны к / доступны по адресу моста.

Я настроил демоны DHCP в каждой системе так, чтобы они отличались от /24 (т. Е. Система A была .50 - .149, а система B - 150 - 249). Поскольку системы соединены друг с другом (то есть все находятся в одном и том же сегменте), любой запрос DHCP превращается в гонку, и оба демона отвечают. Поскольку оба предложения будут в одном /24, не имеет значения, какое из них «выиграет».

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

Одним из ограничений этого подхода является то, что клиенты должны знать, что приложения доступны на .1 и .2. Будущая итерация может включать какую-то поддержку MDSN / Avahi, которая позволяет клиентам автоматически обнаруживать серверы.

шаги:

  1. Установите bridge-utils , hostapd и isc-dhcp-server
  2. Отредактируйте /etc/sysctl.conf:
    1. Добавьте или net.ipv4.ip_forward = 1
  3. В /etc/network/interfaces:
    1. Отметьте как eth0, так и wlan0 как руководство
    2. Добавьте мост br0 с желаемой статической конфигурацией сети
    3. Добавьте только интерфейс eth0 (wlan0 будет добавлен hostapd)
  4. Отредактируйте /etc/dhcpcd.conf:
    1. Исключите eth0 и wlan0 из DHCP, добавив denyinterfaces eth0 wlan0 внизу.
  5. Отредактируйте /etc/default/isc-dhcp-server:
    1. Установите значение INTERFACES на br0
  6. Отредактируйте /etc/dhcp/dhcpd.conf:
    1. Создать новую запись в подсети
    2. Добавьте некоторое количество доступных для клиента IP-адресов в диапазон
    3. НЕ добавляйте "дополнительные маршрутизаторы"
  7. Отредактируйте /etc/hostapd/hostapd.conf:
    1. Добавить bridge=br0 внизу

Повторите этот процесс для другой системы, изменив IP, назначенный мосту (шаг 2.2) и диапазон адресов, обслуживаемых сервером DHCP (шаг 5.2). Подключите порты Ethernet с помощью кабеля. Перезагружать. Вуаля - избыточная, плоская сеть.

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