- Мобильный mesh. Как создать сеть из смартфонов без единого роутера
- Содержание статьи
- Пришествие mesh-сетей
- Мобильные mesh-сети
- FireChat
- Internet Sharing
- Briar
- Serval Project
- Не совсем mesh
- Другие примеры беспроводных mesh-сетей
- Выводы
- Евгений Зобнин
- Делаем сервер из Android-телефона
- Часть первая. Прошивка
- Часть вторая. Настройка PostmarketOS
- Настройка сети
Мобильный mesh. Как создать сеть из смартфонов без единого роутера
Содержание статьи
Пришествие mesh-сетей
В начале 1990-х Чарльз Перкинс из Sun Microsystems и Чай Кеон То из Кембриджского университета независимо друг от друга начали работу над новым типом компьютерных сетей, которые вместо привычной инфраструктуры интернета использовали бы прямое беспроводное соединение между участниками, а сами участники могли бы одновременно выполнять роль отправителя, адресата и маршрутизатора данных.
В простейшем случае такая сеть могла состоять из двух или трех географически разнесенных участников. Если в сети всего два узла, они просто обменивались данными друг с другом. Когда появлялся третий участник, который находился в зоне доступности только одного из двух других узлов, сеть автоматически перестраивалась так, чтобы все узлы могли получить доступ друг к другу, используя один из узлов как маршрутизатор. В дальнейшем могли появиться другие узлы, связи между ними становились сложнее, маршруты удлинялись, появлялись альтернативные маршруты, сеть росла географически, покрывая все большие пространства.
Такова была изначальная идея, позднее получившая имя «беспроводная ad hoc сеть» или «беспроводная mesh-сеть». Ее широкому распространению мешало множество факторов: недоработанность технологий, выполнявших динамический роутинг данных, ограниченность тогдашнего сетевого оборудования и компьютеров, которые не могли обеспечить достаточные скорости передачи данных в больших сетях, малая распространенность беспроводных технологий передачи данных. В конце концов, было непонятно, куда пристроить ограниченную новую технологию на фоне всеобщего интереса к интернету. Разве что военные хотели заполучить нечто подобное, чтобы иметь возможность быстро развернуть сеть прямо на поле боя.
Однако в 2004 году на свет появилась беспроводная mesh-сеть guifi.net, развернутая на территории Каталонии, входящей в состав Испании. Согласно легенде, люди задолбались ждать нормальный интернет в своем регионе и решили поднять свою собственную сеть, с Wi-Fi-роутерами, супернодами и выходом в тот самый интернет, о котором все слышали, но который никто не видел.
Сегодня guifi.net состоит из 33 тысяч узлов и покрывает территорию в 46 тысяч километров, а подключение к ней не стоит абсолютно ничего, за исключением цены Wi-Fi-роутера с модифицированной прошивкой DD-WRT. Роутеры объединяются в сеть и образуют так называемый остров, все узлы в котором обмениваются данными друг с другом по описанной выше схеме. Острова объединяются с помощью суперузлов (supernode), которые могут быть соединены между собой с помощью проводных и беспроводных технологий. Таким же образом организован выход в интернет.
Похожая сеть есть у афинян, и так же, как guifi.net, она нас не интересует. Гораздо больше нам интересны мобильные mesh-сети.
Карта guifi.net
Мобильные mesh-сети
Идея mesh-сетей, которые бы не требовали специального оборудования для подключения друг к другу, появилась почти сразу после начала распространения оснащенных Wi-Fi ноутбуков. Однако, как и в случае с экспериментами начала девяностых, такие сети не вышли за границы исследовательских лабораторий и военных полигонов, а обычные пользователи начали обозначать термином ad hoc всего лишь прямое соединение двух ноутбуков, один из которых играл роль точки доступа и обеспечивал выход в интернет.
То же самое произошло и со смартфонами. Все мы знаем, насколько легко превратить смартфон на Android в точку доступа: пара нажатий, и к тебе может подключиться кто угодно. Но знаешь ли ты, как связать большое количество смартфонов в самоорганизующуюся сеть?
FireChat
В 2014 году в App Store и Google Play появилось приложение под названием FireChat. С виду это был вполне стандартный мессенджер в духе WhatsApp и Telegram, но работал он совсем по-другому. FireChat умел использовать технологии Wi-Fi Direct и Ad hoc Bluetooth для прямого соединения между ближайшими устройствами, а затем объединял их в общую mesh-сеть, которая позволяла донести сообщение до адресата через цепочку других смартфонов.
Если какой-то из смартфонов в цепочке имел доступ в интернет, сообщение также отправлялось на сервер, так что FireChat мог не только объединять локальные сети смартфонов, но и соединять одни сети с другими. Если же поблизости не было ни одного другого смартфона с FireChat, приложение использовало традиционный режим работы через сервер.
Карта одной из mesh-сетей FireChat
FireChat стал популярным у протестующих разных стран. Его использовали во время протестов в Ираке, Китае, Тайване и некоторых других странах. Также он стал популярен на фестивале Burning Man, а технический директор французского правительства призвал граждан устанавливать FireChat во время марша после нападения на Charlie Hebdo. Приложение удостоилось нескольких наград за инновационную технологию и получило «антинаграду» от AT&T. Компания потребовала удалить FireChat из магазина приложений за так называемую несанкционированную раздачу интернета.
Сегодня FireChat по-прежнему доступен в App Store и Play Store, однако не пользуется особой популярностью. Версия для Android стремительно тратит ресурс батарейки и постоянно сбрасывает коннект к Wi-Fi, пытаясь перевести его в режим Wi-Fi ad hoc. Но при желании приложение вполне можно использовать.
FireChat |
Internet Sharing
Кроме FireChat, разработчики компании Open Garden также создали приложение для расшаривания интернета, способное превращать смартфон в точку доступа: он создает mesh-сеть, которая связывает множество различных устройств воедино и направляет их трафик тем смартфонам, что имеют выход в интернет.
Briar
Совсем недавно у FireChat появился серьезный конкурент, он называется Briar. Его разработчики пошли еще дальше и сделали приложение, которое не только способно работать в двух режимах (с интернетом и без), но и не использует сервер вообще.
В случае работы без интернета Briar пытается связаться с ближайшими узлами, используя Bluetooth и Wi-Fi. Далее он запрашивает у них информацию о других узлах сети и может начать обмениваться с ними сообщениями. Если же доступ в интернет есть, Briar находит нужные контакты с помощью распределенной хеш-таблицы и позволяет установить с ними связь, используя сеть Tor как транспорт. И в том и в другом случае Briar не полагается на сервер или централизованное хранилище данных, это полностью децентрализованное P2P-решение.
Архитектура Briar
Briar не только и не столько мессенджер, сколько платформа для построения независимой и нерегулируемой сети. Приложение позволяет вести блоги и создавать форумы, а в будущем разработчики планируют добавить поддержку совместной работы над документами.
Разработкой Briar занимается команда из шести человек, в которую входят: ключевой разработчик I2P Джек Григ (Jack Grigg), один из разработчиков Freenet и LimeWire Майкл Роджерс (Michael Rogers), автор инициативы Free Your Android Торстен Грот (Torsten Grote). Код Briar публикуется по лицензии GPLv3 и уже прошел аудит безопасности в компании Cure53, которая также занималась аудитом SecureDrop, Cryptocat и Dovecot.
В данный момент Briar доступен только на Android в виде публичной бета-версии. Сама сеть работает в тестовом режиме — 21 октября все данные, включая список контактов и архив сообщений, будут очищены. Эта мера предосторожности нужна, чтобы обезопасить пользователей от возможных рисков, связанных с уязвимостями, которые могут быть найдены во время тестирования.
Serval Project
Широкие массы обратили внимание на мобильные mesh-сети только после появления приложения FireChat. Но еще до начала его разработки существовал проект Serval, спонсируемый фондом того самого Марка Шаттлворта, летавшего в космос создателя Ubuntu.
Serval представляет собой платформу для создания mesh-сетей. Ее основной компонент носит имя DNA и включает в себя реализацию протоколов Mesh Datagram Protocol (MDP), Voice over Mesh Protocol (VoMP), систему дистрибуции файлов Rhizome и систему обмена сообщениями MeshMS.
Serval DNA можно запустить на самых разных платформах, включая Linux, macOS, OpenWrt и, конечно же, Android. В последнем случае необходимо установить приложение Serval Mesh, которое реализует возможности, предоставляемые DNA: зашифрованные аудиозвонки, зашифрованные текстовые сообщения и обмен файлами. Также в приложении есть кнопка для запуска карт, но эта функциональность пока не реализована.
В отличие от FireChat и Briar, Serval Mesh реализует «чистую» mesh-сеть без возможности работы через интернет и таким образом не может связать несколько различных сетей воедино. Но у разработчиков есть другое решение — Extender. Это нечто вроде специального роутера с предустановленным Serval DNA, который позволяет существенно расширить область видимости сети. Проект успешно провалился на Indiegogo, но разработчики всегда готовы начать производство при наличии финансирования.
Serval Mesh |
Не совсем mesh
Успех FireChat показал, что mesh-сети могут быть востребованными не только среди военных и исследователей. Многие разработчики решили взять модную технологию на вооружение. Но, как это обычно бывает, не осилили саму технологию и выпустили на свет нечто странное.
Wi-Fi Talkie — один из хороших примеров таких приложений. Это мессенджер, который работает напрямую через Wi-Fi, но при этом не умеет выстраивать полноценную mesh-сеть. Он просто создает точку доступа, к которой могут подключаться другие пользователи, чтобы общаться друг с другом голосом или текстовыми сообщениями. Весь трафик проходит через центральный смартфон, так что после его отключения пользователи теряют доступ друг к другу.
Signal Offline Messenger (не путать с Signal) — еще один мессенджер, основанный на том же принципе. Вместо софтверной точки доступа, к которой подключаются другие узлы, он использует технологию Wi-Fi Direct, позволяющую соединить два устройства напрямую без лишней мороки. Все юзеры соединяются друг с другом, но не образуют сеть, так что общаться можно только с теми, кто находится в зоне приема Wi-Fi.
Twimight for Twitter — более интересная разработка. Это твиттер-клиент с поддержкой режима «офлайн». Работает он так: если во время отправки твита клиент обнаруживает, что подключения к внешней сети нет, Twimight устанавливает Bluetooth-соединение с ближайшими смартфонами и передает им твит напрямую. Те, в свою очередь, передают твит дальше, и так до тех пор, пока все находящиеся поблизости смартфоны не получат сообщение. Естественно, на всех смартфонах должен быть установлен Twimight.
Wi-Fi Talkie и Signal Offline Messenger |
Другие примеры беспроводных mesh-сетей
- Ноутбуки OLPC (One Laptop Per Child, «Каждому ребенку по ноутбуку») используют mesh-сеть для коммуникации друг с другом, когда интернет недоступен.
- Google Home, Google Wi-Fi, Google OnHub и Apple AirPort используют mesh-сеть для объединения множества устройств в сеть с общим выходом в интернет.
- Спутники Iridium, отвечающие за передачу данных между спутниковыми телефонами, объединены в mesh-сеть.
- Многие IoT-устройства (розетки, лампочки, умные жалюзи и прочее) умеют объединяться в mesh-сеть для доставки информации между устройствами.
- Ведутся работы по объединению в mesh-сеть беспилотных автомобилей, чтобы они могли обмениваться друг с другом информацией об обстановке на дороге.
- iOS поддерживает работу в mesh-сетях начиная с версии 7.0. Android поддерживает Wi-Fi Direct с версии 4.0, а совсем недавно в Play Services появился API Nearby Connections 2.0, который существенно упрощает задачу создания mesh-сетей.
Выводы
Беспроводные mesh-сети, возможно, одна из самых важных технологий XXI века. Хорошо это или плохо, но совсем скоро наш мир будет под завязку набит устройствами, способными передавать данные по воздуху. Это не только смартфоны и планшеты, это умные дома, автомобили, чайники, микроволновки, розетки и множество других вещей, наличие беспроводных модулей в которых еще вчера казалось немыслимым. Поэтому mesh-сети будут продолжать развиваться, и в будущем мы станем меньше зависеть от интернета.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
Источник
Делаем сервер из Android-телефона
Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.
На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.
Ну и в-четвёртых, мне просто было жаль их выбрасывать. Консьюмеризм в наше время предписывает каждый год-два покупать новые смартфоны, производители блокируют возможности железа, которые им невыгодны, прекращают поддержку старых моделей, оставляя людей беспомощными. Миллионы смартфонов отправляются на свалку истории каждый год, хотя каждый из них это мощный компьютер.
TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.
Сразу хочу оговориться — я понимаю, что есть типовые решения, например Termux или UserLAnd, и спектр поддерживаемых устройств у них шире. Но все они работают как надстройки над основной системой, Android, и подвержены её ограничениям, таким как агрессивное сокращение энергопотребления или перенос задач на LITTLE-ядра при выключении экрана. Будущее Termux, например, вообще неясно из-за всё более жёстких гаек безопасности в Android 11. UserLAnd, помимо этого, работает через PRoot, который при всей своей пользе ощутимо замедляет процессы с большим количеством системных вызовов. В этой статье мы разбираем именно создание сервера на железе без Android.
Часть первая. Прошивка
Проект PostmarketOS был создан именно ради этой цели — сохранение вычислительных устройств после прекращения их поддержки производителями. Список поддерживаемых устройств можно найти здесь.
Для установки требуется телефон с разблокированным загрузчиком. В качестве примера буду использовать OnePlus One из-за простоты разлочки со стороны производителя. Для каждого производителя список шагов разный, ниже привожу обобщённые действия для смартфона 2018-2021 года выпуска:
Далее авторизуем подключение на самом телефоне
После разблокировки телефон сбросит данные снова перезагрузится в Android, перезапустите его в режим fastboot комбинацией клавиш или повторите релевантные для этого шаги 3 и 4.
Если разблокировка прошла успешно, далее можно следовать стандартной процедуре установки PmOS:
На этом этапе pmbootstrap запросит пароль и задаст довольно много вопросов о том, как сконфигурировать систему и целевое устройство. Итоговый результат будет записан в
Пару слов по поводу разных конфигураций. Здесь есть несколько важных пунктов — ядро mainline или downstream , графическая среда mate , weston и т.д., канал обновлений edge или stable . Интуиция при выборе значений должна быть такой:
- Если планируете пользоваться графикой, ставьте пароль из цифр. Некоторые графические среды поддерживают только цифровую клавиатуру на экране ввода пин-кода.
- Выбирайте edge в качестве канала обновлений. PostmarketOS разрабатывается быстро, и много опакеченного ПО ещё долго не будет в stable .
- Выбирайте ядро downstream если хотите максимум работающей «из коробки» второстепенной периферии после установки. Выбирайте ядро mainline если вам нужен OpenGL/OpenCL и современные возможности ядра, такие как контейнеризация и cgroups.
- Выбирайте графическую систему phosh , sway или plasma-mobile если у ваc ядро mainline и имеется графическое ускорение. В противном случае остановитесь на mate или xfce4 . Внимательно смотрите страницу вики для вашего устройства.
Затем с помощью pmbootstrap install сразу же начинаем сборку образа целевой системы. После сборки её предлагается установить самому, так как механизм установки варьируется от модели к модели. Пример того, как это делается стандартно, и как вышло у меня, ниже.
Есть хорошие шансы, что всё сработает как надо с первого раза. К сожалению, загрузчики и реализацию fastboot каждый производитель телефонов пишет по-своему, отчего попытки установки превращаются в смерть от тысячи иголок. В моём случае fastboot наотрез отказывался прошивать образы такого размера. Пришлось воспользоваться сторонним recovery, чтобы продвинуться дальше:
После завершения процесса sideload жмём «Reboot to system». Должен пойти процесс загрузки ядра и далее самой PostmarketOS.
Часть вторая. Настройка PostmarketOS
По сути своей, PostmarketOS построена на основе дистрибутива Linux под названием Alpine. Это позволяет создать работающую систему минимального размера, что для большого количества старых устройств с ограниченной внутренней памятью критично.
Однако, есть и подводные камни. О них ниже:
- Alpine построен на основе лаконичного libc под названием Musl. Плохая новость тут в том, что большинство других дистрибутивов работает на основе glibc, что означает невозможность установки ПО простым переносом бинарников с Raspbian или Ubuntu ARM, как позволяет, например, Golang или Rust.
- Система инициализации в дистрибутиве — OpenRC. Если вы знакомы с Gentoo, это для вас не будет озарением, но OpenRC куда ближе к прародителю sysvinit, чем к общепринятому в индустрии systemd. Имейте в виду.
- Для уменьшения размера используется Busybox, поэтому команды grep / sed / find и т.д. имеют ограниченный набор опций по умолчанию. Устанавливайте их GNU-версии и стандартный Bash-шелл отдельно, чтобы получить полный набор.
Итак, после загрузки телефона с PostmarketOS нам необходимо каким-то образом с ним взаимодействовать. Если вы ставили оболочку Phosh или Plasma Mobile, скорее всего вы сможете это сделать напрямую с тачскрина телефона. Если по каким-то причинам графический интерфейс не сработал, подключайте телефон к компьютеру USB-кабелем, PostmarketOS автоматически создаст дополнительную сеть:
После чего к телефону можно будет подключиться с именем и паролем пользователя, который вы указывали при pmbootstrap install :
Если вы видите эти строчки — значит PostmarketOS установлена верно. В противном случае попробуйте посмотреть секцию Troubleshooting для вашего устройства на вики PmOS, измените конфигурацию для pmbootstrap install или спросите мейнтейнеров в IRC или Matrix чате (все три пункта ваш покорный слуга в итоге и сделал).
Настройка сети
Если не получилось настроить WiFi сеть через графическую оболочку, ниже пример как сделать это через консоль. Предварительно подключите телефон к USB-интерфейсу вашего ПК.
Источник