Debian.pro

Блог для пользователей и администраторов Debian


Строим Интернет 2.0. Ну или VPN для себя любимого. Hyperboria.

Давайте порассуждаем о том, как должен выглядеть интернет будущего, чтобы быть достаточно надежным и безопасным. Вот что я вижу в общих чертах:
1) трафик шифруется между любыми двумя хостами. Никто кроме этих двух хостов расшифровать трафик не может
2) каждое устройство в сети имеет свой уникальный ip-адрес (само собой, ipv6).
3) сеть построена по принципу пиринга с любыми другими устройствами
4) пиринг может быть развернут поверх обычного интернета, поверх своего собственного канала до соседнего здания, поверх wifi-mesh сети. Да вообще поверх чего угодно
5) всё это (интернет, частные сети, «нелегальные» каналы, mesh-сети) объединены в одну сеть, в которой нет NAT-a. В которой каждое устройство может связаться с каждым. И, само собой, весь трафик зашифрован.
6) невозможны блокировки чего-либо на каком-либо уровне. Если связь с каким-нибудь Китаем заблокирована на одном маршруте, сеть автоматически найдет другой маршрут для этого
7) автоматическая ремаршрутизация при падении каких-либо каналов без каких-либо дополнительных настроек
8) автоматическое использование самого быстрого маршрута до нужного хоста
9) отсутствие возможности вмешаться в коммуникации между хостами (см. пункт 1).
10) отсутствие регуляторов сети, которые определяют маршрутизацию и могут повлиять на неё в сторону ухудшения или блокировок сегментов сети.
11) сеть строится не только корпорациями, но и обычными пользователями на всех уровнях (в том числе и на пограничных каналах, когда беспроводные устройства достаточно подешевеют, чтобы можно было организовать lte-канал точка-точка).

Заинтересованы? Давайте знакомиться, это Hyperboria. VPN сеть без управляющих узлов, обладающая всеми качествами, описанными выше. Вы можете построить свою маленькую сеть поверх существующего интернета, построить вторую сеть, потом соединить их своим собственным кабелем/радиоканалом/спутниковым интернетом, а потом подключить всё это (если, конечно, пожелаете), к общей сети, которая уже сейчас объединяет пиры из почти всех технически развитых стран мира.

Как я уже говорил, трафик зашифрован для всех, кроме отправителя и получателя. Как со стороны публичных сетей, так и со стороны промежуточных пиров в Hyperboria. Сеть не ставит перед собой задачи скрыть трафик, само собой. Зато задача «сделать трафик не понятным ни для кого, кроме тех, кому он предназначен» уже успешно выполнена. Само собой, трафик сети не имеет каких-либо специфичных пометок, позволяющих эффективно резать его в DPI (разве что будут использоваться белые списки), не задев при этом корпоративные сети (ipsec, например). Софт-роутер не привязан к каким либо портам, промежуточным технологиям и вообще чему либо. Вы можете запустить роутер на любом порту и к нему смогут подключиться. Вы можете установить связь со своими пирами любыми удобными вам способами — через публичный интернет, через кабель до соседа, через публичную wifi-mesh сеть, через openvpn/gre/pptp/ipsec туннели. Даже, черт возьми, через ssh туннели.
Более того, роутеру нет необходимости иметь ipv4-адрес, хоть и настройка в таком случае пока не очень тривиальна. Вы можете запустить Hype на двух хостах в режиме автопоиска пиров, соединить их кабелем или любым другим способом и они сами договорятся между собой. И это может быть не 2 хоста, а, например, тысячи в одной mesh-сети.

Сеть защищена и от политиков. By design, эта сеть не предоставляет доступа к «заблокированным» ресурсам в сети. Она вообще никуда не предоставляет доступ, кроме других хостов Hyperboria (которым может и ваша виртуалка, которая делает нужные вам вещи). Сеть не делает из вас анонима в розовом пальто, по крайней мере до тех пор, пока она не вырастет до достаточно большого размера (миллионы устройств). Hype не предоставляет доступа через вас в публичные сети никому, до тех пор пока вы сами это не сделаете (не поднимите публично доступный по ipv6 squid без авторизации, например) — можно не опасаться вызовов в суд за взлом банка.

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

