У меня есть личный VPN, соединяющий несколько устройств, чтобы они могли иметь фиксированные IP-адреса в всегда доступной сети (если они подключены к Интернету). Это необходимо для меня, поскольку мои устройства могут быть в движении, в разных и непредсказуемых сетях (сотовый телефон в сети 4G, ноутбук в университете, домашний сервер дома), и у меня есть резервный сервер, который должен подключаться к ним (а иногда и , Я тоже должен).
Я также думаю об установке чего-то вроде синхронизации, которая также может выиграть от более низких задержек и более близких узлов.
Кроме того, я ленив, и мне нравится воспроизводить / приостанавливать воспроизведение музыки на моем домашнем сервере со своего смартфона, который может быть не в той же сети (это должно быть, но это не всегда так).
Это означает, что у меня один сервер OpenVPN, а openvpn
клиент работает на каждом устройстве. Все они подключаются к серверу, и любой трафик от любых двух узлов должен проходить через сервер, который находится относительно далеко и имеет очень ограниченную пропускную способность. Это означает задержку и медлительность. И когда я нажимаю кнопку «Пауза», на то, чтобы приостановить музыку, может потребоваться до 10 секунд. Даже если оба узла фактически находятся в одной локальной сети (поскольку они общаются через VPN). Мех.
В идеале должен существовать какой-то способ создания VPN, который мог бы находить кратчайшие пути между узлами и пытаться подключать их напрямую. Что-то вроде того, как Skype работал с суперузлами?
Хотя сервер находится далеко отсюда, один из узлов имеет общедоступный IP-адрес и может быть доступен другим узлам. Он может действовать как сервер от них - даже если это не сам сервер, хотя это был бы лучший выбор для некоторые узлы.
Я полагаю, что мог бы сделать что-то вроде запуска и клиента, и сервера, и связать их на этом узле, но это не выглядит элегантно. Это хакерское занятие, оно усложняет PKI, разделяет VPN. Мне это не нравится.
Хотя я мог бы использовать простой VPN, такой как PPTP, который действительно не гарантирует безопасность связи, я решил, что не хочу беспокоиться о настройке Bacula для шифрования соединений между узлами, что означает, что трафик внутри VPN является обычным. Инкапсуляция VPN - это только безопасность, поэтому она не должна быть слабой. Однако все, что решает сетчатую VPN без конфиденциальности, уже было бы хорошим началом - я бы удостоверился, что трафик начинает проходить через SSL / TLS.
Это похоже на проблему, которая могла быть у кого-то еще, и она уже решена. Есть что-нибудь подобное?
Также есть вероятность, что я смотрю на это неправильно, но пока это выглядит как лучший способ гарантировать, что я всегда могу удаленно подключаться к любому из моих устройств, независимо от того, где я нахожусь или они.
Я не уверен, полностью ли он удовлетворяет ваши потребности, но вам, вероятно, стоит взглянуть на tinc: http://www.tinc-vpn.org/. Он довольно близко соответствует ячеистой сети, управляемой центральным сервером, как вы описали, но я не уверен, удастся ли ей обнаружить пиров в вашей локальной сети.
Самая простая сетка vpn, которую я нашел и использовал, - это PeerVPN (http://www.peervpn.net/).
Возможности PeerVPN
Конфигурация проста ... один файл конфигурации, который вы редактируете, и для базового 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 на сервере)
Много лет назад у меня была такая же проблема. У меня было ~ 30 офисов, которые все должны были иметь возможность напрямую общаться, но они были настроены в конфигурации «хаб и спицы». Я написал инструмент на Python для автоматической генерации n x (n-1)/2
количество подключений в OpenVPN между офисами. Позже я добавил поддержку маршрутизации RIP между сайтами после странной проблемы с Comcast, когда один офис мог видеть все остальные, но не главный офис. Наконец, я добавил возможность автоматического создания обратного DNS для IP-адресов каналов и возможность отправлять пакеты на каждый маршрутизатор.
Взгляни на OpenMesher. Буквально сегодня утром я решил стереть пыль для предстоящего проекта. Надеюсь, он сделает то, что вы хотите. Если нет, не стесняйтесь задавать вопрос, и я помогу.