BATMAN MESH

Skip to main content
Навигация

1. Ставим BATMAN и убираем региональные блокировки (no IR)

sudo apt update
sudo apt install iw batctl wireless-tools net-tools
iw --version
batctl -v
iw list

Снимаем ограничения

sudo apt install git python3 python3-m2crypto libgcrypt20-dev python3-setuptools
git clone https://github.com/nitun07/wireless-regdb/
cd wireless-regdb
make
sudo cp regulatory.db /lib/firmware/
sudo cp regulatory.db.p7s /lib/firmware/

Проверяем

iw list

2. Отключаем интерфейс от NetworkManager

sudo nano /etc/NetworkManager/NetworkManager.conf

вставляем следующее:

[keyfile]
unmanaged-devices=interface-name:wlan0
sudo systemctl restart NetworkManager

3. Скрипт конфигурации для node1

Создаем скрипт запуска, в котором присутствует переменная ELP_INTERVAL, по умолчанию в Batman она равна 500 мс, но мы выставим её в 100 мс для мгновенной реакции на обрывы.

nano start_mesh_node1.sh

Вставляем следующее:

#!/bin/bash
if [ "$EUID" -ne 0 ]; then echo "Запустите с sudo!"; exit; fi

INTERFACE="wlan0"               # Имя вашей карты MediaTek
MESH_ID="testVpu"               # Идентификатор сети
PASSWORD="testVpuSecretKey2026" # Пароль WPA3-Mesh
FREQUENCY="5180"                # 36-й канал (5 ГГц)
ELP_INTERVAL="100"              # Частота проверки соседа (в миллисекундах)
OGM_INTERVAL="2000"             # Обновление глобальной карты (в миллисекундах)
MY_IP="192.168.10.1"            # Поменять для остальных node

echo "[*] Загрузка модуля Batman-adv..."
modprobe batman-adv
echo "BATMAN_V" > /sys/class/net/bat0/mesh/routing_algo

echo "[*] Конфигурация радиоинтерфейса в режим Mesh (802.11s)..."
ip link set $INTERFACE down
iw dev $INTERFACE set type mp
ip link set $INTERFACE up

echo "[*] Ассоциация и включение шифрования WPA3-SAE..."
iw dev $INTERFACE mesh join $MESH_ID freq $FREQUENCY key $PASSWORD

echo "[*] Передача управления в Batman..."
echo "0" > /sys/class/net/$INTERFACE/mesh/wlan_forwarding
batctl meshif bat0 interface add $INTERFACE

echo "[*] Тюнинг времени переключения (ELP)..."
echo "$ELP_INTERVAL" > /sys/class/net/$INTERFACE/batman_adv/elp_interval
batctl it $OGM_INTERVAL

echo "[*] Поднятие интерфейса bat0 и назначение IP..."
ip link set bat0 up
ip addr add $MY_IP/24 dev bat0

echo "=== МЕШ-УЗЕЛ УСПЕШНО ЗАПУЩЕН ($MY_IP) ==="
chmod +x start_mesh_node1.sh

аналогичный скрипт подготовить и запустить для остальных нод:

sudo ./start_mesh_node1.sh

4. Проверка

sudo batctl n

Прямо во время передачи трафика можно изменять скорость реакции сети, например ELP_INTERVAL=»50″

sudo echo "50" > /sys/class/net/wlan0/batman_adv/elp_interval