Что из себя сейчас представляет Hype? Это небольшая сеть (около 2к хостов), в которой есть небольшая пачка внутренних ресурсов различной степени полезности. Есть свой трекер, есть джаббер (с доступом к остальным серверам), есть пачка сайтов. В сети, в основном, тусуется техническая элита и параноики из разных стран. Рекламы нет, ничего нет) Есть безопасный способ коммуникации и передачи данных.

Само собой, сеть так и будет ничем без пользователей. Технически она уже готова объединять сотни тысяч гиков-линуксоидов по всему миру. Клиента под другие платформы (кроме BSD и никсов) на данном этапе нет =) Основатель сети будет рад видеть как новых гиков в сети, так и отдельные hype-сети. А все участники будут рады видеть новые сервисы. Клиент под остальные платформы возможен уже сейчас, но без сервисов в сеть никто не придет. А именно мы те люди, которые создают и поддерживают интересные сервисы.

Как попасть в Hyperboria? Во-первых вам нужно скомпилировать и запустить у себя софтовый роутер для hype (cjdroute). До тех пор, пока у вас один пир — вы не будете роутером по функциям. Как только у вас станет 2 пира — возможны ситуации, когда через вас будет проходить транзитный трафик. Собственно, я вполне себе большой роутер (10 пиров) и особенно не страдаю — трафика-то мало пока что.

Во-вторых вам нужно найти пиров, к которым вы подключитесь. Способов много. Тем, с кем я знаком, логичнее всего попросить запириться со мной — одной дугой я в Германии, второй — в Москве. Тем, с кем я не знаком — воспользоваться публичным русскоязычным форумом о hyperboria. Там есть список публичных пиров (я не публичный), есть возможность найти пиров поближе к себе.
Если вы меня знаете и хотите запириться — пишите в почту.

Ну-с, начнем ставить роутер. Нам нужен linux-тазик (с достаточно свежим дистрибутивом). Неважно, есть ли на нём выделенный адрес или нет. Просто, если выделенного адреса нет — то с вами никто не сможет запириться поверх интернета, если он сам не имеет выделенного адреса (подключиться сами же вы сможете к любому количеству пиров с выделенными адресами).
Ставим нужный софт для сборки:

root@server:~# apt-get -qq update; apt-get install git-core build-essential

Клонируем репозиторий с cjdns/cjdroute:

root@server:~# git clone https://github.com/cjdelisle/cjdns.git; cd cjdns

После чего запускаем сборку:

root@server:~# ./do

В конце мы увидим надпись:

Build completed successfully, type ./cjdroute to begin setup.

Если не увидим, пишите сюда, будем коллективно помогать.

Теперь создадим конфиг:

root@server:~# ./cjdroute --genconf >> cjdroute.conf

Если выкинуть комментарии, то конфиг будет выглядеть следующим образом:

