Как использовать несколько Raspberry Pi для создания одной сети (mesh) точек доступа

У меня есть несколько плат raspberry pi 3 model B с внешним адаптером Wi-Fi, прикрепленным к ним. Моя цель заключается в следующем:

  1. создать сеть устройств РСП.
  2. каждая плата RSP должна иметь свой собственный AP и клиенты (мобильные/ноутбуки) могут быть подключены к нему.
  3. клиенты этих точек доступа могут перемещаться по разным диапазонам устройств RSP и по-прежнему должны иметь возможность разговаривать друг с другом независимо от того, к какой точке доступа они подключены (например, они подключены к единая сеть)

чтобы исправить #1: я использовал batman-adv на внутреннем интерфейсе Wi-Fi (wlan0) RSP3, и теперь все устройства могут пинговать друг друга через свои виртуальные интерфейсы bat0.

для #2: я использовал внешний адаптер Wi-Fi (wlan1) и с помощью hostapd и dnsmasq, я могу запустить AP (тот же ssid и канал на всех AP) на каждой из платы RSP. Я также подключил несколько мобильных устройств в разных точках доступа.

моя основная проблема блокировки Задача #3:

чтобы решить эту проблему, я попытался создать мост между интерфейсами wlan0 и wlan1 с помощью инструмента bridge-utils. Но в RSP оба интерфейса не поддерживают модуль WDS. Поэтому до сих пор я не могу создать единую сеть для всех клиентов.
Я также попытался использовать переадресацию IP между wlan0 и wlan1, но я не могу пропинговать подключенных клиентов от других устройств RSP.

существует ли другой подход (кроме WDS) для создания единой сети для всех подключенных клиентов?

8
задан Mahesh Jena
08.05.2023 23:34 Количество просмотров материала 3118
Распечатать страницу

2 ответа

вы ничего не сказали о конфигурации IP, и конфигурация IP именно то, что вам нужно для решения проблемы #3.

тщательно выберите свой IP-план

вся ваша сеть будет иметь "общую схему IP". Например, многие сети используют 192.168.*.*.

можно использовать любой IP личное пространство, как в IPv4 и IPv6. Убедитесь, что он не будет сталкиваться с любыми другими сетями пользователей или занесены может быть подключать.

например, допустим, мы будем использовать глобальную сеть 172.17.*.*. Обратите внимание, что "все-ноль" (172.17.*.0) и "все-те" (172.17.*.255) адреса зарезервированы (т. е. не могут быть использованы) в сети и во всех ее подразделениях.

нам придется разделить эту большую сеть на более мелкие сети, которые каждый ИРЦ будет использовать независимо. Одна из подсетей будет использоваться для связи между RPi, для этого мы будем держать 172.17.0.* для себя. Мы могли бы использовать другой номер, но использование 0 облегчает настройку Pi со сценарием.

"публичная" часть сети будет использовать IPs 172.17.xxx.* здесь xxx является уникальным для каждого ИРЦ. Опять же, чтобы упростить сценарий, мы начинаем с 1 и увеличиваем шаг.

RPi нужен IP в и сетей. Для публичной сети рекомендуется использовать .254, так будет 172.17.xxx.254. Но как насчет центральной сети? ИРЦ будет использоваться в качестве шлюза для сеть 172.17.xxx.* по opther занесены. Логично было бы сопоставить IP-адрес ретранслируемой сети: мы будем использовать 172.17.0.xxx.

настроить Pis

  1. настройка RPi'wlan1 (том public интерфейс) использовать основные IP 172.17.xxx.254 здесь xxx является уникальным среди всех ваших RPI, а не 0 (см. выше). Маска сети 255.255.255.0.

  2. настройка RPi'wlan0 ( private интерфейс) использовать основные IP 172.17.0.xxx здесь xxx это то же самое, что и выше. Маска сети 255.255.255.0.

  3. на каждый ИРЦ, запустите следующий сценарий, после замены $END по количеству используемых вами RPi:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    for i in $(seq 1 $END); do route add -net 172.17.$i.0 netmask 255.255.255.0 gw 172.17.0.$i; done
    iptables -A FORWARD -s 172.17.0.0/16 -d 172.17.0.0/16 -j ACCEPT
    

TL; DR, мы делаем следующее: Мы выбираем большую сеть, здесь 172.17.0.0/16. Мы подразделяем его на 255 меньших сетей:172.17.xxx.0/24. Мы держим 0 для себя, и дать все другие номера для пользователей. Затем мы говорим RPi для передачи пакетов, возглавляемых на другие компьютеры в соответствующий RPi "шлюз".

скажите устройства пользователей, чтобы посмотреть в нужном месте

я предполагаю, что вы используете dnsmasq в качестве DHCP-сервера для публичных сетей. Для того, чтобы иметь пользовательские устройства настроены правильно, вам нужно будет настроить его параметры.

  1. настройка DHCP для обслуживания адресов в диапазоне, адаптированном к сети, Е. И. 172.17.xxx.1 до 172.17.xxx.253.

  2. добавить статический маршрут DHCP часть dnsmasq config (снова заменив xxx надлежащим образом):

    dhcp-option=121,16.172.17.0.0,172.17.xxx.254
    

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

убедитесь, что вы тестируете это с 1 или 2 Pis и 1 или 2 клиентами перед совершением настройка все ваш занесены.

1
отвечен Nathan.Eilisha Shiraini 2023-05-10 07:22

есть несколько вещей, которые нужно настроить, чтобы заставить это работать.

  • во-первых, вы не должны иметь wlan1 AP каждого RPI быть на том же канале, потому что это вызовет значительную интерференцию между ними.

  • вам также не нужно использовать WDS. См.данное объяснение для получения дополнительной информации об этом. Просто убедитесь, что каждый AP имеет тот же SSID, тип безопасности WiFi и то же самое пароль.

  • У вас есть правильная идея в том, что вам нужно создать мост между wlan0 и wlan1 на каждом RPI. Я не знаком с bridge-utils, но, вероятно, было бы лучше просто следовать инструкциям по созданию моста в документации batman-adv здесь.

еще одна вещь, чтобы отметить, что вы, вероятно, не нужно быть запущен dnsmasq для служб DHCP. Ваши клиенты смогли как раз использовать их автоматически назначенные локальные IPv6-адреса для связи друг с другом по беспроводной локальной сети.

EDIT: моя ошибка. Это звучит как настоящий мост через WLAN на RPI3 не поддерживается. Похоже, есть потенциальный обходной путь с помощью NAT здесь. Это также может быть возможно при подключении двух внешних адаптеров Wi-Fi, которые поддерживают мостовые соединения.

1
отвечен davekats 2023-05-10 09:39

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх