Исследование безопасных способов беспроводной передачи данных через Wi-Fi по протоколам ROS с автоматической реконфигурацией сети
1 Обзор существующих технологий
2 Исследование возможностей демонов в Linux
3 Исследование способов синхронизации топиков в ROS
5 Процесс установки и настройки
- 5.1 Установка ubuntu 16.04 на raspberry pi 4
- 5.2 Установка NetworkManager и python-networkmanager
- 5.3 Установка пакета проекта качестве фонового демона
6 Поиск Wi-Fi роутера для увеличения дальности и уровня безопасности связи
7 Поиск антенн для роутера и анализ способов их размещения в роутере Xiaomi Mi WiFi Router pro (r3p)
Для решения этой непростой задачи было решено обратится к эксперту в области информационной безопасности, который рассказал нам о самых популярных и безопасных Wi-Fi протоколах.
Wi-Fi-Direct - хранит огромное множество уязвимостей в безопасности. Простейшая доступная атака - замена MAC адреса и перехват подключения устройства из-за более высокого уровня сигнала. Mesh-сети - более безопасны, но не удобны в использовании из-за бесшовности, т.е. когда сигнал от одной точки доступа становится слабым, то адаптер не переключается на другую. При желании и в mesh-сетях можно найти уязвимость.
WPA2-Enterprise - протокол с динамическим шифрованием, постоянно меняющий ключи для каждого нового подключения. Способы проникновения в сеть найти очень сложно. Самый безопасный на сегодняшний день.
Корпоративные сети с шифрованием WPA2-Enterprise строятся на аутентификации по протоколу 802.1x через RADIUS-сервер. Протокол 802.1x (EAPOL) определяет методы отправки и приема запроса данных аутентификации и обычно встроен в операционные системы и специальные программные пакеты.
Есть несколько режимов работы 802.1x, но самый распространенный и надежный следующий:
-
Аутентификатор передает EAP-запрос на клиентское устройство, как только обнаруживает активное соединение.
-
Клиент отправляет EAP-ответ - пакет идентификации. Аутентификатор пересылает этот пакет на сервер аутентификации (RADIUS).
-
RADIUS проверяет пакет и право доступа клиентского устройства по базе данных пользователя или другим признакам и затем отправляет на аутентификатор разрешение или запрет на подключение. Соответственно, аутентификатор разрешает или запрещает доступ в сеть.
Рисунок 1 - Внутренние протоколы (методы) EAP
Доступные в WPA2-Enterprise варианты шифрования таковы:
-
None - отсутствие шифрования, данные передаются в открытом виде
-
WEP - основанный на алгоритме RC4 шифр с разной длиной статического или динамического ключа (64 или 128 бит)
-
CKIP - проприетарная замена WEP от Cisco, ранний вариант TKIP
-
TKIP - улучшенная замена WEP с дополнительными проверками и защитой
-
AES/CCMP - наиболее совершенный алгоритм, основанный на AES256 с дополнительными проверками и защитой
Доступные в WPA2-Enterprise способы проверки подлинности подключаемого устройства внешним сервером:
-
EAP-FAST (Flexible Authentication via Secure Tunneling) - разработан фирмой Cisco; позволяет проводить авторизацию по логину-паролю, передаваемому внутри TLS туннеля между суппликантом и RADIUS-сервером
-
EAP-TLS (Transport Layer Security). Использует инфраструктуру открытых ключей (PKI) для авторизации клиента и сервера (суппликанта и RADIUS-сервера) через сертификаты, выписанные доверенным удостоверяющим центром (CA). Требует выписывания и установки клиентских сертификатов на каждое беспроводное устройство, поэтому подходит только для управляемой корпоративной среды. Сервер сертификатов Windows имеет средства, позволяющие клиенту самостоятельно генерировать себе сертификат, если клиент - член домена. Блокирование клиента легко производится отзывом его сертификата (либо через учетные записи).
-
EAP-TTLS (Tunneled Transport Layer Security) аналогичен EAP-TLS, но при создании туннеля не требуется клиентский сертификат. В таком туннеле, аналогичном SSL-соединению браузера, производится дополнительная авторизация (по паролю или как-то ещё).
-
PEAP-MSCHAPv2 (Protected EAP) - схож с EAP-TTLS в плане изначального установления шифрованного TLS туннеля между клиентом и сервером, требующего серверного сертификата. В дальнейшем в таком туннеле происходит авторизация по известному протоколу MSCHAPv2
-
PEAP-GTC (Generic Token Card) - аналогично предыдущему, но требует карт одноразовых паролей (и соответствующей инфраструктуры)
OpenWRT (https://openwrt.org/) - операционная система с ядром Linux, предназначенная для встраиваемых систем. Имеет собственный менеджер пакетов. Рассматривается как альтернатива стандартной прошивке роутера. OpenWrt расширяет возможности роутера в плане безопасности, отказоустойчивости и функциональности. Позволяет самостоятельно развернуть RADIUS сервер на роутере, а также установить или написать дополнительные полезные сервисы для него.
Что такое демон? Это программа, запускаемая на фоне и не взаимодействующая с пользователем напрямую (из стандартных IO потоков остается лишь System.err, информацию из которого мы перенаправляем в .log файл).
Написание демона не сильно сложнее написания обычной программы, за исключением некоторых дополнительных шагов по настройке.
Что касается отказоустойчивости, моментальный перезапуск приложения при правильной настройке при убийстве процесса гарантирован.
Сокет - название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет - абстрактный объект, представляющий конечную точку соединения.
Преимущество использования сокетов - незначительный прирост в быстродействии. Недостатки - сложности совместимости, плохая отказоустойчивость конечной системы, отсутствие гибкости выполняемых функций канала данных.
multimaster_fkie - метапакет ROS для объединения узлов, необходимых для создания и управления сетью с несколькими roscore. Преимущества - прост в настройке и в развертывании на новой машине. Изменения в сети автоматически обнаруживаются и топики синхронизируются.
Недостатки - скорость немного ниже, чем у сокетов, а также топики следует называть с учётом того, что они будут синхронизированы с тем же именем на других устройствах, либо стоит настроить выборочный проброс топиков, что возможно в multimaster_fkie.
В качестве языка был выбран удобный в разработке Python. Само приложение написано мультипоточным - для каждого адаптера существует свой асинхронный обработчик, набор общих функций, а также переменная состояния подключения, при этом система ведет учет подключенных адаптеров. Система имеет механизм обработки ошибок подключения и систему хранения ключей доступа к сетям на основе файловой системы. Алгоритм работы может выбираться пользователем из множества “решателей”
Рисунок 2 - UML диаграмма классов и сервисов написанной системы
Исходный код системы
https://github.com/ITMO-lab/wifi-autoconnector
Stairs - относительно простой “жадный” решатель с мертвой зоной сигнала при переподключении к новой сети.
Рисунок 3 - Схема к решателю Stairs
На данном изображении описано, как работает переподключение к альтернативным сетям при низком уровне сигнала.
Сам алгоритм поиска оптимальной конфигурации сетей сначала сортирует список адаптеров по убыванию “относительной силы приёма” самого адаптера. Находится как сумма разностей квадратов уровня сигнала всех доступных сетей для данного адаптера от квадратов уровня сигнала точно таких же сетей, видимых другими адаптерами. При том сети, которые мы не видим конкретным адаптером, имеют в нашей матрице уровень сигнала None, и это корректно обрабатывается.
Таблица 1 - матрица сигналов сетей для каждого адаптера, строки которой отсортированы по убыванию “относительной силы приёма”
Adapter \ BSSID | 14:CC:20:D0:F0:20 | 02:ED:2B:5D:B6:1D | 50:FF:20:14:08:95 |
---|---|---|---|
wlan0 | 100 | 95 | 92 |
wlx2967ga30 | 95 | 97 | None |
wlx1992aa | 87 | None | 78 |
Далее мы идём по отсортированному таким образом списку адаптеров и если параметр stability
выставлен на True, мы максимизируем стабильность соединений. То есть идем по списку в обратном порядке, выставляя сначала значения для самых “слабых” адаптеров как самое мощное из еще не использованных.
Таблица 2 - матрица сигналов сетей для каждого адаптера, иллюстрирующая оптимальный в плане стабильности соединения выбор конфигурации сети
Adapter \ BSSID | 14:CC:20:D0:F0:20 | 02:ED:2B:5D:B6:1D | 50:FF:20:14:08:95 |
---|---|---|---|
wlan0 | 100 | 90 | 80 |
wlx2967ga30 | 95 | 85 |
80 |
wlx1992aa | 90 |
80 | 70 |
Для параметра stability = False
конфигурация сети будет выглядеть следующем образом.
Таблица 3 - матрица сигналов сетей для каждого адаптера, иллюстрирующая оптимальный в плане стабильности самого сильного соединения выбор конфигурации сети
Adapter \ BSSID | 14:CC:20:D0:F0:20 | 02:ED:2B:5D:B6:1D | 50:FF:20:14:08:95 |
---|---|---|---|
wlan0 | 100 |
90 | 80 |
wlx2967ga30 | 95 | 85 |
80 |
wlx1992aa | 90 | 80 | 70 |
Ссылка для скачивания рабочего образа операционной системы: ubiquity-xenial-lxde-raspberry-pi.img.xz Также можно поискать более актуальную версию на сайте: https://downloads.ubiquityrobotics.com/pi.html Для загрузки операционной системой системы на SD-карту рекомендую использовать бесплатное приложение etcher: https://www.balena.io/etcher/ Когда Raspberry Pi загружается в первый раз, он изменяет размер файловой системы, чтобы заполнить SD-карту, поэтому первая загрузка может занять некоторое время.
При старте системы должна появиться точка доступа Wi-Fi. SSID - это ubiquityrobotXXXX, где XXXX является частью MAC-адреса. Пароль от Wi-Fi - robotseverywhere.
После подключения можно войти в Raspberry Pi 4 с помощью ssh ubuntu@10.42.0.1 c паролем ubuntu. Если вы подключаете клавиатуру и мышь, введите пароль ubuntu в командной строке.
По умолчанию данный дистрибутив поставляется с несколькими предустановленными пакетами и сервисами. Для их отключения введите:
sudo systemctl disable magni-base
И если вы хотите убрать автозапуск roscore:
sudo systemctl disable roscore
Дальнейшая конфигурация системы зависит от ваших персональных потребностей. Больше информации о дистрибутиве можно найти на сайте: https://learn.ubiquityrobotics.com/
NetworkManager предоставляет подробный и функциональный интерфейс D-Bus на системной шине. Этот интерфейс можно использовать для запроса NetworkManager об общем состоянии сети и сведениях о сетевых устройствах, таких как текущие IP-адреса или параметры DHCP, а также для настройки, активации и деактивации сетевых подключений. python-networkmanager использует этот интерфейс D-Bus и объединяет интерфейсы D-Bus в классы, а методы и свойства D-Bus в их эквивалентах python. Для установки введите в консоль следующие команды.
Сначала, обновляем систему и перезагружаемся:
sudo apt update -y
sudo apt upgrade -y
sudo reboot
Теперь устанавливаем network-manager и снова перезагружаемся:
sudo apt install -y wireless-tools
sudo apt install -y network-manager
sudo apt install -y python-networkmanager python-docopt python-empy python-evdev python-yaml python-dbus
sudo apt install -y python3-networkmanager python3-docopt python3-empy python3-evdev python3-yaml python3-dbus
sudo reboot
Удаление pifi подчистую, если вы использовали дистрибутив ubiquityrobotics. pifi - хорошая программа для работы с сетью, но нам она будет только мешать, так как мы используем функционал, полностью его заменяющий это приложение на более высоком уровне безопасности и автономности:
sudo apt remove -y pifi
sudo rm -rf /etc/pifi/
sudo rm -rf /etc/NetworkManager/system-connections/Pifi\ AP\ Mode
sudo reboot
Если мы хотим нормально подключаться к raspberry через wifi без очень долгой загрузки, можно выключить рабочий стол. Иронично, выключать его придётся из графического интерфейса рабочего стола, иначе настройки не применятся.
sudo raspi-config
-> Boot Options -> Desktop / CLI -> Console
sudo raspi-config
-> Boot Options -> Splash Screen -> No
sudo raspi-config
-> Interfacing Options -> SSH -> Yes
Далее требуется настроить доступ к 22 порту для более быстрого доступа к raspberry по ssh, но всё равно ssh через wifi коннектится слишком долго:
sudo ufw allow 22
Теперь можно перезагружаться.
sudo reboot
cd /etc/systemd/system
sudo rm -rf wifi-autoconnector
sudo rm -rf wifi-autoconnector.service
sudo wget https://github.com/ITMO-lab/wifi-autoconnector/archive/master.zip
sudo apt install unzip
sudo unzip master.zip -d wifi-autoconnector
sudo mv wifi-autoconnector/wifi-autoconnector-master/* wifi-autoconnector/
sudo rm -rf wifi-autoconnector/wifi-autoconnector-master
sudo rm -rf master.zip
sudo cp wifi-autoconnector/wifi-autoconnector.service .
sudo systemctl daemon-reload
sudo systemctl stop wifi-autoconnector.service
sudo systemctl disable wifi-autoconnector.service
sudo systemctl enable wifi-autoconnector.service
sudo systemctl start wifi-autoconnector.service
sudo systemctl status wifi-autoconnector.service
sudo reboot
Сервис периодически ест ресурсы процессора, поэтому его можно выключать, когда он не нужен, командой:
sudo rm -rf /etc/systemd/system/wifi-autoconnector/online
Или обратно включать командой:
sudo touch /etc/systemd/system/wifi-autoconnector/online
/etc/systemd/system/wifi-autoconnector/online - Является файловым флагом запуска сервиса.
Далее вам необходимо настроить файл /etc/systemd/system/wifi-autoconnector/secret.json для подключения к вашим точкам доступа. Формат записи следующий (в целях безопасности рекомендуется использовать BSSID сети, а саму сеть сделать скрытой. Следует помнить, что вы можете оставить любое поле, кроме BSSID/SSID пустым. Это нужно для подключения к открытым сетям Wi-Fi, не требующим авторизации, или к WPA/WPA2-PSK, где не требуется логин клиента сети, а требуется лишь общий ключ безопасности):
{
...
"{BSSID}": {
"essid": "{SSID}"
"password": "{your password}",
"login": "{your WPA2-Enterprise login}"
},
...
}
Для применения паролей secret.json требуется перезапустить сервис:
sudo systemctl restart wifi-autoconnector.service
Для того, чтобы включить проброс топиков в ROS, надо выполнить в качестве трёх отдельных процессов (roscore уже запущен в фоне, если вы используете наш дистрибутив). Для удобного запуска всех трёх в одном окне рекомендую использовать tmux:
roscore
rosrun master_discovery_fkie zeroconf
rosrun master_sync_fkie master_sync
Для проброса конкретных топиков и кастомизации настроек рекомендую ознакомиться с короткой официальной документацией: http://wiki.ros.org/master_discovery_fkie
Класс Connection в wifi-autoconnector/connection.py обновляется раз в $single_connection_update_delay секунд:
single_connection_update_delay = 1.0 # seconds
Это задержка на обработку события от одного адаптера. Главный скрипт в wifi-autoconnector/connection_handler.py имеет схожее поле, только в этот раз это задержка на обработку всех событий роутера:
update_delay = 1.0 # seconds
Под этой переменной заданы границы для “решателя” Stairs:
update_min_signal = 20 # from 0 to 100
update_max_signal = 40 # from 0 to 100
Далее идет настройки таймеров и таймаутов:
wait_configure_before_ignore_timeout = 60.0
- Время, которое даётся адаптеру на подключение к сети. Если время вышло, считается, что соединение неверно, и BSSID сети блокируется на $ignore_waiting_time_exceeded_timeout секунд.
ignore_waiting_time_exceeded_timeout = 30.0
ignore_wrong_auth_timeout = 60.0*3
- Время блокировки BSSID при явной ошибке аутентификации. WPA2-EAP и открытая сеть (логично) не сообщают об ошибки аутентификации, но WPA2-PSK сообщает.
service_working_flag_check_update = 1.0
- Период обновления проверки файлового флага на запуск всего приложения.
В самом приложении выбирается “стабильный” режим работы “решателя” Stairs:
matcher = Stairs(stability=True)
Wi-Fi роутер - это беспроводная базовая станция, предназначенная для обеспечения беспроводного доступа к уже существующей сети (беспроводной или проводной) или создания новой беспроводной сети.
Требования по безопасности к роутеру:
-
Поддержка системы контроля пользователей RADIUS (возможность работы с ней или предустановленная система контроля версий).
-
Поддержка установки OpenWRT (см пункт 1.2) с целью усиления безопасности, поддержки таких важных библиотек как OpenSSL в актуальном состоянии, а также возможности установки RADIUS сервера на роутер вручную.
-
Поддержка роутером, как минимум, стандартов WPA2-Enterprise с шифрованием AES/CCMP и фреймворком аутентификации EAP-TLS, PEAP-MSCHAPv2 или PEAP-GTC.
Рассмотренные модели с их кратким описанием:
-
XIAOMI Mi WiFi Router [3g v.2] Маловероятно установится прошивка, так как на сайте точно присутствуют неточности по версии. У них написано v2, а у той 16 МБ flash, хотя в описании ситилинка написано 128. На v1 с 128 МБ flash памяти мы можем поставить ось через какие-то ЛЕСА. А вот v2 поддерживается неофициально.
https://www.citilink.ru/catalog/computers_and_notebooks/net_equipment/routers/1100030/
-
ASUS RT-AC58U
Было несколько сообщений о нестабильности этого устройства под нагрузкой. На форуме по этому роутеру установилось мнение, что 128 МБ ОЗУ недостаточно для двух радиостанций "ath10k". Использование драйверов и микропрограмм "не-CT" ath10k может улучшить стабильность.
https://www.citilink.ru/catalog/computers_and_notebooks/net_equipment/routers/413631/
-
KEENETIC Viva
https://www.citilink.ru/catalog/computers_and_notebooks/net_equipment/routers/1106600/
Необычный роутер, в магазине написано одно, не уверен, что это ZyXEL, но при поиске информации о роутере выдает только с этой припиской. При поиске прошивки было выявлено нечто странное. На сайте OpenWRT есть только ZyXEL Keenetic Viva rev B.
https://openwrt.org/toh/hwdata/zyxel/zyxel_keenetic_viva_rev._b
На форуме ниже указаны некоторые странные подробности.
https://forum.openwrt.org/t/zyxel-keenetic-viva-rev-a/3732
Этот роутер не является надежно работающим выбором, т.к. приписка "rev B" может оказаться чем то весомым, что мы не знали. Кроме того, информация касательно памяти в магазине 128/128, а при поиске прошивки они для rev A и rev B 16/128.
-
KEENETIC Duo, ADSL 2/2+
https://www.citilink.ru/catalog/computers_and_notebooks/net_equipment/routers/1099917/
Интересный аппарат, т.к. прошивка на OpenWRT для него не находится, а с припиской ZyXEL и без суффикса мы можем найти этот товар на форума 4PDA, где во вкладке прошивок нет ничего кроме некой KeeneticOS. Сама идея выбирать роутер с не широко распространенной прошивкой - это плохая идея. Поэтому за отсутствием прошивки OpenWRT этот вариант не рекомендуется.
-
Xiaomi Mi WiFi Router pro (r3p)
У данной модели есть инструкция по установке OpenWRT на 4pda:
https://4pda.ru/forum/index.php?showtopic=810698&st=3220#entry82315996
И также тут:
https://openwrt.org/toh/xiaomi/xiaomi_r3p_pro
https://www.citilink.ru/catalog/computers_and_notebooks/net_equipment/routers/1100035/
https://openwrt.org/toh/xiaomi/xiaomi_r3p_pro
Для установки OpenWRT на данную модель не требуется его прошивка через SPI, которая может привести к полной потери функциональности устройства без возможности восстановления. У большинства роутеров Xiaomi такая проблема присутствует, но не у этого.
Так как существует возможность установки OpenWRT на данный роутер, то на него можно установить весь необходимый список протоколов, а также развернуть RADIUS сервер непосредственно на роутере, для этого у него имеется 512 MB оперативной памяти и 256 MB flash памяти, чего по предварительным оценкам хватит на 256 подключенных дрона.
-
Xiaomi Mi WiFi Router 4
https://www.citilink.ru/catalog/computers_and_notebooks/net_equipment/routers/1100031/
Описание магазина Ситилинк не сильно соответствует продаваемому товару. И так, если там версия с гигабитным ethernet, тогда придётся прошивать этот роутер через SPI, подключаясь к материнке роутера, что может привести к безвозвратной потере функциональности роутера. Но у гигабитной версии 16 МБ флеша, а на сайте заявлено 128. 128 было только у первой ревизии роутеров, у которых не было гигабитного ethernet. Так как данная ошибка в описании является критической.
Форумы ниже описывают попытки установить прошивку OpenWRT на данный роутер.
https://openwrt.org/toh/hwdata/xiaomi/xiaomi_miwifi_r4
https://openwrt.org/toh/hwdata/xiaomi/xiaomi_mi_router_4a_gbit
Таким образом в качестве роутера был выбран Xiaomi Mi WiFi Router pro (r3p) как роутер с гарантированной возможностью установки прошивки OpenWRT с установкой всех необходимых протоколов.
7 Поиск антенн для роутера и анализ способов их размещения в роутере Xiaomi Mi WiFi Router pro (r3p)
Рисунок 4 - Роутер Xiaomi Mi WiFi Router pro (r3p)
Существует несколько способов размещения антенн у роутера. Самый распространенный из них - простое вертикальное расположение. Однако, это было бы наиболее выгодно в условиях домашнего потребления, т.к. делиться wifi с соседями не является нашей задачей. У нас же все обстоит немного иначе. Т.к. мы будем работать в воздушным пространством, то будет иметь смысл расположение либо горизонтально (Что несомненно уменьшит покрытие вширь), либо под углом 90 или 45 градусов друг к другу. В случае двух антенн, нам будет наиболее выгодно расположить каждую из них под 45 градусов относительно оси роутера, таким образом, между собой они будут образовывать прямой угол и иметь наибольшее покрытие как в воздухе, так и в горизонтальном пространстве. Что касается четырех антенн, то тут ситуация почти такая же, за исключением того, что две другие антенны надо будет располагать также перпендикулярно плоскости первых двух и под 45 градусов к плоскости роутера.
Если же антенны будут выведены вне роутера, то плоскость роутера в определении их расположения сменяется на плоскость земли.
В случае, если нам необходимо вывести антенны вне роутера, то такая возможность имеет место быть. Ниже представлена схема роутера, на которой мы можем заметить несколько белых линих, исходящих от краев. Они показывают как и куда можно провести антенны. они подключаются к каналам (Они указаны как 2G_CH3/5G_CH0, 2G_CH2/5G_CH1, 2G_CH1/5G_CH2, 2G_CH0/5G_CH3). Сама антенна подключается через разъем RP-SMA. К роутеру же нужен разъем U.FL. Таким образом, для подключения внешних антенн нам будут необходимы переходники RP-SMA - U.FL или же удлинитель RP-SMA - RP-SMA. Мы можем использовать любую антенну на рынке с разъемом RP-SMA.
Для обеспечения водонепроницаемости роутера можно использовать антенны с водонепроницаемым дизайном. (Например: Eoth или Bingfu)
Из последнего можно взять способ крепления к корпусу станции.
Рисунок 5 - Схема роутера без антенн
Рисунок 6 - Схема с подключенными антеннами
При подключении по Wi-Fi через разработанную систему мы имеем скорость почти в 12 мегабайт в секунду, что близко к 100 мегабитам в секунду, а это максимальная скорость, раздаваемая нашим роутером.
Рисунок 7 - Скорость соединения напрямую через Wi-Fi
Для установки hamachi необходимо зайти на оффициальный сайт https://vpn.net/linux и скачать актуальную версию для архитектуры ARMHF, подходящую системе в расширении “deb”. Важно, чтобы версия оказалась на raspberry pi 4. Далее в директории с файлом logmein-hamachi_{ВЕРСИЯ}_armhf.deb нужно открыть терминал и ввести следующие команды:
sudo dpkg -i logmein-hamachi_*_armhf.deb
sudo /etc/init.d/logmein-hamachi start
sudo systemctl daemon-reload
sudo systemctl enable logmein-hamachi.service
sudo systemctl start logmein-hamachi.service
После чего требуется создать аккаунт hamachi на их официальном сайте, создать собственную VPN сеть в hamachi, обращаем внимание на адрес электронной почты, на который регистрировался аккаунт (на него придет подтверждение, его надо подтвердить), также на номер созданной вами VPN сети. Далее нужно снова открыть терминал и ввести следующие команды (Команда “do-join” может привести к запросу пароля, если вы его задали для вашей сети. Вам будет необходимо его ввести):
sudo hamachi logon
sudo hamachi attach <Email адрес аккаунта>
sudo hamachi do-join <network ID>
sudo hamachi list
Последняя команда выведет список активных и неактивных пользователей данной сети, чтобы можно было убедиться в работоспособности сервиса.
При подключении через VPN сервис hamachi и при использовании в качестве основной сети независимое от сети raspberry pi мобильное 4G соединение была достигнута скорость передачи информации 5 мегабайт в секунду, чего хватило на передачу видеопотока в 640x480 с частотой в 30 fps с минимальными визуальными задержками.
Рисунок 8 - Скорость соединения через IP адрес, предоставленный VPN
Система выполняет автоматическую реконфигурацию подключений, используя профили, хранимые в secret.json
Присутствует полная поддержка сетей WPA2-Enterprise.
При отключении от точки (или точек) доступа, выполняется автоматическое переподключение к наиболее оптимальным (в смысле стабильности или в смысле скорости. см. “Решатели”) сетям. При низком уровне сигнала ищется более оптимальная сеть и выполняется переподключение в случае нахождения такой сети.
Внутри сети автоматически конфигурируется ROS multimaster, позволяющий организовать высокоскоростную передачу информации между устройствами с запущенным roscore посредством стандартных средств - топиков ROS.
Вся система работает на уровне фоновых сервисов в Linux и равномерно использует процессор, благодаря оптимизации мультипоточных запросов.