{ // наши идентификаторы в сети. Их нужно сохранить в надежное безопасное место. Если их потерять/сменить - то ваш ipv6 адрес внутри сети будет сменен.
  "privateKey": "...",
  "publicKey": "...",
  "ipv6": "...",

// пароли для подключения к нам. Эти пароли нужно передать тем, кто хочет запириться с вами. На каждый пир - один пароль. Когда с вами хочет запириться кто-то ещё - дописывайте сюда новый пароль.
  "authorizedPasswords":
  [
    {"password": "d68s1q6sbj24w....."}
    ],

// описание интерфейса администрирования роутера. Оставьте его висеть на локалхосте, чтобы никто, кроме вас, не имел к нему доступа.
    "admin":
    {
    ...
    },
  "interfaces":
  {

// дальше идет описание пиринга поверх существующих ipv4-сетей. В том числе и поверх интернета. Именно сюда нужно вписывать ваши пиры.
  "UDPInterface":
  [
   {

// порт и ip-адрес, через который будет проходить трафик вашей инсталляции cjdroute.
    "bind": "0.0.0.0:17695",
// описание вашего пиринга (то есть тех, к кому вы подключаетесь)
    "connectTo":
    {

// описание первого пира:
      "11.11.11.11:8888":
      {
      "password":"....",
      "publicKey":"....",
      "location":"country",
      "admin":"you_can_print_mail@here"
      },

    // описание второго пира:
      "11.11.11.11:8888":
      {
      "password":"....",
      "publicKey":"....",
      "location":"country",
      "admin":"you_can_print_mail@here"

// после последнего пира запятая не ставится
    }
   }
  }
  ]

// описание остальных опций.
// нам они на текущем этапе не интересны.
  /*
  "ETHInterface":

...
...
...

Вообще весь сгенерированный конфиг будет очень хорошо прокоментирован на английском языке. Я вам указал основные моменты, на которые нужно обратить внимание. Не забудьте сохранить конфиг в надежное место вне самой машины, чтобы не потерять пиры в будущем.
Собственно, теперь, когда вы вписали тех, с кем вы будете пириться, можно запускать роутер. Если у вас всё происходило в каталоге /root/cjdns, то запускайте его так:

root@server:~# /root/cjdns/cjdroute < /root/cjdns/cjdroute.conf

Ну а теперь можно проверять, работает ли ваша сеть. Например, попинговать местный джаббер:

root@server:~# ping6 cjdns-jabber.ru
PING cjdns-jabber.ru(fccb:f289:d60:4fe0:216e:a664:ba39:2faa) 56 data bytes
64 bytes from fccb:f289:d60:4fe0:216e:a664:ba39:2faa: icmp_seq=1 ttl=64 time=265 ms
64 bytes from fccb:f289:d60:4fe0:216e:a664:ba39:2faa: icmp_seq=2 ttl=64 time=237 ms
64 bytes from fccb:f289:d60:4fe0:216e:a664:ba39:2faa: icmp_seq=3 ttl=64 time=226 ms

Все приложения, которые умеют работать по ipv6, само собой, уже умеют работать в Hype. Если вам лень подключаться к общей сети — сделайте свою приватную сеть (только из своих машин). Не нужно говорить «зачем оно мне?». Если вам нужен сегодняшний интернет и доступ к нему — поставьте себе cjdroute и запирьтесь с кем-нибудь. Хотя бы со своим сервером в Европе. Иначе в один прекрасный день мы проснемся без доступа в глобальную сеть ещё до того, как Hype станет повсеместным.


Комментарии (4):

  1. Geniewgen :

    Автор привет, есть ли смысл в этом? Пользуешься сейчас? А хорошобы через эту сеть скрывать свой трафик с корпоративной сим карте? Мне бы только в этом случае пригодилось. Есть сервер, со статикой на дебиане, есть андроид смртфон с симкой злого хозяина по трафику, и интузиазм.

  2. inkvizitor68sl :

    Пользуюсь как приватной сеткой, без коннекта с общей гипербореей.

    Под андроид клиента нет, так что ничего не выйдет. Смотри на openvpn (если есть рут), l2tp/ipsec (если рута нет).

  3. Geniewgen :

    inkvizitor68sl, понял, к серверу есть не только рут доступ но и пнуть ногой его могу.)
    Чтож, тогда openvpn. А есть мануал хороший по openvpn? На сервере minidlna с любимой музыкой, а я в другом городе, будет ли minidlna мне вещать музыку по vpn? Обе машины причем 100/100 мбит в обе стороны.

  4. inkvizitor68sl :

    Не к серверу, а к андроиду рут имеется в виду.

    > А есть мануал хороший по openvpn?
    Тысячи их.

    > На сервере minidlna с любимой музыкой
    Будет, если будет слушать vpn-ptp-интерфейсы сетевые.

Написать комментарий