Мастерская

F2F-сети — тёмная материя Интернета

⇣ Содержание

#Скажи мне, кто твой друг

F2F расшифровывается как Friend-to-Friend. Если не вдаваться в технические подробности, то F2F-сети являются подмножеством знакомых многим P2P-сетей вроде Kad или eDonkey. В отличие от них, в F2F-сети, или, как её ещё называют, Darknet, могут находиться только доверенные участники, то есть люди, которых вы лично знаете или хотя бы которым доверяете в достаточной степени. Такая сеть, построенная на доверии между участниками, позволяет без опаски обмениваться информацией. Таким образом, она оказывается защищённой от случайной «половой» связи с любителями защищать сверх всякой меры авторские права. Впрочем, если одного из участников таки поймают, то он благополучно может «сдать» и своих друзей. На практике такие случаи редки, потому что гораздо проще окучивать какие-нибудь Bittorrent-трекеры или файлообменники. Печальнее другое — большинство F2F-сетей, появившихся в 2000-х, ныне если и живы, то не очень здравствуют. Некоторые клиенты даже не догадываются о существовании UPnP или NAT-PMP.

#n2n

Начнём знакомство с данной технологией не с классического F2F-клиента, а со своеобразной реализации VPN-соединения — n2n. В отличие от обычных VPN-соединений, когда клиенты подключаются к серверу и весь трафик идёт через него, n2n работает чуть иначе. Эта система также требует наличия «сервера» (supernode), который занимается «сводничеством» нескольких клиентов между собой, а уж потом они передают данные напрямую друг другу. В крайнем случае, когда вырваться за брандмауэр, NAT и прочие сетевые заслоны не получается, он будет прогонять трафик через себя.

В Сети можно найти списки общедоступных серверов n2n, но лучше использовать всё своё, родное. В который раз нам поможет Ubuntu-сервер в облаке Amazon. Устанавливаем и запускаем n2n.

sudo apt-get install n2n 
sudo supernode -l 443 

В качестве параметра передаётся номер порта. Для примера выбран 443-й порт, так как он вряд ли будет заблокирован в какой-нибудь публичной сети, но можно использовать и любой другой. Главное, не забудьте в настройках брандмауэра Amazon EC2 открыть этот порт для TCP/UDP.

Клиенты, как и сервер, доступны для Windows, Linux, Mac OS X и даже для некоторых альтернативных прошивок роутеров. Для ОС от Microsoft есть готовый установщик. Если у вас не установлен TAP-адаптер, то придётся сделать это с помощью диспетчера устройств. В нём выбираем «Действие» -> «Установить старое устройство», переходим к ручному добавлению устройств и выбираем папку driver в каталоге, куда был установлен n2n. После инсталляции в списке сетевых адаптеров должен появиться TAP-Win32 Adapter V8.

Теперь на каждом из клиентов в командной строке, вооружившись правами администратора, перемещаемся в каталог, куда установлен n2n, и выполняем следующую команду:

edge.exe -a 10.1.2.1 -c vpn2n -k password -l server-address:443

Ключ -a задаёт внутренний IP-адрес машины, параметр -с передаёт имя виртуальной сети, а после -k идёт пароль для доступа к ней. Наконец, после -l надо указать адрес и порт сервера. На второй и последующих машинах запускается такая же команда, но задаётся следующий по счёту внутренний IP-адрес. Для удобства запуска клиентов n2n имеется несколько графических оболочек.

Теперь можно безопасно обмениваться информацией внутри виртуальной локальной сети. Ну а раз уж речь зашла о P2P-VPN, то нельзя не упомянуть любопытный одноименный проект P2PVPN. Клиент кроссплатформенный и также требует наличия TAP-адаптера, а помимо этого ещё ручного проброса портов. Зато он полностью децентрализован. Интересной особенностью является установка связи между участниками посредством Bittorrent-трекера.

#RetroShare

Всё, вылезаем из консоли и переходим к продуктам для обычных людей. Следующим в списке идёт старый проект RetroShare, который недавно обрёл второе дыхание. Работает он с децентрализованной и зашифрованной F2F-сетью. Клиент в лучших традициях P2P представляет собой маленький комбайн и поддерживает поиск, файлообмен, чаты, почту, форумы и так далее. Самое главное в нём — это списки и группы друзей или доверенных лиц. При первом запуске предлагается создать профиль и сгенерировать PGP-ключ для аутентификации. Процедура эта ресурсоёмкая.

После создания учетной записи и входа в систему сразу же идём в настройки, кликнув по иконке с шестерёнкой. В разделе Server включаем UPnP и переходим в режим DarkNet или хотя бы Private. Тут же указываем ограничение скорости входящего и исходящего каналов. Заодно, для успокоения нервов, в разделе Appearance переключаем язык на английский, ибо русская локализация местами сделана профессиональным гуглопереводчиком.

