Существуют ли какие-либо распределенные / ячеистые / P2P VPN?

12

У меня есть личный VPN, соединяющий несколько устройств, чтобы они могли иметь фиксированные IP-адреса в всегда доступной сети (при условии, что они подключены к Интернету). Это необходимо для меня, так как мои устройства могут быть в движении, в разных и непредсказуемых сетях (мобильный телефон 4G, ноутбук в университете, домашний сервер дома), и у меня есть резервный сервер, к которому нужно подключиться (и иногда Я тоже должен).

Я также подумываю об установке чего-то вроде синхронизации, что также может принести пользу с меньшими задержками и более близкими узлами.

Кроме того, я ленивый, и мне нравится воспроизводить / приостанавливать музыку, воспроизводимую на моем домашнем сервере, со смартфона, который может быть не в той же сети (это должно быть, но это не всегда так).

Это означает, что у меня есть один сервер OpenVPN и openvpnклиент, работающий на каждом устройстве. Все они подключаются к серверу, и любой трафик от любых двух узлов должен проходить через сервер, который находится относительно далеко и имеет очень ограниченную пропускную способность. Это означает задержку и медлительность. И когда я нажимаю кнопку «Пауза», это может занять до 10 секунд, чтобы фактически приостановить музыку. Даже если оба узла на самом деле находятся в одной локальной сети (поскольку они общаются через VPN). Мех.

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

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

Я полагаю, что мог бы сделать что-то похожее на запуск и клиента, и сервера, и соединить их на этом узле, но это не выглядит элегантно. Он хакерский, усложняет PKI, расщепляет VPN. Мне это не нравится

Хотя я мог использовать простой VPN, такой как PPTP, который на самом деле не обеспечивает безопасность связи, я решил, что не хочу беспокоиться о настройке Bacula для шифрования соединений между узлами, а это означает, что трафик внутри VPN является простым. Инкапсуляция VPN является единственной защитой, поэтому она не должна быть слабой. Тем не менее, все, что решает VPN, подобную «ячеистой», без конфиденциальности, было бы хорошим началом - я бы позаботился о том, чтобы трафик начал проходить через SSL / TLS.

Это похоже на проблему, которая могла возникнуть у кого-то другого, и к настоящему времени решена. Есть что-нибудь подобное?

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

Valmiky Arquissandas
источник
Да, то, что вы хотите, существует, для связи по локальной сети, если устройства локальные. Это
служебная

Ответы:

6

Я не уверен, полностью ли он отвечает вашим потребностям, но вам, вероятно, стоит взглянуть на tinc: http://www.tinc-vpn.org/ . Он довольно близко соответствует ячеистой сети, организованной центральным сервером, как вы описали, но я не уверен, удастся ли ему обнаружить пиров в вашей локальной сети.

Штеффан Каргер
источник
3

Самая простая сетка vpn, которую я нашел и использовал, это PeerVPN ( http://www.peervpn.net/ ).

PeerVPN Особенности

  • Поддержка туннелирования Ethernet с использованием устройств TAP.
  • Поддержка IPv6.
  • Топология полной ячеистой сети.
  • Автоматически создает туннели через брандмауэры и NAT без какой-либо дальнейшей настройки (например, переадресация портов).
  • Поддержка шифрования с общим ключом и аутентификация.

Конфигурация проста ... один файл конфигурации, который вы редактируете, и для базовой сетки vpn есть только 6 настроек, которые вам нужно указать, см. Учебник PeerVPN, который состоит всего из 1 страницы: http://www.peervpn.net/tutorial/

Ключ шифрования / аутентификации PSK может иметь длину до 512 бит (64 байта).

Я настроил peervpn на нескольких удаленных серверах, и это работает очень хорошо. Кроме того, нет никакого требования для «супер-узла», как вы можете встретить в других реализациях vpn-сети.

Узлы в peervpn узнают о вновь добавленных узлах в VPN автоматически без необходимости изменять конфигурации. Трафик между узлами также является прямым и не через какой-либо центральный концентратор vpn.

Примечание: прочитайте файл peervpn.conf по умолчанию, чтобы узнать о многих других опциях, которыми вы можете воспользоваться. Но для базовой сетки vpn, как я уже говорил, вам нужно всего лишь установить 6 опций (имя vpn, PSK, IP-адрес конечной точки локального туннеля, имя интерфейса), который вы хотите видеть / использовать в вашей системе linux, и номер порта, который будет использоваться для "that" vpn ... обратите внимание, что вы можете использовать peervpn для нескольких независимых VPN на сервере)

bmullan
источник
0

У меня была точно такая же проблема много лет назад. У меня было ~ 30 офисов, которые все должны были иметь возможность напрямую общаться, но они были настроены в конфигурации «хаб-и-спик». Я написал инструмент на Python для автоматической генерации n x (n-1)/2количества соединений в OpenVPN между офисами. Позже я добавил поддержку RIP-маршрутизации между сайтами после странной проблемы с Comcast, когда один офис мог видеть все остальные, но не главный офис. Наконец, я добавил возможность автоматической генерации обратного DNS для IP-адресов каналов и возможность отправки пакетов на каждый маршрутизатор.

Посмотрите на OpenMesher . Как раз этим утром я решил отряхнуть его для предстоящего проекта. Надеюсь, он делает то, что вы хотите. Если нет, не стесняйтесь представить вопрос, и я помогу.

Аарон С. де Брюн
источник