Всем нам многое не нравится в том, как развивается современный интернет. Олигополизация крупными игроками. Государственное вмешательство. Цифровое неравенство, означающее, что интернет по-прежнему есть не везде и не всегда он достаточно стабильный и быстрый. Но решить эту проблему могут только сами пользователи — это же интернет.

Конечно, проблема, которая сейчас заботит всех, — это деанонимизация, цензура, нарушения приватности. Не стану в очередной раз мозолить тебе глаза всеми этими аббревиатурами. Ну знаешь, P#@!$, N@#, S@#$ или же наш, родной С"№%. Буду на этих страницах бороться с ними их же методами. Ведь я это могу.

Но все чаще это похоже на коллективное помутнение рассудка и временный хаос, а не на глобальный заговор. Twitter блокирует неонацистов или троллей-шовинистов, но дает высказаться террористам? Microsoft ухитряется направить в Google требование исключить из выдачи собственные ресурсы? Телеканал HBO на полном серьезе подает аналогичную жалобу на плеер VLC? Крупнейшую технологическую площадку в Рунете блокируют за один-единственный коммент?

Выглядит грустно. Иногда все-таки смешно. Ну и все чаще попросту пугающе. Но это не единственная проблема с интернетом. Я вряд ли удивлю тебя тем, что на Земле есть места, в которых коннекта нет не потому, что чиновникам вдруг стало стремно или в дата-центре Google уборщица отличилась. Ну вот просто нет. Такое бывает не только в Африке, как ни странно.

Думаешь, речь пойдет о Tor, I2P и Freenet? Увы, все не так просто. Да, эти технологии работают и поддерживаются крупными сообществами. Но решают ли они проблему? Нет, ведь это по-прежнему оверлей поверх существующего интернета. Физически это работает в каналах столь ненавистных тебе провайдеров, контролируемых государством и другими темными силами. Итак, что же делать? Ответ пытаются дать разработчики проектов меш-сетей.

Речь идет о ячеистых топологиях, состоящих из полностью равноправных узлов и поддерживающих возможность построения произвольных маршрутов. Если одна нода откажется принимать информацию, ее примет другая. Все это дает очень высокую надежность и невозможность заблокировать распространение информации.

Меш-сети могут как быть изолированными от интернета, так и работать в режиме оверлея. Очевидно, что если интернет не используется, то нужны какие-то другие физические каналы для того, чтобы меш-сети могли быть глобальными. А для этого нужны большие ресурсы, время и инициатива пользователей. Глобальный интерес к свободе Сети возник сравнительно недавно, поэтому для начала более показательным будет пример меш-сетей, создававшихся для проведения интернета в удаленные регионы.

Guifi

Самая крупная меш-сеть в мире развернута в Каталонии и Валенсии (регионы в Испании) и состоит из 22 тысяч узлов. Проект зародился в начале нулевых, когда местные жители устали ждать появления в регионе нормального интернет-провайдера. С тех пор сеть развивается на общественных началах и подключение к Guifi доступно совершенно бесплатно. Если упрощенно, то выглядит все так: есть условные единицы — «острова». Каждый остров — это меш-сеть, объединяющая пользователей района, муниципалитета или города. Для подключения используются Wi-Fi-роутеры с видоизмененной прошивкой на базе DD-WRT. Связь между островами обеспечивается при помощи VPN-серверов или прокси-серверов на Squid. Эти же серверы дают пользователям Guifi доступ в интернет. Соответственно, если сервер падает, сеть внутри острова продолжает работать, но доступ к другим островам и интернету прекращается. Конкретная скорость сети и стабильность прокси-серверов в каждом случае разная — у многих скорость не превышает и одного мегабита, но во многих районах (особенно в горах) это по-прежнему лучший способ выйти в интернет.

GUIFI
GUIFI

15%

максимальная доля рынка, которую меш-сетям удастся отнять у традиционных интернет-провайдеров, по мнению основателя Guifi Рамона Рока.

Athens Wireless Metropolitan Network

Проект греческой меш-сети начался в 2003 году. Как и в случае с Guifi, целью афинян было обеспечить высокоскоростную сеть. К тому времени как услуги по широкополосному подключению перестали быть редкостью в Афинах, AWMN успел добраться до более удаленных регионов Греции и даже соединиться с узлом в Словении. Всего в проекте более тысячи «суперузлов», объединяющих примерно три тысячи пользователей с помощью маршрутизации по протоколам BGP и OSLR.

