Настройка Batman-adv для экспериментов с MESH-сетью
Содержание
Что такое MESH и зачем это нам сейчас нужно
Всё очень просто: MESH - децентрализованная сеть, где каждый элемент - равноправный участник. Военные изначально увлеклись этой идеей, чтобы невозможно было одной убитой точкой оставить часть личного состава без связи. Каждая точка может через себя пропускать трафик, и клиент и роутер в одном лице, если совсем просто.
Например, у нас есть трое пользователей с редкими в настоящее время именами: Вася, Петя и Федя. У них роутеры с Wi-Fi на борту и поддержкой batman-adv. Ок, они поднимают MESH-сеть и теперь могут видеть друг друга. И, несмотря на то, что Весилий и Фёдор не могут соединится напрямую ввиду большого расстояния, трафик прекрасно ходит через Петра. При этом они видят друг друга на 2 уровне (то есть видят MAC-адреса, если проще), а не используют Петра как строго прописанный бридж. Теперь представим, что где-то недалеко от Петра появляется 4 участник сети: Акакий. Ну повезло с именем, что уж тут. Он становится таким же участником сети со своим роутером и, когда Петя в очередной раз что-то натворил и остался без связи, Акакий стал транзитом для Василия и Фёдора. Играя в очередную стрелялку типа Urban Terror, я думаю, они даже не заметили потери Петра. Таким образом получается, что чем больше участников, тем лучше становится сама сеть. Нет, до хорошей оптики тут как пешком до Сатурна, но на безрыбье…
В моём случае это помогает, когда есть несколько компьютеров в разных сетях и надо видеть их, а VPN поднять не всегда возможно. Например, сервера находятся внутри компании без выхода в интернет, но есть компьютеры, которые видят и VPN и сеть внутри. Через них и будет идти доступ для клиентов VPN к серверам для других участников. А так же доступы к северам в mesh-сети получат и компьютеры, которые сидят за роутерами-участниками VPN сети.
Установка на Debian, Ubuntu, Linux Mint и так далее.
В этом плане всё просто, так как пакеты есть уже в хранилище.
apt install batmand modprobe batman-adv
Установка на CentOS.
Несмотря на серверное предназначение этой ОС, batman-adv в хранилищах нет. Неприятно, но не смертельно. Ставим “управляшку”
yum install batctl
Смотрим версию (в нашем примере 2016.0)
batctl -v
Скачиваем исходники ядра
yum install kernel-devel
Скачиваем исходники модуля
wget -c https://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-2016.0.tar.gz
Разархивируем
tar zxvf batman-adv-2016.0.tar.gz
Заходим
cd batman-adv-2016.0
Собираем
make
make install
Подгружаем модуль
modprobe batman-adv
Настройка
Смотрим какие есть интерфейсы и какие хотим добавить
ip a
И добавляем их
batctl if add eth0 batctl if add wlan0
Поднимаем интерфейс
ifconfig bat0 up
По идее, уже сейчас пишем batctl o и видем другие компьютеры. Но уж доведём до конца. Назначаем адрес:
ifconfig bat0 192.168.1.1 netmask 255.255.255.0
И пингуем такого же бедолагу, но с адресом 192.168.1.2
Полезные команды
На самом деле, просто batctl -h выдаст массу полезного. Приведу пару примеров:
batctl o - соседи batctl td bat0 - tcpdump, смотрим траффик
Поднимаем ad-hoc с помощью Network Manager (nmcli)
Network Manager достаточно плотно засел на поппулярных дистрибутивах линукс и править конфиг вручную становится иногда уже бесполезно. Но и не везде есть графика, чтобы запускать приложение для конфигурации сети. И в этом случае используем nmcli.
Итак, создаём соединение My WiFi на борту ноута или другой машинки, которая станет участником сети.
nmcli connection add type wifi ifname wlan0 ssid ‘My WiFi’
Далее заходим в shell nmcli и редактируем
nmcli con edit wifi-wlan0
смотрим параметры
nmcli> print
выставляем ipv4 в shared
nmcli> set ipv4.method shared
а ipv6 игнорируем вообще (для тех, кто до ipv6 ещё не дорос)
nmcli> set ipv6.method ignore
автоматически поднимаем эту сеть
nmcli> set connection.autoconnect no
ставим режим ad-hoc (со всеми его ограничениями по скорости и т.д.)
nmcli> set 802-11-wireless.mode adhoc
сохраняем
nmcli> save
выходим из shell nmcli
nmcli> quit
поднимаем интерфейс
nmcli con up wifi-wlan0
Далее уже, как только batman увидит соседей (batctl o), вы становитесь полноправным участником сети, о которой речь шла в начале страницы.