Аналогичную настройку надо выполнить и для другого клиента. Теперь переходим на вкладку друзей и добавляем новый контакт, нажав на плюсик и выбрав Add friend. Нам нужно получить PGP-ключ от друга и отослать ему свой. Полученные ключи необходимо вставить в нижнее поле ввода. На следующем этапе надо отметить галочками пункты добавления и аутентификации нового знакомца.

Через некоторое время клиенты найдут друг друга, и в списках друзей появится новый аккаунт. Для обмена файлами надо сделать доступной хотя бы одну папку. В меню слева кликаем на иконку папки с плюсиком. Добавляем папки, которые хотим расшарить. Каждую из них лучше оставить просматриваемой для друзей, но недоступной для остальных участников сети.

Для скачивания файлов переходим в раздел «Файлы», где выбираем друга и смотрим его файлы и папки. В контекстном меню можно запустить команду на скачивание нужных данных. Вот, собственно, и вся премудрость. А ещё в RetroShare можно искать файлы среди общих папок друзей, рекомендовать друга остальным участникам сети, пересылать файлы в личных сообщениях и многое другое.

#Alliance P2P

Данный проект не очень популярен, хотя для пользователя он намного удобнее и проще других. Клиент кроссплатформенный и написан на Java. Сразу после старта приложения надо будет поменять имя (ник) и проверить настройки сети, то есть удостовериться, что порт нормально пробросился с помощью UPnP. Для улучшения безопасности можно добавить список сетей, из которых к вам можно будет подключаться, а также включить шифрование SSL+AES. Нелишним будет запретить автоматическое взаимодействие с друзьями друзей — просмотр, доступ к файлам, добавление в контакт-лист и так далее.

После первичной настройки необходимо выбрать общие папки через диалог Add files to share. Теперь можно приглашать друзей с помощью мастера Add friends. Для этого надо сгенерировать коды (приглашения), причём можно добавлять не только удалённых пользователей, но и своих соседей по локальной сети. Безопаснее использовать одноразовые приглашения.

Сгенерированный код приглашения отправляется другому пользователю, который с помощью того же мастера вводит его и практически тут же присоединяется к вашей маленькой F2F-сети. Обратите внимание, что тип шифрования должен быть одинаковым у всех клиентов. Ну и в реальной жизни далеко не всегда срабатывает автоматический проброс порта, а ручной бывает вовсе недоступным. Учитывайте эту неприятную особенность.

Теперь можно просматривать и загружать файлы друзей. В программе также доступен простой чат, куда можно отправить ссылку для скачивания любого вашего файла. Как видите, всё очень просто.

#OneSwarm

Когда-то давно это был ещё один форк известного Bittorrent-клиента Vuze, но с повышенным уровнем защиты приватности. Ныне OneSwarm разросся до настоящего монстра с кучей возможностей, позволяющих практически безбоязненно обмениваться файлами, в том числе за счёт построения своей частной F2F-сети. По умолчанию запускается веб-интерфейс, хотя программа имеет более навороченный оконный GUI. Приглашать друзей в свою сеть можно различными способами. OneSwarm умеет импортировать контакт-лист из Google-аккаунта, искать клиентов в локальной сети, добавлять друзей посредством обмена ключами или с помощью приглашений. Ещё есть режим импорта пользователей с общественного сервера, на котором, по сути, лежат ключи других людей. Надёжнее вручную добавлять друзей и не «светиться» в публичных местах.

Но даже в этом случае OneSwarm предлагает разделение контактов по уровню доверия. По умолчанию все добавляемые контакты не могут видеть список выложенных вами файлов. При создании или скачивании раздачи вы можете ограничить круг друзей, которым будут доступны файлы из неё. Всё это позволяет добиться того, что при скачивании какого-либо файла, найденного в F2F-сети, вы не можете гарантированно сказать, у какого именно пользователя или пользователей находится искомый файл.

Впрочем, это далеко не всё, что умеет OneSwarm. Ради интереса можете заглянуть в настройки клиента в классическом GUI, перейдя в режим Advanced. Только не всматривайтесь долго в эту бездну опций, иначе бездна начнет всматриваться в вас. Серьёзно, если вы не понимаете, за что отвечает какая-либо настройка, то не лезьте к ней.

#Вместо заключения

За рамками статьи остались такие известные проекты, как GNUNet или Freenet, которые тоже могут помочь в создании F2F-сетей. Однако для большинства они будут достаточно сложными в настройке и использовании, да и скорость файлообмена в них не так высока. Вышеперечисленные проекты кроссплатформенны, обладают понятным интерфейсом и в достаточной степени поддерживаются и развиваются. Нелишним будет напомнить читателям, что использовать F2F-сети, как и любые другие, можно только для легального обмена файлами. Ну а если вы пиратствуете, то ССЗБ. Удачи!

 
 
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии
window-new
Soft
Hard
Тренды 🔥