ATHENS WIRELESS METROPOLITAN NETWORK
ATHENS WIRELESS
METROPOLITAN NETWORK

WasabiNet

Районная сеть в Сент-Луисе (США). Покрывает территорию вокруг одной улицы (Cherokee Street, если быть точным). Базовый интернет (до одного мегабита в секунду) предоставляется бесплатно, а более быстрый (3–5 Мбит) — за 10 долларов в месяц, а юридическим лицам услуги предоставляются за 20 долларов в месяц. Для маршрутизации используется протокол OLSR. Аналогичные сети существуют и во многих других городах и штатах.

wasabinet
wasabinet

Интересно посмотреть, что все указанные регионы — это не страны третьего мира. Проблемы с доступом к интернету существуют в удаленных регионах множества стран. И пример Guifi, AWMN и прочих наглядно демонстрирует, что пользователи могут не дожидаться вмешательства крупных компаний, они вполне могут построить свой собственный интернет. Сейчас с теми же проблемами — отсутствием ресурсов, инфраструктуры, необходимостью развивать технологии — сталкиваются и сторонники свободного интернета.

One Node Per Child

Еще одним примером масштабного внедрения меш-сетей можно считать One Laptop Per Child. В рамках знаменитого проекта были разработаны дешевые компьютеры для детей в странах третьего мира. Одной из важных функций OLPC как раз является возможность поднять меш-сеть в классе без применения оборудования. Всего было распространено более двух с половиной миллионов OLPC.

Больше всего внимания сейчас привлекает Project Meshnet. Проект зародился в недрах Reddit в 2011 году на фоне разговоров о SOPA/PIPA. Участники разработали протокол cjdns, важное отличие которого от B.A.T.M.A.N., OSLR, OSPF и других заключается, во-первых, в возможности объединять отдельные сети между собой, а во-вторых, в шифровании трафика.

Участники отмечают, что в текущем виде cjdns не дает анонимности. Сейчас можно проследить маршрут, по которому идут пакеты, и найти адрес пользователя. Анонимной сеть станет только тогда, когда перестанет использовать оверлей. Однако, поскольку для построения маршрута не используется луковичный принцип поиска узлов, cjdns обладает более высокой по сравнению с Tor и I2P скоростью работы.

Вот так выглядит карта узлов Hyperboria
Вот так выглядит карта узлов Hyperboria

Самая большая сеть в проекте называется Hyperboria. Основная проблема на данный момент — небольшое количество узлов, поскольку подключение новых членов происходит по системе инвайтов. В долгосрочной перспективе проблемой является отсутствие инфраструктуры, необходимой для того, чтобы меш-сеть стала глобальной. И, учитывая то, что сетью занимается комьюнити без участия муниципальных структур (как это было в случае Guifi), телекоммуникационных и интернет-компаний или любых других внешних сторон, какого-то решения для этого вопроса сейчас нет.

Интернет Америки

Правительство США активно финансирует разработку продуктов для быстрого развертывания меш-сетей, как компьютерных, так и сотовых. Такие решения должны обеспечить связью оппозиционных деятелей в диктаторских режимах. Проект сравнивают с похожими инициативами США в области радио, вроде радиостанции «Голос Америки» (источник: The New York Times).

Project Meshnet — лишь верхушка айсберга. И даже разработчики признают, что не до конца понимают, насколько масштабируется их детище. Но дело не только в технологиях. Допустим, что 15% мировых интернет-пользователей перейдут в такие сети. Сети, в которых нельзя перехватить трафик, нельзя заблокировать распространение информации. Как хорошо написали разработчики Cryptosphere, P2P-платформы для веб-приложений:

«Можем ли мы защититься от NSA? Пришла пора поговорить начистоту. Из всего многообразия проблем, с которыми можно столкнуться при разработке криптографической системы, NSA занимает особое место. Это же огромная государственная структура с бесконечными ресурсами, как финансовыми, так и людскими.

Мы убеждены, что, если NSA захочет обойти защиту нашей разработки (или любой другой криптографической системы), им это удастся. Либо они найдут уязвимости в самой системе, либо найдут их на стороне пользователей, например задействовав 0-day-уязвимости или просто непропатченные дырки.

Вот поэтому мы не говорим, что мы защищаем от NSA. Не думаю, что разработчик любой другой подобной системы смог бы гарантировать такое».

