Что такое 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

Скачиваем исходники модуля

Разархивируем

  • 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), вы становитесь полноправным участником сети, о которой речь шла в начале страницы.