Различные проекты пытаются сделать готовые аппаратные решения для меш-сетей. Это, например, Piratebox
Различные проекты пытаются сделать готовые аппаратные решения для меш-сетей. Это, например, Piratebox

Проблемы могут быть не только технические, но и юридические. Достаточно посмотреть на то, как креативно ФБР ищет в Штатах педофилов. Сайты-приманки, фейковые раздачи в торрентах, миролюбивые письма с просьбой явиться в полицию и заплатить «штраф за педофилию». Легко представить себе такой сюжет: два агента посылают друг другу в Hyperboria фильм с детским порно. Выстраивается маршрут, по которому файл был доставлен, выявляются задействованные узлы, а их владельцев обвиняют в распространении. Бредово, но не так уж и нереально. Не впервые.

Но важный момент заключается в том, что если все эти проблемы не пытаться решать, ничего и не изменится. Тем более что поучаствовать в процессе не так уж и сложно. Мы много говорили о том, как подключаться к Tor, I2P, Freenet. Давай же попробуем разобраться в том, что скоро действительно может стать альтернативным интернетом.

Подключаемся к Hyperboria

Итак, для подключения нам понадобится UNIX-система (Windows на момент написания статьи не поддерживалась). Официально поддерживаемый способ установки cjdns — сборка из исходников. Рассмотрим установку в Debian/Ubuntu. Для начала поставим все основные зависимости:

sudo apt-get install cmake git build-essential

Выкачиваем себе репозиторий с GitHub и переключаемся в соответствующую директорию:

git clone https://github.com/cjdelisle/cjdns.git cjdns
cd cjdns

Собственно сборка:

./do

При успешной сборке в итоге ты увидишь фразу Build completed successfully. Есть инструкции по установке для ArchLinuxGentoo и OS X.

Настройка

Проверяем, что есть все необходимое:

cat /dev/net/tun

Если получится такое:

cat: /dev/net/tun: File descriptor in bad state

значит, все ОK! Если же получил такой ответ:

cat: /dev/net/tun: No such file or directory

выполни следующие команды:

sudo mkdir /dev/net &&
sudo mknod /dev/net/tun c 10 200 &&
sudo chmod 0666 /dev/net/tun

Попробуй снова выполнить

cat /dev/net/tun

Если в ответ получишь такое:

cat: /dev/net/tun: Permission denied

ты, вероятно, используешь VPS на основе платформы OpenVZ. Попроси хостера включить тебе «туннельный интерфейс» TUN/TAP — это стандартная штука, они должны знать, как это сделать.

  1. Создай конфигурационный файл:./cjdroute --genconf >> cjdroute.conf

Этот файл — твое все! Там твои ключи, IPv6-адрес, пароли доступа и прочее, и прочее, соответственно, он должен быть хорошо защищен.

Установи права доступа к файлу только для себя и помести его, например, в home

chmod 600 cjdroute.conf
mv cjdroute.conf ~/.cjdroute.conf
  1. Найди пиры. Самый сложный шаг — пока сеть в основном работает в оверлейном режиме (то есть поверх интернет-соединения), для подключения к Hyperboria тебе нужно найти кого-то, кто уже подключен.

Можно посмотреть на карте проекта, попросить в IRC-чатике (#cjdns на сервере irc.efnet.org), попробовать спросить на русскоязычном форуме.

Есть некоторые публичные ноды, но они плохи тем, что ломают децентрализацию (из-за малого количества нод вообще) и сами становятся центрами подключения. Можно подключиться через публичную ноду, а затем найти кого-нибудь внутри сети (например, существует внутренний сервис микроблогов).

  1. Добавь инфу пира в конфиг. Для подключения к пиру тебе потребуется его IP и порт, пароль и публичный ключ. Обычно все это передается в виде JSON, выглядит примерно так:"123.45.67.123:34567": { "password": "sjfhgwetuyfdgwudbjwedgu34", "publicKey": "amnfbwjhfbu4bwhcbuwyrho2iudh384rgiwyebuwygriwebdfgueyr.k" }

Подобную информацию надо вставить в конфиг в поле connectTo

// Nodes to connect to.
"connectTo":
{
    "0.1.2.3:45678":
    {
        "password": "thisIsNotARealConnection",
        "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile.k"
    }
}

Либо воспользоваться моим веб-интерфейсом (про него чуть дальше). Можно добавлять сколько угодно пиров (и чем больше — тем лучше). Если ты хочешь предоставить кому-то доступ через твою ноду, то данные есть в конфиге в комментарии рядом с секцией authorizedPasswords. Нужно только вписать свой внешний IP-адрес. В секции authorizedPasswords можно добавлять различные пароли для разных людей, а в JSON-информацию о пирах в connectTo можно добавлять любые поля (например, информацию о географическом местоположении ноды).

  1. Проверь открытые порты! После подключения к сети твоя нода получит белый статический IPv6-адрес (впрочем, доступный только из Hyperboria), поэтому важно проверить, нет ли неизвестных тебе открытых портов, к которым мог бы кто-то подключиться.
  2. Поехали!sudo ./cjdroute < ~/.cjdroute.conf

Если нужно записывать логи:

sudo ./cjdroute < ~/.cjdroute.conf > cjdroute.log

Также логи можно смотреть «в прямом эфире» через мою веб-админку.

Чтобы выключить cjdns:

sudo killall cjdroute

Для запуска cjdns не от рута тоже есть инструкция.

Итак, ты в сети. Попробуй зайти на какой-нибудь Hyperboria-сервис. Например, есть аналог Твиттера. При первом старте может потребоваться несколько минут на построение маршрутов.

Сборка OpenWRT с поддержкой cjdns

Если хочется установить cjdns на роутер, придется повозиться немного дольше.

Установка самого OpenWRT — отдельная тема, и она хорошо расписана на страницах самого проекта. Главное — убедиться, что роутер указан в списке поддерживаемых моделей. Для того чтобы роутер заработал с cjdns, нужно достать исходники OpenWRT и собрать их, указав при сборке, что необходимо добавить cjdns. Все это расписано в соответствующей инструкции на русском. Могу только добавить, что не стоит пытаться собирать прошивку на самом роутере — конечно, это надо делать на нормальном компе, а потом уже скомпилированную прошивку устанавливать на роутер.

На моем Netgear WNDR3600 оно завелось, но через неделю роутер стал жутко тупить (даже при выключенном cjdns), пришлось снести OpenWRT и поставить обратно DD-WRT.

Также в вики проекта есть инструкции для установки на Raspberry Pi.

Редакция выражает благодарность Алексею Макарову за инструкцию

WWW


В Hyperboria уже есть несколько популярных сервисов:

Криптомир

В то время как энтузиасты пытаются сделать собственный интернет, связав разрозненные островки свободы, сообщество пытается решить проблему в краткосрочной перспективе. Децентрализация, криптография, peer to peer — решения появляются почти в каждой сфере.

Bitmessage

Bitmessage
Bitmessage

Bitmessage — это система обмена сообщениями, использующая принципы децентрализованной зашифрованной коммуникации в духе Bitcoin. Адрес каждого пользователя — хеш. Рассчитывается на основе потока, публичных ключей и версии. Адреса и ключи пользователя, как и в Bitcoin, хранятся в локальном файле. Для того чтобы начать сессию с пользователем, нужно передать ему свой адрес. К сообщениям можно прикладывать файлы размером до 180 Мб, но разработчик предлагает в будущем задействовать BitTorrent для того, чтобы снять это ограничение. Также доступно что-то вроде микроблога (функция broadcast, односторонний обмен сообщениями с несколькими подписчиками) и чата. Для скачивания доступны клиенты для Windows, Mac и Linux.

Tox

tox
tox

Tox — проект, ставящий целью создать P2P-альтернативу Skype. Для шифрования используется библиотека NaCl (Network and Cryptography Library, не путать с Native Client от Google) — та же, что используется в cjdns. Идентификатор пользователя — случайная строка из 32 символов, для адресации используется DHT. Сейчас реализован протокол обмена сообщениями, но в планах есть аудио- и видеочат, передача файлов и все прочие атрибуты Skype. Однако на данный момент есть только очень скупые графические и консольные клиенты и плагин для популярного мессенджера Pidgin. В общем, проект еще сырой, но и начали работу над ним позже, чем над Bitmessage.

Vole

vole
vole

Vole — социальная сеть в браузере. Для работы не нужен центральный сервер, все происходит благодаря протоколу BitTorrent Sync. Само приложение написано на языке Go и фреймворке Ember.js. Чтобы все заработало, нужно поставить приложение для командной строки (поддерживаются все платформы) и подключиться к нему в браузере. Чтобы подключиться к другим пользователям, нужно поставить клиент BTSync. Фактически, чтобы зафоловить кого-то, нужно добавить его секрет в BTSync’е (например, RA32XLBBHXMWMECGJAJSJMMPQ3Z2ZGR7K). Можно публиковать текст и изображения, за аватарки отвечает популярный сервис Gravatar. Конечно, идея не слишком масштабируемая, но начинание неплохое.

PeerCDN

PeerCDN
PeerCDN

PeerCDN несколько выбивается из списка, поскольку предназначен не для обеспечения приватности или анонимности, а для того, чтобы снизить нагрузку на веб-сайты в случае внезапных скачков популярности. Фактически это P2P-решение для хранения статики, когда посетители запрашивают изображения и другие файлы не с сервера, а от других посетителей, которые в данный момент находятся на сайте. По словам разработчиков, это может на 90% снизить трафик. Также примечательно, что это просто подключаемая библиотека на JavaScript, поэтому ее очень легко задействовать, а пользователям не потребуется ничего устанавливать.

Mailpile

Mailpile
Mailpile

Проект по созданию безопасного почтового сервера. Защита почты создается вокруг встроенной поддержки OpenPGP. Понятно, что настройка PGP не такая уж и непосильная задача. Однако разработчики Mailpile (как и полагается, скандинавы) хотят сделать готовое решение, в котором помимо поддержки PGP и возможности работы в сети Tor есть нормальный интерфейс и удобный функционал. Проект собрал 160 тысяч долларов на площадке Indiegogo (аналог Kickstarter). И хотя ни одного релиза не было, проекту уже удалось «прогреметь». Дело в том, что после окончания кампании по сбору средств PayPal-кошелек разработчиков был заблокирован. Администрация потребовала от Mailpile объяснить, на что именно будут потрачены средства. Однако под давлением медиа и комьюнити PayPal не только был вынужден разблокировать кошелек, но и внес свое пожертвование на сумму в тысячу долларов.

Darkjpeg

darkjpeg
darkjpeg

Настоящий и крайне удобный веб-сервис для стеганографии. Для тех, кто не в курсе, — речь идет о том, чтобы скрывать конфиденциальную информацию в виде незаметного шума в JPEG-изображениях. Для того чтобы эту информацию потом извлечь, потребуется ключ. Ключи генерируются с помощью SHA-3, для шифрования используется AES-256. Процесс кодирования изображения происходит исключительно на стороне пользователя, без участия сервера разработчика. Исходные коды проекта доступны под лицензией MIT. Расшифровать изображение можно на этом же сайте. В общем, технология, конечно, не нова, но простота реализации заслуживает уважения.

BitPhone

BitPhone
BitPhone

Экспериментальный проект смартфона, использующего децентрализованную архитектуру для передачи данных. Маршруты передачи данных строятся на архитектуре в стиле Bitcoin, поэтому для передачи информации на другое устройство достаточно нахождения с ним в любой сети (не обязательно мобильной или интернете). Вместо DNS используется NameCoin, для передачи файлов — BitTorrent, для обмена аудио- и видеосообщениями — WebRTC. Поскольку проект реализуется как в ПО, так и в железе (например, в смартфоне потребуется отдельный ASIC-чип для быстрого шифрования), он находится на крайне ранней стадии развития.

BitTorrent Chat

Bittorrent Chat
Bittorrent Chat

Очередной эксперимент от разработчиков протокола BitTorrent и решения для файлохранилища BitTorrent Sync. Запущен совсем недавно, на момент написания тестирование только-только началось. Как нетрудно догадаться, BitTorrent Chat — реализация мессенджера с применением технологий BitTorrent. Поиск адресатов происходит с помощью DHT, обмен сообщениями идет напрямую, поверх всего это накладывается шифрование. Главная проблема — закрытый исходный код. Напомню, что в случае с BTSync разработчики пообещали открыть спецификации протокола, но исходный код самих приложений пока остается закрытым. Впрочем, и это уже неплохо.

Cryptosphere

Cryptosphere
Cryptosphere

P2P-платформа для создания секьюрных веб-приложений. В основе — зашифрованное файлохранилище, распределенное по узлам, имеющим соответствующий доступ. Криптография обеспечивается за счет пресловутой библиотеки NaCl, веб-приложения помещаются в принудительный сендбокс в браузере пользователя. Механизмы распространения контента в Cryptosphere спроектированы в стиле Git. Сейчас проект находится в ранней стадии развития.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    13 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии