Если вам нужно скрыть UDP трафик или организовать соединение там, где разрешено только TCP или ICMP, то может помочь Udp2raw-tunnel. Это open source решение от автора UDPspeeder, про который я рассказывал отдельно.
Udp2raw умеет маскировать UDP пакеты, добавляя фейковые ICMP/TCP заголовки. Фаерволы, не имеющие в своем арсенале анализаторов пакетов, будут считать их пакетами соответствующих протоколов с фейковыми заголовками.
При этом настроить и запустить в работу Udp2raw очень просто. Достаточно скачать бинарник, запустить его с некоторыми параметрами. И то же самое сделать со стороны клиента.
Подключение к локальному UDP порту 3333 на стороне клиента будет эквивалентно подключению к локальному порту 7777 на сервере. При этом через туннель пойдёт фейковый TCP трафик.
Зачем это может быть нужно? Например, в публичных сетях часто закрыт UDP трафик, открыт только TCP на 80 и 443 порту. С помощью Udp2raw можно обойти это ограничение. Правда я в этом случае использую OpenVPN на TCP порту. Но он достаточно легко определяется и блокируется при желании.
Если заблокирован и TCP и UDP, то поднимаем фейковый туннель через ICMP. Со стороны своего сервера настраиваем OpenVPN, через ICMP туннель подключаемся к своему OpenVPN и пользуемся полным доступом в сеть.
Исходники / Инструкция с OpenVPN
#vpn #firewall #security
Udp2raw умеет маскировать UDP пакеты, добавляя фейковые ICMP/TCP заголовки. Фаерволы, не имеющие в своем арсенале анализаторов пакетов, будут считать их пакетами соответствующих протоколов с фейковыми заголовками.
При этом настроить и запустить в работу Udp2raw очень просто. Достаточно скачать бинарник, запустить его с некоторыми параметрами. И то же самое сделать со стороны клиента.
# Запустить со стороны сервера:
./udp2raw_amd64 -s -l0.0.0.0:4096 \
-r 127.0.0.1:7777 -k "passwd" --raw-mode faketcp -a
# Запустить со стороны клиента:
./udp2raw_amd64 -c -l0.0.0.0:3333 \
-r44.55.66.77:4096 -k "passwd" --raw-mode faketcp -a
Подключение к локальному UDP порту 3333 на стороне клиента будет эквивалентно подключению к локальному порту 7777 на сервере. При этом через туннель пойдёт фейковый TCP трафик.
Зачем это может быть нужно? Например, в публичных сетях часто закрыт UDP трафик, открыт только TCP на 80 и 443 порту. С помощью Udp2raw можно обойти это ограничение. Правда я в этом случае использую OpenVPN на TCP порту. Но он достаточно легко определяется и блокируется при желании.
Если заблокирован и TCP и UDP, то поднимаем фейковый туннель через ICMP. Со стороны своего сервера настраиваем OpenVPN, через ICMP туннель подключаемся к своему OpenVPN и пользуемся полным доступом в сеть.
Исходники / Инструкция с OpenVPN
#vpn #firewall #security
У меня было немало заметок про различные VPN системы. При этом я ни разу не упоминал про OpenConnect, да и в комментариях редко про него кто вспомнит. А на деле это функциональная и простая Open Source система для организации VPN со своим сервером и клиентом с GUI под все популярные платформы.
Сразу отвечу на напрашивающийся вопрос, чем OpenConnect принципиально отличается от того же OpenVPN или WireGuard. OpenConnect относится к классу SSL VPN, хотя в наше время термин SSL уже устарел и логичнее было бы сказать TLS VPN. Смысл в том, что OpenConnect для шифрования использует стандартные TLS сертификаты, те же самые, что и современные web сервера. Таким образом, его трафик практически неотличим от HTTPS. Особенно если его запустить на 443 TCP порту. Это хорошее решение для обхода блокировок. Ближайшие аналоги с подобной реализацией шифрования - Microsoft SSTP и CISCO AnyConnect.
Сервер для OpenConnect - ocserv, доступен в стандартных репозиториях популярных Linux дистрибутивов. Так что с установкой и настройкой особых проблем нет. Все настройки по олдскулу в обычном конфигурационном файле. Для шифрования можно получить бесплатные сертификаты от Let's Encrypt или использовать самоподписные.
Аутентификация пользователей может быть настроена с помощью логина и пароля. Удобная особенность ocserv - всеми настройками пользователей можно управлять на сервере, в том числе заворачивание всего трафика в vpn туннель, передача маршрутов, dns серверов. Настройки не такие гибкие, как в OpenVPN, но тем не менее всё равно сделано удобно и функционально. Отмечу также, что в ocserv встроены настройки для защиты от брутфорса. Не нужно использовать сторонние решения. Он сам может по определённым правилам блокировать нежелательные подключения.
В качестве клиента может использоваться открытый OpenConnect GUI, либо проприетарный CISCO AnyConnect. Для пользователя всё максимально просто. Он запускает клиент, вводит имя сервера, логин и пароль. Даже инструкцию писать не надо.
Единственное, что я не могу прокомментировать, это что в OpenConnect с быстродействием. Например, Microsoft SSTP очень медленный. В этом я лично убеждался, когда настраивал и сравнивал на одном и том же железе. В целом, OpenConnect - современное, удобное как для администратора, так и для пользователя решение для организации VPN.
⇨ Сайт / Исходники
#vpn
Сразу отвечу на напрашивающийся вопрос, чем OpenConnect принципиально отличается от того же OpenVPN или WireGuard. OpenConnect относится к классу SSL VPN, хотя в наше время термин SSL уже устарел и логичнее было бы сказать TLS VPN. Смысл в том, что OpenConnect для шифрования использует стандартные TLS сертификаты, те же самые, что и современные web сервера. Таким образом, его трафик практически неотличим от HTTPS. Особенно если его запустить на 443 TCP порту. Это хорошее решение для обхода блокировок. Ближайшие аналоги с подобной реализацией шифрования - Microsoft SSTP и CISCO AnyConnect.
Сервер для OpenConnect - ocserv, доступен в стандартных репозиториях популярных Linux дистрибутивов. Так что с установкой и настройкой особых проблем нет. Все настройки по олдскулу в обычном конфигурационном файле. Для шифрования можно получить бесплатные сертификаты от Let's Encrypt или использовать самоподписные.
Аутентификация пользователей может быть настроена с помощью логина и пароля. Удобная особенность ocserv - всеми настройками пользователей можно управлять на сервере, в том числе заворачивание всего трафика в vpn туннель, передача маршрутов, dns серверов. Настройки не такие гибкие, как в OpenVPN, но тем не менее всё равно сделано удобно и функционально. Отмечу также, что в ocserv встроены настройки для защиты от брутфорса. Не нужно использовать сторонние решения. Он сам может по определённым правилам блокировать нежелательные подключения.
В качестве клиента может использоваться открытый OpenConnect GUI, либо проприетарный CISCO AnyConnect. Для пользователя всё максимально просто. Он запускает клиент, вводит имя сервера, логин и пароль. Даже инструкцию писать не надо.
Единственное, что я не могу прокомментировать, это что в OpenConnect с быстродействием. Например, Microsoft SSTP очень медленный. В этом я лично убеждался, когда настраивал и сравнивал на одном и том же железе. В целом, OpenConnect - современное, удобное как для администратора, так и для пользователя решение для организации VPN.
⇨ Сайт / Исходники
#vpn
Некоторое время назад я рассказывал про любопытный сервис под названием Tailscale. Возвращаюсь к нему вновь, чтобы рассказать тем, кто про него не знает, о его существовании. А так же поделиться любопытными новостями, связанными с ним.
Кратко поясню, что это вообще такое. Очень условно Tailscale можно назвать аналогом популярного Hamachi. Его можно использовать в том же качестве, как и Хамачи, но не только. Это децентрализованная VPN-сеть, построенная на базе опенсорсного VPN-клиента WireGuard по принципу mesh-сети.
Для работы с Tailscale, вы ставите клиента на свои устройства (поддерживаются все популярные системы), и они объединяются в единую VPN сеть. Ничего настраивать не надо, работает максимально просто для пользователя. Всё взаимодействие с сетью происходит через сервер управления и веб интерфейс разработчиков. А вот это уже закрытый функционал, который продаётся за деньги. Есть бесплатный тариф для индивидуального использования с 20-ю устройствами.
Для личного использования бесплатного тарифа за глаза. Я проверял его, очень удобно. Недавно вышло нововведение - Tailscale SSH. Это встроенный в браузер SSH клиент, с помощью которого можно подключаться к своим серверам прямо из веб интерфейса. Реализовано удобно. Посмотреть, как работает, можно в демонстрационном ролике.
Со временем появилась open source реализация управляющего сервера - Headscale. Причём разработчики Tailscale отнеслись к нему благосклонно и помогают в разработке. Информируют об изменениях протокола. Палки в колёса не ставят. Проект очень живой, постоянно обновляется.
Мы имеем open source реализацию клиентов Tailscale от самих разработчиков, и серверную часть Headscale, которую можно развернуть на своих серверах. Отдельно есть репозиторий с веб интерфейсом для Headscale - headscale-ui. То есть практически весь функционал платного сервиса можно поднять бесплатно на своих серверах. В сети уже есть описания и руководства (пример 1, 2).
На вид всё это выглядит очень удобно и функционально. Если Headscale на практике без багов и особых проблем реализует функционал Tailscale, то такая система будет актуальна для больших установок. Там есть и внешняя аутентификация, и управление доступом на основе ACL, и управление маршрутами. Много всего, что требуется для больших коллективов.
⇨ Сайт / Исходники Tailscale / Headscale / Headscale-ui
#vpn #tailscale
Кратко поясню, что это вообще такое. Очень условно Tailscale можно назвать аналогом популярного Hamachi. Его можно использовать в том же качестве, как и Хамачи, но не только. Это децентрализованная VPN-сеть, построенная на базе опенсорсного VPN-клиента WireGuard по принципу mesh-сети.
Для работы с Tailscale, вы ставите клиента на свои устройства (поддерживаются все популярные системы), и они объединяются в единую VPN сеть. Ничего настраивать не надо, работает максимально просто для пользователя. Всё взаимодействие с сетью происходит через сервер управления и веб интерфейс разработчиков. А вот это уже закрытый функционал, который продаётся за деньги. Есть бесплатный тариф для индивидуального использования с 20-ю устройствами.
Для личного использования бесплатного тарифа за глаза. Я проверял его, очень удобно. Недавно вышло нововведение - Tailscale SSH. Это встроенный в браузер SSH клиент, с помощью которого можно подключаться к своим серверам прямо из веб интерфейса. Реализовано удобно. Посмотреть, как работает, можно в демонстрационном ролике.
Со временем появилась open source реализация управляющего сервера - Headscale. Причём разработчики Tailscale отнеслись к нему благосклонно и помогают в разработке. Информируют об изменениях протокола. Палки в колёса не ставят. Проект очень живой, постоянно обновляется.
Мы имеем open source реализацию клиентов Tailscale от самих разработчиков, и серверную часть Headscale, которую можно развернуть на своих серверах. Отдельно есть репозиторий с веб интерфейсом для Headscale - headscale-ui. То есть практически весь функционал платного сервиса можно поднять бесплатно на своих серверах. В сети уже есть описания и руководства (пример 1, 2).
На вид всё это выглядит очень удобно и функционально. Если Headscale на практике без багов и особых проблем реализует функционал Tailscale, то такая система будет актуальна для больших установок. Там есть и внешняя аутентификация, и управление доступом на основе ACL, и управление маршрутами. Много всего, что требуется для больших коллективов.
⇨ Сайт / Исходники Tailscale / Headscale / Headscale-ui
#vpn #tailscale
Чтобы два раза не вставать, продолжу тему Tailscale. Покажу пару конкретных примеров личного пользования на базе бесплатного тарифного плана. Оба примера могут использоваться одновременно.
1️⃣ По умолчанию Tailscale заворачивает в VPN туннель только трафик своей сети. Но вы можете сделать так, что подключенное устройство весь свой внешний трафик (например, сёрфинг в интернете) будет заворачивать на одно из устройств сети.
К примеру, у вас есть какой-то внешний сервер для обхода блокировок. Вы добавляете все свои устройства в Tailscale, а для внешней виртуалки указываете настройку exit node. Выбранные вами устройства (например, смартфоны) после подключения будут заворачивать весь свой трафик на эту виртуалку по умолчанию. Описание настройки.
2️⃣ Если вы используете блокировщики рекламы, то можно настроить свой собственный сервер Pi-hole и использовать его возможности. Для этого надо добавить машину с настроенным Pi-hole. Далее в настройках Tailscale добавить DNS сервер, указав внутренний IP адрес Pi-hole сервера. И отдельно указать, что подключенным клиентам надо заменять их локальный DNS сервер на настроенный.
При сёрфинге с подключенным Tailscale все DNS запросы будут проходить через ваш Pi-hole и очищаться от рекламных доменов. Особенно это актуально для смартфонов. Если блокировку надо отключить, то просто отключаетесь от Tailscale. Описание настройки.
Ещё больше примеров и готовых инструкций можно посмотреть в документации в разделе How-to Guides.
Показанные выше примеры без проблем можно реализовать с помощью OpenVPN. Он умеет и настройки DNS, и маршруты передавать клиенту. Я неоднократно это настраивал. Но всё это делается в консоли, а для этого нужно хорошее понимание и знание работы OpenVPN. С Tailscale всё это делается за 5-10 минут через настройки в веб интерфейсе. Единственное, что надо будет настроить — включить маршрутизацию трафика на exit node. Но есть одно очень важное принципиальное отличие. OpenVPN весь трафик пропускает через себя, а Tailscale напрямую соединяет устройства. Трафик между ними идёт минуя управляющий сервер.
#vpn #tailscale
1️⃣ По умолчанию Tailscale заворачивает в VPN туннель только трафик своей сети. Но вы можете сделать так, что подключенное устройство весь свой внешний трафик (например, сёрфинг в интернете) будет заворачивать на одно из устройств сети.
К примеру, у вас есть какой-то внешний сервер для обхода блокировок. Вы добавляете все свои устройства в Tailscale, а для внешней виртуалки указываете настройку exit node. Выбранные вами устройства (например, смартфоны) после подключения будут заворачивать весь свой трафик на эту виртуалку по умолчанию. Описание настройки.
2️⃣ Если вы используете блокировщики рекламы, то можно настроить свой собственный сервер Pi-hole и использовать его возможности. Для этого надо добавить машину с настроенным Pi-hole. Далее в настройках Tailscale добавить DNS сервер, указав внутренний IP адрес Pi-hole сервера. И отдельно указать, что подключенным клиентам надо заменять их локальный DNS сервер на настроенный.
При сёрфинге с подключенным Tailscale все DNS запросы будут проходить через ваш Pi-hole и очищаться от рекламных доменов. Особенно это актуально для смартфонов. Если блокировку надо отключить, то просто отключаетесь от Tailscale. Описание настройки.
Ещё больше примеров и готовых инструкций можно посмотреть в документации в разделе How-to Guides.
Показанные выше примеры без проблем можно реализовать с помощью OpenVPN. Он умеет и настройки DNS, и маршруты передавать клиенту. Я неоднократно это настраивал. Но всё это делается в консоли, а для этого нужно хорошее понимание и знание работы OpenVPN. С Tailscale всё это делается за 5-10 минут через настройки в веб интерфейсе. Единственное, что надо будет настроить — включить маршрутизацию трафика на exit node. Но есть одно очень важное принципиальное отличие. OpenVPN весь трафик пропускает через себя, а Tailscale напрямую соединяет устройства. Трафик между ними идёт минуя управляющий сервер.
#vpn #tailscale
⚠ Я долго это терпел, но не выдержал. Надоело то, что не грузятся аватарки в youtube. Для всех других сайтов обходился редким включением VPN, так как не часто хожу по запрещёнке. Но ютубом пользуюсь каждый день.
✅ В итоге настроил:
◽ OpenVPN сервер на американском VPS.
◽ Подключил его к домашнему Микротику.
◽ Создал Address List со списком доменов, запросы к которым хочу заворачивать в VPN туннель.
◽ Промаркировал все запросы к этому списку.
◽ Настроил в routes маршрут через OpenVPN туннель для всех промаркированных запросов.
И о чудо, спустя почти год я постоянно вижу все картинки с ютуба.
Подробно весь процесс настройки показан вот в этом видео:
Wireguard + Mikrotik. Частичное перенаправление трафика
⇨ https://www.youtube.com/watch?v=RA8mICgGcs0
Единственное отличие — у автора уже RouterOS 7 и настроен WireGuard. Мне пока не хочется экспериментов с 7-й версией, поэтому я до сих пор везде использую 6-ю. А там поддержки WG нет, поэтому подключаюсь по OpenVPN.
#vpn #mikrotik
✅ В итоге настроил:
◽ OpenVPN сервер на американском VPS.
◽ Подключил его к домашнему Микротику.
◽ Создал Address List со списком доменов, запросы к которым хочу заворачивать в VPN туннель.
◽ Промаркировал все запросы к этому списку.
◽ Настроил в routes маршрут через OpenVPN туннель для всех промаркированных запросов.
И о чудо, спустя почти год я постоянно вижу все картинки с ютуба.
Подробно весь процесс настройки показан вот в этом видео:
Wireguard + Mikrotik. Частичное перенаправление трафика
⇨ https://www.youtube.com/watch?v=RA8mICgGcs0
Единственное отличие — у автора уже RouterOS 7 и настроен WireGuard. Мне пока не хочется экспериментов с 7-й версией, поэтому я до сих пор везде использую 6-ю. А там поддержки WG нет, поэтому подключаюсь по OpenVPN.
#vpn #mikrotik
Думаю, многие из вас слышали или пользовались такими сервисами как Hamachi и Logmein. Если я не ошибаюсь, то раньше это были разные продукты. Hamachi использовался для быстрой настройки локальной сети через интернет. Я её использовал в 2000-е для сетевой игры по интернету. Например, в те же Герои 3. А Logmein — это сервис, похожий на Teamviewer, но появился раньше. Там тоже можно было подключаться к компьютеру, передавать файлы и т.д. И всё это управлялось через личный кабинет в браузере. Было удобно.
Одно время эти сервисы были с бесплатными тарифными планами. Я пользовался ими. Потом бесплатные тарифные планы убрали, пользоваться перестал. На днях решил посмотреть, как они поживают. Старая учётка сохранилась. Как оказалось, для Hamachi вернули бесплатный тарифный план на 5 устройств для каждой отдельной сети. Ограничений по количеству самих сетей не увидел.
Решил посмотреть, как это всё работает сейчас. Сервис довольно удобный. Всё управление возможно через личный кабинет. В единую сеть можно объединить Windows, Linux, MacOS машины и смартфоны на Android и iOS. Я проверил и добавил 2 виндовые машины, одну линуксовую без иксов, только с консолью (ставится консольный клиент из deb или rpm пакета), и свой смартфон на Android. Всё настроил довольно быстро. Немного повозился только со смартфоном. Там настраивается штатное VPN соединение с сервером Hamachi. Для этого надо закинуть личный сертификат на устройство и использовать его в настройки подключения через IPSEC Xauth RSA. Но можно было и попроще сделать через PPTP.
В итоге все 4 устройства оказались в общей локальной сети. Можно обмениваться файлами или какие-то сервисы запускать, типа Syncthing. На выходе удобный функционал в бесплатном тарифном плане. Для личного использования вполне достаточный.
Личный кабинет регистрировать на https://www.logmein.com, описание функционала Hamachi на отдельном сайте https://www.vpn.net. После регистрации в личном кабинете, вы можете добавить компьютеры в раздел Computers, это для функционала удалённого управления. Там бесплатного тарифа нет, только триал на 30 дней. А в разделе Networks можно создать свою сеть и добавить туда до 5-ти устройств бесплатно. Сетей может быть много.
Похожая функциональность есть у сервиса Tailscale, про который я несколько заметок делал. Там в бесплатном тарифном плане было 20 устройств и не было поддержки мобильных клиентов. Сейчас зашёл проверить, уже после написания этой заметки, а в бесплатном тарифном плане 100 устройств и поддержка смартфонов. Получается по всем параметрам лучше Hamachi, кроме некоторых нюансов. В Hamachi вы очень просто и быстро создаёте локальную сеть и закидываете туда клиентов. Сетей может быть несколько, клиенты будут изолированы друг от друга и видеть только участников своей сети. В Tailscale не помню, каким образом реализован этот же функционал. В таком простом и явном виде я его не помню.
#vpn #бесплатно
Одно время эти сервисы были с бесплатными тарифными планами. Я пользовался ими. Потом бесплатные тарифные планы убрали, пользоваться перестал. На днях решил посмотреть, как они поживают. Старая учётка сохранилась. Как оказалось, для Hamachi вернули бесплатный тарифный план на 5 устройств для каждой отдельной сети. Ограничений по количеству самих сетей не увидел.
Решил посмотреть, как это всё работает сейчас. Сервис довольно удобный. Всё управление возможно через личный кабинет. В единую сеть можно объединить Windows, Linux, MacOS машины и смартфоны на Android и iOS. Я проверил и добавил 2 виндовые машины, одну линуксовую без иксов, только с консолью (ставится консольный клиент из deb или rpm пакета), и свой смартфон на Android. Всё настроил довольно быстро. Немного повозился только со смартфоном. Там настраивается штатное VPN соединение с сервером Hamachi. Для этого надо закинуть личный сертификат на устройство и использовать его в настройки подключения через IPSEC Xauth RSA. Но можно было и попроще сделать через PPTP.
В итоге все 4 устройства оказались в общей локальной сети. Можно обмениваться файлами или какие-то сервисы запускать, типа Syncthing. На выходе удобный функционал в бесплатном тарифном плане. Для личного использования вполне достаточный.
Личный кабинет регистрировать на https://www.logmein.com, описание функционала Hamachi на отдельном сайте https://www.vpn.net. После регистрации в личном кабинете, вы можете добавить компьютеры в раздел Computers, это для функционала удалённого управления. Там бесплатного тарифа нет, только триал на 30 дней. А в разделе Networks можно создать свою сеть и добавить туда до 5-ти устройств бесплатно. Сетей может быть много.
Похожая функциональность есть у сервиса Tailscale, про который я несколько заметок делал. Там в бесплатном тарифном плане было 20 устройств и не было поддержки мобильных клиентов. Сейчас зашёл проверить, уже после написания этой заметки, а в бесплатном тарифном плане 100 устройств и поддержка смартфонов. Получается по всем параметрам лучше Hamachi, кроме некоторых нюансов. В Hamachi вы очень просто и быстро создаёте локальную сеть и закидываете туда клиентов. Сетей может быть несколько, клиенты будут изолированы друг от друга и видеть только участников своей сети. В Tailscale не помню, каким образом реализован этот же функционал. В таком простом и явном виде я его не помню.
#vpn #бесплатно
На днях история с неработающим OpenVPN наделала шума. Я регулярно новости не читаю, поэтому даже не сразу понял, о чём идёт речь, когда разные люди стали писать по этой теме. Для тех, кто не в курсе, о чём идёт речь, немного ссылок по теме: habr, securitylab, tproger.
У меня много где используется OpenVPN. Это основная технология для построения VPN, которую я использую, как на работе, так и в личных целях. Когда узнал про блокировки, проверил у себя, проблем не нашлось. К серверу в USA без проблем подключился. Позже вечером заметил, что дома не работает обход блокировок. Там Mikrotik подключается по TCP. Подключение не работало, хотя по UDP из этой же квартиры без проблем подключался. Подумал, что вот оно, я тоже столкнулся. Но на самом деле нет. Пошёл на сервер и увидел, что TCP туннель пару дней назад упал по какой-то причине. Буду с этим отдельно разбираться. По факту всё работает, даже через упоминаемую в новостях Yota.
❓Что это на самом деле было — не знаю. Может банальный сбой, может тестирование блокировки openvpn, может тестирование чего-то другого, что косвенно задело vpn. Информации нет, так что остаётся только гадать на кофейной гуще. Больше всего похоже на разовую акцию для информационного шума. Уж больно лихо все СМИ подхватили эту тему.
Я думаю, что блокировка VPN за пределы РФ, как и многих популярных иностранных сервисов типа youtube, в итоге состоится. Нарастающая логика происходящий событий такова. Это вопрос времени. Внутри РФ, думаю, что VPN работать будет. Возможно, нас ещё раньше на той стороне заблокируют. Там же свобода и рыночная экономика.
Варианты обхода этих блокировок, думаю, тоже будут, но не для массового пользователя. Несколько лет назад у меня сотрудники ездили в командировку в Китай. У них там работал OpenVPN для связи с московским офисом. Хотя я думал, что не будет. Все же знают про великий китайский файрвол. Как он на самом деле работает, точной информации не видел. Везде в основном слухи.
✅ Как минимум у нас останется вариант с маскировкой под HTTPS. Можно будет поднять OpenConnect или SSTP, который умеет поднимать тот же SoftEther VPN. Их трафик трудноотличим от обычного web трафика. Для тех, кому жизненно важно подстраховаться, рекомендую поднять что-то подобное на случай реальной блокировки.
✅ Много раз слышал, что плохо детектится и блокируется технология Shadowsocks. Легко и быстро настраивается, клиенты есть под все платформы. На её базе работает Outline VPN, Shadowsocks for Windows и многие другие программы. Легко гуглятся, пока гугл не заблокирован. Думаю, до него не дойдёт, хотя кто знает.
✅ Ещё один вариант — завернуть весь VPN трафик в Udp2raw-tunnel. Он умеет маскировать трафик, добавляя фейковые заголовки пакетам. Если блокировка идёт без разбора содержимого пакетов, то может помочь.
Расскажите, столкнулись ли вы с блокировкой OpenVPN. Если да, то как это выглядело и какие параметры канала были. Какой протокол и порт использовался, включено ли сжатие трафика.
#vpn
У меня много где используется OpenVPN. Это основная технология для построения VPN, которую я использую, как на работе, так и в личных целях. Когда узнал про блокировки, проверил у себя, проблем не нашлось. К серверу в USA без проблем подключился. Позже вечером заметил, что дома не работает обход блокировок. Там Mikrotik подключается по TCP. Подключение не работало, хотя по UDP из этой же квартиры без проблем подключался. Подумал, что вот оно, я тоже столкнулся. Но на самом деле нет. Пошёл на сервер и увидел, что TCP туннель пару дней назад упал по какой-то причине. Буду с этим отдельно разбираться. По факту всё работает, даже через упоминаемую в новостях Yota.
❓Что это на самом деле было — не знаю. Может банальный сбой, может тестирование блокировки openvpn, может тестирование чего-то другого, что косвенно задело vpn. Информации нет, так что остаётся только гадать на кофейной гуще. Больше всего похоже на разовую акцию для информационного шума. Уж больно лихо все СМИ подхватили эту тему.
Я думаю, что блокировка VPN за пределы РФ, как и многих популярных иностранных сервисов типа youtube, в итоге состоится. Нарастающая логика происходящий событий такова. Это вопрос времени. Внутри РФ, думаю, что VPN работать будет. Возможно, нас ещё раньше на той стороне заблокируют. Там же свобода и рыночная экономика.
Варианты обхода этих блокировок, думаю, тоже будут, но не для массового пользователя. Несколько лет назад у меня сотрудники ездили в командировку в Китай. У них там работал OpenVPN для связи с московским офисом. Хотя я думал, что не будет. Все же знают про великий китайский файрвол. Как он на самом деле работает, точной информации не видел. Везде в основном слухи.
✅ Как минимум у нас останется вариант с маскировкой под HTTPS. Можно будет поднять OpenConnect или SSTP, который умеет поднимать тот же SoftEther VPN. Их трафик трудноотличим от обычного web трафика. Для тех, кому жизненно важно подстраховаться, рекомендую поднять что-то подобное на случай реальной блокировки.
✅ Много раз слышал, что плохо детектится и блокируется технология Shadowsocks. Легко и быстро настраивается, клиенты есть под все платформы. На её базе работает Outline VPN, Shadowsocks for Windows и многие другие программы. Легко гуглятся, пока гугл не заблокирован. Думаю, до него не дойдёт, хотя кто знает.
✅ Ещё один вариант — завернуть весь VPN трафик в Udp2raw-tunnel. Он умеет маскировать трафик, добавляя фейковые заголовки пакетам. Если блокировка идёт без разбора содержимого пакетов, то может помочь.
Расскажите, столкнулись ли вы с блокировкой OpenVPN. Если да, то как это выглядело и какие параметры канала были. Какой протокол и порт использовался, включено ли сжатие трафика.
#vpn
Последнее время стала актуальна тема VPN. Расскажу вам по этому поводу про интересный open source проект — Nebula. Авторы называют его scalable overlay networking tool, что для меня затруднительно однозначно перевести. В общем случае это программа для построения связной виртуальной сети поверх физической, в том числе и через интернет.
Термин overlay обычно применяют для больших виртуальных сетей, построенный как бы над обычными. Есть физические сети underlay и виртуальные overlay. В Nebula используется агент, который устанавливается на каждый хост и в зависимости от своих настроек, подключается к тем или иным хостам. Соединения образуются между хостами напрямую (p2p), то есть получается mesh сеть. В этом основное отличие от традиционных VPN сетей, где используются туннели между шлюзами, а все остальные хосты общаются друг с другом посредством шлюзов.
Nebula разработали в Slack и потом выложили в открытый доступ. Авторы инструмента открыли свою компанию, saas сервис, занимаются внедрением и поддержкой. У них, кстати, есть бесплатный тарифный план.
Развернуть Nebula у себя не представляет большой сложности. Простейшая инструкция для запуска есть в самом репозитории. Аутентификация хостов происходит посредством сертификатов, как в openvpn. Так что придётся поднять свой CA и выпускать для клиентов сертификаты. У Nebula всё это есть в комплекте, так что не придётся прибегать к сторонним инструментам.
Пример выпуска CA:
Сертификата для клиента:
Тут сразу идёт функциональная привязка к выпущенному сертификату, так что продумать структуру сети нужно до выпуска сертификатов. Потом клиенту передаётся конфиг с сертификатом, где указан IP адрес одного или группы хостов, которые выступают в роли управляющего сервера. Точкой обмена трафиком они не будут. В зависимости от своих настроек, хосты обмениваются трафиком между собой напрямую. Даже если оба клиента находятся за NAT, управляющая нода соединит их напрямую посредством технологии UDP hole punching.
Если я правильно понял принцип работы Nebula, VPN туннели поднимаются динамически между хостами в случае необходимости. При этом используется своя технология на базе обмена ключами Диффи-Хеллмана (ECDH) и шифре AES-256-GCM. То есть это не надстройка над каким-нибудь wireguard или чем-то аналогичным. И всё это создано для построения очень больших сетей из сотен и тысяч хостов.
Nebula немного похожа на Tailscale, только у неё изначально всё готово для установки на своём железе. Нет привязки к облачному сервису. Для Tailscale тоже есть подобный сервер — Headscale. Но его развивают и поддерживают другие люди, не разработчики.
⇨ Сайт / Исходники / Документация / Обзор
#vpn
Термин overlay обычно применяют для больших виртуальных сетей, построенный как бы над обычными. Есть физические сети underlay и виртуальные overlay. В Nebula используется агент, который устанавливается на каждый хост и в зависимости от своих настроек, подключается к тем или иным хостам. Соединения образуются между хостами напрямую (p2p), то есть получается mesh сеть. В этом основное отличие от традиционных VPN сетей, где используются туннели между шлюзами, а все остальные хосты общаются друг с другом посредством шлюзов.
Nebula разработали в Slack и потом выложили в открытый доступ. Авторы инструмента открыли свою компанию, saas сервис, занимаются внедрением и поддержкой. У них, кстати, есть бесплатный тарифный план.
Развернуть Nebula у себя не представляет большой сложности. Простейшая инструкция для запуска есть в самом репозитории. Аутентификация хостов происходит посредством сертификатов, как в openvpn. Так что придётся поднять свой CA и выпускать для клиентов сертификаты. У Nebula всё это есть в комплекте, так что не придётся прибегать к сторонним инструментам.
Пример выпуска CA:
# ./nebula-cert ca -name "Myorganization, Inc"
Сертификата для клиента:
# ./nebula-cert sign -name "laptop" -ip "192.168.100.2/24" \
-groups "laptop,home,ssh"
Тут сразу идёт функциональная привязка к выпущенному сертификату, так что продумать структуру сети нужно до выпуска сертификатов. Потом клиенту передаётся конфиг с сертификатом, где указан IP адрес одного или группы хостов, которые выступают в роли управляющего сервера. Точкой обмена трафиком они не будут. В зависимости от своих настроек, хосты обмениваются трафиком между собой напрямую. Даже если оба клиента находятся за NAT, управляющая нода соединит их напрямую посредством технологии UDP hole punching.
Если я правильно понял принцип работы Nebula, VPN туннели поднимаются динамически между хостами в случае необходимости. При этом используется своя технология на базе обмена ключами Диффи-Хеллмана (ECDH) и шифре AES-256-GCM. То есть это не надстройка над каким-нибудь wireguard или чем-то аналогичным. И всё это создано для построения очень больших сетей из сотен и тысяч хостов.
Nebula немного похожа на Tailscale, только у неё изначально всё готово для установки на своём железе. Нет привязки к облачному сервису. Для Tailscale тоже есть подобный сервер — Headscale. Но его развивают и поддерживают другие люди, не разработчики.
⇨ Сайт / Исходники / Документация / Обзор
#vpn
Популярный вопрос по поводу OpenVPN. Как на одном сервере с несколькими внешними IP адресами настроить независимую работу VPN на каждом IP адресе. Сделать это очень просто. Фактически, это штатная работа службы OpenVPN, даже ничего колхозить не придётся.
Настраиваете OpenVPN как обычно для одного IP адреса. Допустим, вся конфигурация у вас описана в
Теперь добавим ещё один сервер и запустим 2 экземпляра OpenVPN, каждый на своём внешнем ip. Для этого в конфигурацию
Копируем этот конфиг для запуска второго сервера:
В него добавляем свои параметры:
Все остальные настройки могут быть как идентичными первому серверу, в том числе использовать те же сертификаты и CA, так и совершенно разными. Они между собой никак не будут связаны. Это будут два отдельных сервера OpenVPN. Запускаем второй сервер:
Проверяем:
Таким же образом вы можете копировать конфигурации сервера и запускать разные туннели на разных портах, с разным шифрованием, настройками и т.д. Если у вас есть возможность докупать внешние IP на VPS, то вы сможете настроить многофункциональный VPN сервер под любые запросы. Это очень удобно. К тому же просто и быстро настраивается. И так же потом обслуживается. Каждый туннель можно настроить на свой лог файл, свою статистику и т.д. Всё это мониторить, анализировать, ограничивать доступ к каким-то туннелям, настраивать для них правила файрвола, разным туннелям пушить разные маршруты, разные настройки пользователям. В общем, красота. Я не знаю, где ещё подобные вещи настраиваются так же легко и просто.
#openvpn #vpn
Настраиваете OpenVPN как обычно для одного IP адреса. Допустим, вся конфигурация у вас описана в
/etc/openvpn/server/server1.conf
. Запускаете вы этот сервер так (если установили в Debian из базовых реп):# systemctl start openvpn-server@server1.service
Теперь добавим ещё один сервер и запустим 2 экземпляра OpenVPN, каждый на своём внешнем ip. Для этого в конфигурацию
server1.conf
добавляем параметр local, указав внешний IP адрес, и сразу обозначим tun интерфейс, на котором он будет работать и адресное пространство этого туннеля:local 1.2.3.4
dev tun1
server 10.8.1.0 255.255.255.0
Копируем этот конфиг для запуска второго сервера:
# cp server1.conf server2.conf
В него добавляем свои параметры:
local 4.3.2.1
dev tun2
server 10.8.2.0 255.255.255.0
Все остальные настройки могут быть как идентичными первому серверу, в том числе использовать те же сертификаты и CA, так и совершенно разными. Они между собой никак не будут связаны. Это будут два отдельных сервера OpenVPN. Запускаем второй сервер:
# systemctl start openvpn-server@server2.service
Проверяем:
# ip a | grep 'global tun'
inet 10.8.1.1/24 scope global tun1
inet 10.8.2.1/24 scope global tun2
# netstat -tulnp | grep openvpn
udp 0 0 1.2.3.4:1194 0.0.0.0:* 1330/openvpn
udp 0 0 4.3.2.1:1194 0.0.0.0:* 1321/openvpn
Таким же образом вы можете копировать конфигурации сервера и запускать разные туннели на разных портах, с разным шифрованием, настройками и т.д. Если у вас есть возможность докупать внешние IP на VPS, то вы сможете настроить многофункциональный VPN сервер под любые запросы. Это очень удобно. К тому же просто и быстро настраивается. И так же потом обслуживается. Каждый туннель можно настроить на свой лог файл, свою статистику и т.д. Всё это мониторить, анализировать, ограничивать доступ к каким-то туннелям, настраивать для них правила файрвола, разным туннелям пушить разные маршруты, разные настройки пользователям. В общем, красота. Я не знаю, где ещё подобные вещи настраиваются так же легко и просто.
#openvpn #vpn
Последнее время всё чаще и чаще появляется информация о блокировках тех или иных VPN соединений. При этом я ни разу не слышал, чтобы уже реально блокировали технологию Shadowsocks. В связи с этим хочу вам напомнить об одном простом и удобном приложении для построения личных VPN сетей на базе Shadowsocks. Речь пойдёт про Outline-Server и Outline-Client. Добавил эти пояснения, так как при поиске Outline отсвечивает другой, более популярный продукт с таким же именем, который является менеджером заметок.
Основное удобство Outline в том, что его очень легко настроить и использовать. Для установки своего сервера достаточно взять в аренду любую VPS. Скачать себе на компьютер приложение Outline-Manager, которое автоматически подключит VPS и всё там настроит.
После этого вам достаточно установить клиент на любое своё устройство (Windows, Linux, MacOS, Android, iOS), прописать туда настройки своего сервера и пользоваться. Клиент будет автоматически заворачивать весь трафик в туннель. На выходе будет IP адрес вашего сервера. Можно купить несколько VPS в разных странах, развернуть там Outline Server, добавить их к себе в клиент и переключаться.
Справиться с настройкой сможет практически любой человек, который способен взять в аренду VPS и подключиться к нему по SSH. Outline можно рекомендовать разным людям, не только айтишникам.
Перед написанием заметки я проверил работу. Описываю по шагам, что нужно сделать.
1️⃣ Арендуем где угодно VPS. Я могу от себя лично порекомендовать хостеров serverspace.ru или ruvds.com. Не буду говорить, что они лучше других. Просто я сам их использую и меня они устраивают.
2️⃣ Скачиваем Outline Manager под свою систему. Я использовал Windows. После запуска приложения, установка будет выполнена автоматически в профиль текущего пользователя в AppData\Local\Programs\outline-manager.
3️⃣ После запуска приложения добавьте туда свой сервер. Для этого выберите самый последний пункт Настройте Outline где угодно. Вы увидите команду, которую нужно запустить по SSH в консоли VPS.
4️⃣ После завершения установки на сервере, в консоли увидите ключевую строку, которую нужно скопировать и вставить в Outline Manager. Сервер добавлен.
5️⃣ Скачайте и установите на другое устройство Outline Client. Создайте в Outline Manager для него ключ и скопируйте его в клиент. Он автоматически добавит ваш сервер. Теперь к нему можно подключаться и пользоваться.
Базово сервер позволяет смотреть статистику трафика для каждого клиента и настраивать для них месячные ограничения по объёму трафика.
⇨ Сайт / Исходники
#vpn #shadowsocks
Основное удобство Outline в том, что его очень легко настроить и использовать. Для установки своего сервера достаточно взять в аренду любую VPS. Скачать себе на компьютер приложение Outline-Manager, которое автоматически подключит VPS и всё там настроит.
После этого вам достаточно установить клиент на любое своё устройство (Windows, Linux, MacOS, Android, iOS), прописать туда настройки своего сервера и пользоваться. Клиент будет автоматически заворачивать весь трафик в туннель. На выходе будет IP адрес вашего сервера. Можно купить несколько VPS в разных странах, развернуть там Outline Server, добавить их к себе в клиент и переключаться.
Справиться с настройкой сможет практически любой человек, который способен взять в аренду VPS и подключиться к нему по SSH. Outline можно рекомендовать разным людям, не только айтишникам.
Перед написанием заметки я проверил работу. Описываю по шагам, что нужно сделать.
1️⃣ Арендуем где угодно VPS. Я могу от себя лично порекомендовать хостеров serverspace.ru или ruvds.com. Не буду говорить, что они лучше других. Просто я сам их использую и меня они устраивают.
2️⃣ Скачиваем Outline Manager под свою систему. Я использовал Windows. После запуска приложения, установка будет выполнена автоматически в профиль текущего пользователя в AppData\Local\Programs\outline-manager.
3️⃣ После запуска приложения добавьте туда свой сервер. Для этого выберите самый последний пункт Настройте Outline где угодно. Вы увидите команду, которую нужно запустить по SSH в консоли VPS.
4️⃣ После завершения установки на сервере, в консоли увидите ключевую строку, которую нужно скопировать и вставить в Outline Manager. Сервер добавлен.
5️⃣ Скачайте и установите на другое устройство Outline Client. Создайте в Outline Manager для него ключ и скопируйте его в клиент. Он автоматически добавит ваш сервер. Теперь к нему можно подключаться и пользоваться.
Базово сервер позволяет смотреть статистику трафика для каждого клиента и настраивать для них месячные ограничения по объёму трафика.
⇨ Сайт / Исходники
#vpn #shadowsocks
На днях в комментариях посоветовали необычный open source проект для обхода блокировок от иранских и китайских разработчиков — Hiddify. Это набор различных инструментов и технологий для маскировки трафика в интернете. Всё это собрано и организовано в единую веб панель для управления настройками и клиентами.
Для установки есть bash скрипт под Ubuntu 20 или 22. Я воспользовался им и развернул Hiddify на своём VPS. Подробности приводить не буду, они все есть в инструкции. Всё устанавливается автоматически. После работы скрипта вам предоставят ссылку на веб интерфейс. Также в консоли будет меню управления сервисами с базовыми возможностями (посмотреть статусы, логи, перезапустить и т.д.). Установщик в том числе корректно всё настроит с вашим доменным именем, а не только с IP адресом.
Я даже не знаю, на чём конкретно остановиться, рассказывая об Hiddify. Он умеет кучу всего. В основе используется протокол XTLS и его реализация в сервере Xray. Он поддерживает все современные популярные реализации шифрованных протоколов: vmess, vless, v2ray, shadowsocks, trojan. Я так понял, это всё в основном придумано китайцами для обхода своих блокировок.
Панель удобно организована. Вы создаёте пользователя. Далее открываете его страницу. Там помимо информации о самом пользователе и его статистике, будут ссылки на клиенты под Android, iOS, Windows. Причём представлены несколько разных клиентов, которые скачать можно как из стандартных маркетов, так и напрямую с вашего сервера. Там же можно управлять настройками конфигураций и получить настройки прокси сервера для Telegram.
Пользователь на своей персональной странице может проверить скорость соединения с вашим сервером через локальный speedtest. Это сделано для того, чтобы можно было наглядно оценить разницу между прямым подключением и шифрованным. Там же есть тест работы DNS over HTTPS.
Панель как будто подготовлена для предоставления массовой услуги. Есть поддержка квот по трафику с обнулением раз в неделю или месяц. А также работа на нескольких доменах. Вы можете использовать её незаметно для пользователей на разных доменах. Одних к одному подключать, других к другому. Так же есть поддержка telegram бота, которого можно использовать для отправки персональных или массовых сообщений пользователям. Там много всяких дополнительных фишек типа этой.
Панель на вид прикольная, функциональная, удобная. Я почему-то не нашёл вообще никаких материалов на русском языке по этой части. Наверное пока ещё не было серьезных поводов для использования.
Судя по всему, все эти инструменты — последние прибежища заблокированных. Я раньше даже не знал, что существует такое количество шифрованных протоколов для обхода всевозможных блокировок и ограничений. Думаю, скоро нам всё это пригодится. Причём я не берусь судить, хорошо это или плохо. Мир распадается на сегменты. Это данность наступающего будущего, в котором некоторые уже давно живут, типа Китая или Ирана, а мы туда тоже потихоньку вкатываемся.
⇨ Сайт / Исходники / Видеообзор
#vpn #xray
Для установки есть bash скрипт под Ubuntu 20 или 22. Я воспользовался им и развернул Hiddify на своём VPS. Подробности приводить не буду, они все есть в инструкции. Всё устанавливается автоматически. После работы скрипта вам предоставят ссылку на веб интерфейс. Также в консоли будет меню управления сервисами с базовыми возможностями (посмотреть статусы, логи, перезапустить и т.д.). Установщик в том числе корректно всё настроит с вашим доменным именем, а не только с IP адресом.
Я даже не знаю, на чём конкретно остановиться, рассказывая об Hiddify. Он умеет кучу всего. В основе используется протокол XTLS и его реализация в сервере Xray. Он поддерживает все современные популярные реализации шифрованных протоколов: vmess, vless, v2ray, shadowsocks, trojan. Я так понял, это всё в основном придумано китайцами для обхода своих блокировок.
Панель удобно организована. Вы создаёте пользователя. Далее открываете его страницу. Там помимо информации о самом пользователе и его статистике, будут ссылки на клиенты под Android, iOS, Windows. Причём представлены несколько разных клиентов, которые скачать можно как из стандартных маркетов, так и напрямую с вашего сервера. Там же можно управлять настройками конфигураций и получить настройки прокси сервера для Telegram.
Пользователь на своей персональной странице может проверить скорость соединения с вашим сервером через локальный speedtest. Это сделано для того, чтобы можно было наглядно оценить разницу между прямым подключением и шифрованным. Там же есть тест работы DNS over HTTPS.
Панель как будто подготовлена для предоставления массовой услуги. Есть поддержка квот по трафику с обнулением раз в неделю или месяц. А также работа на нескольких доменах. Вы можете использовать её незаметно для пользователей на разных доменах. Одних к одному подключать, других к другому. Так же есть поддержка telegram бота, которого можно использовать для отправки персональных или массовых сообщений пользователям. Там много всяких дополнительных фишек типа этой.
Панель на вид прикольная, функциональная, удобная. Я почему-то не нашёл вообще никаких материалов на русском языке по этой части. Наверное пока ещё не было серьезных поводов для использования.
Судя по всему, все эти инструменты — последние прибежища заблокированных. Я раньше даже не знал, что существует такое количество шифрованных протоколов для обхода всевозможных блокировок и ограничений. Думаю, скоро нам всё это пригодится. Причём я не берусь судить, хорошо это или плохо. Мир распадается на сегменты. Это данность наступающего будущего, в котором некоторые уже давно живут, типа Китая или Ирана, а мы туда тоже потихоньку вкатываемся.
⇨ Сайт / Исходники / Видеообзор
#vpn #xray
Я много раз видел упоминание сервиса Netmaker, который служит для организации overlay сетей с помощью Wireguard. Это open source продукт, который можно развернуть у себя, либо воспользоваться облачным сервисом по подписке. Сразу скажу на кого он похож, чтобы было понятно о чём пойдёт речь: Nebula, Tailscale, ZeroTier.
Netmaker среди этих продуктов едва ли не самый популярный. Я последнее время много о нём слышал упоминаний. Его можно использовать и как для построения Site-to-Site соединений, так и для Mesh сетей.
Попробовать его можно в рамках бесплатного тарифного плана в SaaS сервисе. Там дают возможность добавить одну сеть и соединить с её помощью до 30-ти устройств. А если понравится, можно и у себя развернуть. Ставится автоматически с помощью готового bash скрипта.
Netmaker представляет из себя веб интерфейс, где вы добавляете хосты, формируете для них ключи, с помощью которых они объединяются в VPN сети. Настройками хостов и сетями управляете там же, в веб интерфейсе. Сервис полностью управляется через него. В консоль нужно будет лазить только на хостах, когда их будете подключать.
Перечислю несколько задач, которые можно будет решить с помощью Netmaker:
🔹У вас есть закрытая сеть с ограниченным доступом из интернета. На один из хостов ставится клиент Netmaker. С помощью настроек вы открываете доступ к закрытой сети через этот хост для какого-то набора остальных клиентов.
🔹Вы можете выбрать какой-то один хост в сети, который будет выступать шлюзом для доступа во вне для всех остальных клиентов, которых настроите для работу через него.
🔹С помощью Netmaker организуется Mesh VPN, где клиенты взаимодействуют друг с другом напрямую, а не через управляющий сервер, как, к примеру, в классическом openvpn.
🔹Если два хоста по какой-то причине не могут напрямую взаимодействовать друг с другом, можно назначить третий, через который будет осуществляться связь.
Помимо этих примеров, в Netmaker есть следующая функциональность:
◽Мониторинг состояния сетей и хостов
◽Списки доступа к хостам и сетям
◽Управление пользователями и их правами на основе модели RBAC
Продукт известный, функциональный. В сети много руководств и роликов с описанием возможностей и настройки.
⇨ Сайт / Исходники
#vpn
Netmaker среди этих продуктов едва ли не самый популярный. Я последнее время много о нём слышал упоминаний. Его можно использовать и как для построения Site-to-Site соединений, так и для Mesh сетей.
Попробовать его можно в рамках бесплатного тарифного плана в SaaS сервисе. Там дают возможность добавить одну сеть и соединить с её помощью до 30-ти устройств. А если понравится, можно и у себя развернуть. Ставится автоматически с помощью готового bash скрипта.
Netmaker представляет из себя веб интерфейс, где вы добавляете хосты, формируете для них ключи, с помощью которых они объединяются в VPN сети. Настройками хостов и сетями управляете там же, в веб интерфейсе. Сервис полностью управляется через него. В консоль нужно будет лазить только на хостах, когда их будете подключать.
Перечислю несколько задач, которые можно будет решить с помощью Netmaker:
🔹У вас есть закрытая сеть с ограниченным доступом из интернета. На один из хостов ставится клиент Netmaker. С помощью настроек вы открываете доступ к закрытой сети через этот хост для какого-то набора остальных клиентов.
🔹Вы можете выбрать какой-то один хост в сети, который будет выступать шлюзом для доступа во вне для всех остальных клиентов, которых настроите для работу через него.
🔹С помощью Netmaker организуется Mesh VPN, где клиенты взаимодействуют друг с другом напрямую, а не через управляющий сервер, как, к примеру, в классическом openvpn.
🔹Если два хоста по какой-то причине не могут напрямую взаимодействовать друг с другом, можно назначить третий, через который будет осуществляться связь.
Помимо этих примеров, в Netmaker есть следующая функциональность:
◽Мониторинг состояния сетей и хостов
◽Списки доступа к хостам и сетям
◽Управление пользователями и их правами на основе модели RBAC
Продукт известный, функциональный. В сети много руководств и роликов с описанием возможностей и настройки.
⇨ Сайт / Исходники
#vpn
Когда вы настраиваете VPN, встаёт вопрос выбора размера MTU (maximum transmission unit) внутри туннеля. Это размер полезного блока с данными в одном пакете. Как известно, в сетевом пакете часть информации уходит для служебной информации в заголовках. Различные технологии VPN используют разный объём служебных заголовков. А если VPN пущен поверх другого VPN канала, то этот вопрос встаёт особенно остро.
Если ошибиться с размером MTU, то пакеты начнут разбиваться на несколько, чтобы передать полезный блок с данными. Это очень сильно снижает скорость передачи данных. Минимум в 2 раза, но на деле гораздо больше.
Правильно выбрать размер MTU можно с помощью готового калькулятора - Visual packet size calculator. Его автор, кстати, Даниил Батурин, который иногда ведёт бесплатные вебинары Rebrain, которые я периодически рекламирую. Рекомендую послушать, интересно.
К сожалению, в калькуляторе нет OpenVPN. И я как-то сходу не смог найти информацию, сколько места занимают служебные заголовки этого протокола. Покажу пример для WireGuard, если я всё правильно понимаю. Если ошибаюсь, прошу поправить.
Мы устанавливаем туннель WireGuard, чтобы гонять по нему ipv4 трафик. Идём в калькулятор и выстраиваем там цепочку:
IPv4 (20 bytes) ⇨ WireGuard (40 bytes) ⇨ IPv4 (20 bytes)
Имея на родительском интерфейсе MTU 1500, внутри туннеля нам необходимо установить его 1420. Если не ошибаюсь, это как раз значение по умолчанию для WireGuard.
Тема MTU довольно сложная. Если вы не сетевой инженер и специально ей не интересовались, то вникнуть непросто. На практике я сталкивался с подобными проблемами. Решал их в меру своих сил и способностей - просто уменьшал MTU до некоторых значений, когда проблем пропадала. Если вы не разбираетесь детально в этой теме, рекомендую поступать так же. И важно знать, что если у вас PPPoE соединение от провайдера, то оно дополнительно 8 байт занимает на заголовки. Часто дефолтные значения различного софта не учитывают этого нюанса и нужно будет поправить вручную.
#vpn #network
Если ошибиться с размером MTU, то пакеты начнут разбиваться на несколько, чтобы передать полезный блок с данными. Это очень сильно снижает скорость передачи данных. Минимум в 2 раза, но на деле гораздо больше.
Правильно выбрать размер MTU можно с помощью готового калькулятора - Visual packet size calculator. Его автор, кстати, Даниил Батурин, который иногда ведёт бесплатные вебинары Rebrain, которые я периодически рекламирую. Рекомендую послушать, интересно.
К сожалению, в калькуляторе нет OpenVPN. И я как-то сходу не смог найти информацию, сколько места занимают служебные заголовки этого протокола. Покажу пример для WireGuard, если я всё правильно понимаю. Если ошибаюсь, прошу поправить.
Мы устанавливаем туннель WireGuard, чтобы гонять по нему ipv4 трафик. Идём в калькулятор и выстраиваем там цепочку:
IPv4 (20 bytes) ⇨ WireGuard (40 bytes) ⇨ IPv4 (20 bytes)
Имея на родительском интерфейсе MTU 1500, внутри туннеля нам необходимо установить его 1420. Если не ошибаюсь, это как раз значение по умолчанию для WireGuard.
Тема MTU довольно сложная. Если вы не сетевой инженер и специально ей не интересовались, то вникнуть непросто. На практике я сталкивался с подобными проблемами. Решал их в меру своих сил и способностей - просто уменьшал MTU до некоторых значений, когда проблем пропадала. Если вы не разбираетесь детально в этой теме, рекомендую поступать так же. И важно знать, что если у вас PPPoE соединение от провайдера, то оно дополнительно 8 байт занимает на заголовки. Часто дефолтные значения различного софта не учитывают этого нюанса и нужно будет поправить вручную.
#vpn #network
Для WireGuard существует большое количество простых панелей управления, типа wg-easy (мне, кстати, нравится, я пользуюсь), либо каких-то более масштабных готовых продуктов с WG внутри. Но насколько я знаю, мало кто из них поддерживает аутентификацию через LDAP.
Для решения этой задачи существует WireGuard Portal. Я не раз видел положительные отзывы о нём, в том числе в комментариях к своим заметкам. Это полностью бесплатный, open source проект. Его ещё с какого-то времени Docker начал спонсировать.
WG портал легко устанавливается и настраивается. Это веб интерфейс для управления пользователями VPN. Особенность его в том, что он поддерживает хранение пользователей в SQLite, MySQL, MsSQL, Postgres и аутентификацию через OAuth или LDAP (Active Directory и OpenLDAP). Для бесплатного продукта это хороший набор возможностей. Обычно всё, что связано с LDAP, относится к коммерческим версиям.
Не буду писать полную инструкцию по установке и настройке, потому что она не уместится в формате заметки. Расскажу только основные нюансы:
1️⃣ WG Portal использует текущую установку WireGuard в системе, сам не ставит. Так что предварительно установите WG вручную. А если он уже установлен, то забэкапьте на всякий случай свои настройки в
2️⃣ Версия v2 пока в разработке. Используйте stable v1.
3️⃣ По умолчанию, если не будет отдельно настроено хранение пользователей, они будут храниться в .data/sqlite.db, откуда вы запустите compose.
4️⃣ Пример композа и конфигурации можно посмотреть на dockerhub или в документации. Не забудьте v2 поменять на v1. Почему-то все примеры с v2, хотя это ветка для разработки.
В целом, каких-то особых сложностей в установке и настройке нет. Ниже ссылка на видео, где подробно описан весь процесс, в том числе с LDAP.
⇨ Сайт / Исходники / Видеоинструкция
#vpn #wireguard
Для решения этой задачи существует WireGuard Portal. Я не раз видел положительные отзывы о нём, в том числе в комментариях к своим заметкам. Это полностью бесплатный, open source проект. Его ещё с какого-то времени Docker начал спонсировать.
WG портал легко устанавливается и настраивается. Это веб интерфейс для управления пользователями VPN. Особенность его в том, что он поддерживает хранение пользователей в SQLite, MySQL, MsSQL, Postgres и аутентификацию через OAuth или LDAP (Active Directory и OpenLDAP). Для бесплатного продукта это хороший набор возможностей. Обычно всё, что связано с LDAP, относится к коммерческим версиям.
Не буду писать полную инструкцию по установке и настройке, потому что она не уместится в формате заметки. Расскажу только основные нюансы:
1️⃣ WG Portal использует текущую установку WireGuard в системе, сам не ставит. Так что предварительно установите WG вручную. А если он уже установлен, то забэкапьте на всякий случай свои настройки в
/etc/wireguard
, если она вам нужны. Портал будет их менять в процессе управления. 2️⃣ Версия v2 пока в разработке. Используйте stable v1.
3️⃣ По умолчанию, если не будет отдельно настроено хранение пользователей, они будут храниться в .data/sqlite.db, откуда вы запустите compose.
4️⃣ Пример композа и конфигурации можно посмотреть на dockerhub или в документации. Не забудьте v2 поменять на v1. Почему-то все примеры с v2, хотя это ветка для разработки.
В целом, каких-то особых сложностей в установке и настройке нет. Ниже ссылка на видео, где подробно описан весь процесс, в том числе с LDAP.
⇨ Сайт / Исходники / Видеоинструкция
#vpn #wireguard
Расскажу вам про один любопытный инструмент, который часто используют либо пентестеры, либо хакеры, чтобы закрепиться в чужой инфраструктуре. А так как это всё напрямую связано с системным администрированием, то инструмент может пригодиться и в обычных делах. Благо он очень простой для использования и освоения, поэтому относительно популярный. По нему много информации в англоязычном интернете.
Речь пойдёт про Chisel — это TCP/UDP туннель, который работает поверх HTTP с использованием SSH. Причём представляет он из себя один бинарник, написанный на GO. Один и тот же файл и для сервера, и для клиента, работает под всеми популярными системами. То есть вы можете поднять сервер на Windows, а подключиться клиентом с Linux и наоборот. Благодаря тому, что chisel работает поверх HTTP, вы очень быстро и просто можете поднять необходимый туннель там, где этот протокол открыт. Покажу сразу на примерах.
1️⃣ Пример, который в настоящее время очень актуален. Быстро поднимаем SOCKS5 прокси, через который будем выходить в интернет. Качаем бинарник под свою систему из репозитория:
Делаем его исполняемым и запускаем сервер:
Подключаемся с Windows машины:
Теперь идём в браузер и настраиваем socks прокси: адрес - 127.0.0.1, порт 1080. Проверяем на любом сервисе для определения ip адреса. Браузер должен выходить в интернет через IP адрес сервера. Можно добавить аутентификацию:
Очень просто и быстро. Не нужны никакие VPN туннели. Оставляем отдельный браузер под эту прокси и выходим по мере нужды в интернет через него.
2️⃣ Ещё пример. Допустим, мы хотим подключиться по SSH к машине, к которой нет доступа извне, но сама она может по HTTP стучаться наружу. Очень часто HTTP протокол открыт хотя бы для того, чтобы качать обновления на сервер или для каких-то других нужд. Берём любой свой сервер, к которому есть прямой доступ через интернет и запускаем там chisel. Если свободен 80-й порт, можно прямо на нём. Если нет, то выбираем любой другой.
Теперь идём на закрытый сервер, качаем туда бинарник под свою систему и подключаемся как клиент к серверу, где мы до этого запустили chisel:
При подключении клиента будет создан обратный туннель с 2222 порта сервера на 22-й порт клиента. Теперь, чтобы подключиться по SSH к клиенту, достаточно выполнить на сервере:
и ввести учётные данные от клиента. Таким образом, не имея прямого доступа к клиенту, мы подключились по SSH к нему с использованием обратного туннеля по HTTP, который клиент инициировал сам.
3️⃣ Обратный пример, когда мы хотим не с сервера подключиться к клиенту, а с клиента подключиться к какому-то сервису на сервере, доступ к которому напрямую закрыт. Допустим, на сервере крутился mysql на 127.0.0.1:3306. Мы хотим к нему напрямую подключиться с клиента. Запускаем так же сервер:
Подключаемся к нему клиентом:
Теперь с клиента вы можете подключиться к mysql серверу:
Попадёте в консоль сервера, к которому подключились клиентом.
Те, кто активно пользуются возможностями SSH, думаю, уже поняли, что это все те же возможности протокола SSH, только обёрнутые в HTTP через chisel. Про то, как то же самое делать напрямую через SSH я писал ранее:
⇨ SOCKS-прокси через ssh и переадресация портов
Chisel умеет маскировать себя. Для этого есть ключ
⇨ Исходники
#vpn #ssh
Речь пойдёт про Chisel — это TCP/UDP туннель, который работает поверх HTTP с использованием SSH. Причём представляет он из себя один бинарник, написанный на GO. Один и тот же файл и для сервера, и для клиента, работает под всеми популярными системами. То есть вы можете поднять сервер на Windows, а подключиться клиентом с Linux и наоборот. Благодаря тому, что chisel работает поверх HTTP, вы очень быстро и просто можете поднять необходимый туннель там, где этот протокол открыт. Покажу сразу на примерах.
1️⃣ Пример, который в настоящее время очень актуален. Быстро поднимаем SOCKS5 прокси, через который будем выходить в интернет. Качаем бинарник под свою систему из репозитория:
# wget https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz
Делаем его исполняемым и запускаем сервер:
# ./chisel server --port 80 --socks5
Подключаемся с Windows машины:
> chisel.exe client http://<server-ip>:80 socks
Теперь идём в браузер и настраиваем socks прокси: адрес - 127.0.0.1, порт 1080. Проверяем на любом сервисе для определения ip адреса. Браузер должен выходить в интернет через IP адрес сервера. Можно добавить аутентификацию:
# ./chisel server --port 80 --socks5 --auth user123:password321
> chisel.exe client --auth user123:password321 http://188.227.57.126:80 socks
Очень просто и быстро. Не нужны никакие VPN туннели. Оставляем отдельный браузер под эту прокси и выходим по мере нужды в интернет через него.
2️⃣ Ещё пример. Допустим, мы хотим подключиться по SSH к машине, к которой нет доступа извне, но сама она может по HTTP стучаться наружу. Очень часто HTTP протокол открыт хотя бы для того, чтобы качать обновления на сервер или для каких-то других нужд. Берём любой свой сервер, к которому есть прямой доступ через интернет и запускаем там chisel. Если свободен 80-й порт, можно прямо на нём. Если нет, то выбираем любой другой.
# ./chisel server -p 80 --reverse
Теперь идём на закрытый сервер, качаем туда бинарник под свою систему и подключаемся как клиент к серверу, где мы до этого запустили chisel:
# ./chisel client http://<server-ip>:80 R:2222:localhost:22
При подключении клиента будет создан обратный туннель с 2222 порта сервера на 22-й порт клиента. Теперь, чтобы подключиться по SSH к клиенту, достаточно выполнить на сервере:
# ssh -p 2222 root@127.0.0.1
и ввести учётные данные от клиента. Таким образом, не имея прямого доступа к клиенту, мы подключились по SSH к нему с использованием обратного туннеля по HTTP, который клиент инициировал сам.
3️⃣ Обратный пример, когда мы хотим не с сервера подключиться к клиенту, а с клиента подключиться к какому-то сервису на сервере, доступ к которому напрямую закрыт. Допустим, на сервере крутился mysql на 127.0.0.1:3306. Мы хотим к нему напрямую подключиться с клиента. Запускаем так же сервер:
# ./chisel server -p 80 --reverse
Подключаемся к нему клиентом:
# ./chisel client http://<server-ip>:80 33306:localhost:3306
Теперь с клиента вы можете подключиться к mysql серверу:
# mysql -h 127.0.0.1 -P 33306 -u root
Попадёте в консоль сервера, к которому подключились клиентом.
Те, кто активно пользуются возможностями SSH, думаю, уже поняли, что это все те же возможности протокола SSH, только обёрнутые в HTTP через chisel. Про то, как то же самое делать напрямую через SSH я писал ранее:
⇨ SOCKS-прокси через ssh и переадресация портов
Chisel умеет маскировать себя. Для этого есть ключ
--backend
Если на сервер приходит обычный HTTP запрос, не от клиента, он может перенаправить его на web сервер.⇨ Исходники
#vpn #ssh
Познакомлю вас интересной VPN системой на базе Wireguard, которую недавно посоветовали в комментариях - DefGuard. Это open source проект с очень привлекательными возможностями, который можно развернуть полностью у себя. Это аналог таких продуктов, как firezone, pritunl, netbird.
📌 Что в первую очередь привлекает внимание:
▪️ многофакторная (MFA) или двухфакторная (2FA) аутентификация на базе TOTP/Email и pre-shared keys;
▪️ интеграция с OpenID
▪️ возможность объединения нескольких VPN шлюзов с разными настройками в едином веб интерфейсе;
▪️ возможность подтягивать пользователей из LDAP;
▪️ система прав доступа к туннелям на базе пользователей и паролей;
▪️ свой десктопный клиент для реализации MFA;
Набор возможностей для бесплатного self-hosted продукта внушительный. При этом по стурктуре он не очень сложный. Я почитал описание, документацию, развернул у себя и в целом разобрался с его концепцией. Но сразу скажу, что быстро настроить и всё попробовать не получилось. Где-то часа два провозился, часть возможностей настроил, но не всё. MFA не сделал. Попробовал только создание пользователей, заведение VPN шлюза, подключение клиента.
Расскажу оснвную идею, как это работает. DefGuard упакован в Docker. Развернуть монжо как вручную через docker compose, так и автоматически через bash скрипт. Вся информация в репозитории и документации.
Далее вы идёте в веб интерфейс, добавляете новый Location. Это сущность, которая представялет из себя настроенный сервер Wireguard. Он может быть установлен как локально вместе с веб интерфейсом, так и вынесен куда-то в другое место. Таких Location может быть много. У каждого свои настройки, маршруты, которые он обслуживает, группы пользователей, которым можно к нему подключаться.
Далее создаёте пользователя со своими параметрами. Можно настроить сервер так, что после создания пользователя, он будет отправлять email со всеми ссылками и паролями. Пользователь может зайти в веб интерфейс под своей учёткой, посмотреть свои настройки, WG туннели, которые ему доступны, статистику подключений. Может скачать настройки отдельных туннелей, чтобы использовать их в любых других клиентах WireGuard, если у него не включена MFA.
Родное приложение позволяет реализовать возмжоность MFA при подключении к серверам DefGuard, а так же использовать его как обычный WG клиент для подключения к любым другим VPN туннелям. У меня не получилось настроить MFA. Либо что-то не допонял по последовательности действий, либо где-то ошибся. Думаю, что там всё работает нормально, так как в Issues не заметил каких-то вопросов по этой теме. Думаю, надо просто больше времени потратить на настройку.
Помимо всего описанного, DefGuard поддерживает YubiKeys. У меня, кстати, есть такой. Любопытная штука, но я так и не стал им пользоваться. Также реализованы Webhooks на некоторые действия с пользователями: создание, удаление, смена пароля, добавление YubiKey. В осноном это для того, чтобы настроить те или иные введомления для пользователя.
Благодаря интеграции с OpenID, можно настроить сквозную аутентификацию через DefGuard в друиге сервисы, которые тоже его поддерживают. Например, Proxmox. Пример, как это выглядит, показан в документации. Там же есть примеры интеграции с Portainer, Grafana, MinIO, Vault, Django, Matrix.
В целом, продукт очень привлеактельный. Из бесплатных self-hosted аналогов не много. Netbird.io разве что. Расскажу про него на днях отдельно.
⇨ Сайт / Исходники
#vpn #wireguard
📌 Что в первую очередь привлекает внимание:
▪️ многофакторная (MFA) или двухфакторная (2FA) аутентификация на базе TOTP/Email и pre-shared keys;
▪️ интеграция с OpenID
▪️ возможность объединения нескольких VPN шлюзов с разными настройками в едином веб интерфейсе;
▪️ возможность подтягивать пользователей из LDAP;
▪️ система прав доступа к туннелям на базе пользователей и паролей;
▪️ свой десктопный клиент для реализации MFA;
Набор возможностей для бесплатного self-hosted продукта внушительный. При этом по стурктуре он не очень сложный. Я почитал описание, документацию, развернул у себя и в целом разобрался с его концепцией. Но сразу скажу, что быстро настроить и всё попробовать не получилось. Где-то часа два провозился, часть возможностей настроил, но не всё. MFA не сделал. Попробовал только создание пользователей, заведение VPN шлюза, подключение клиента.
Расскажу оснвную идею, как это работает. DefGuard упакован в Docker. Развернуть монжо как вручную через docker compose, так и автоматически через bash скрипт. Вся информация в репозитории и документации.
Далее вы идёте в веб интерфейс, добавляете новый Location. Это сущность, которая представялет из себя настроенный сервер Wireguard. Он может быть установлен как локально вместе с веб интерфейсом, так и вынесен куда-то в другое место. Таких Location может быть много. У каждого свои настройки, маршруты, которые он обслуживает, группы пользователей, которым можно к нему подключаться.
Далее создаёте пользователя со своими параметрами. Можно настроить сервер так, что после создания пользователя, он будет отправлять email со всеми ссылками и паролями. Пользователь может зайти в веб интерфейс под своей учёткой, посмотреть свои настройки, WG туннели, которые ему доступны, статистику подключений. Может скачать настройки отдельных туннелей, чтобы использовать их в любых других клиентах WireGuard, если у него не включена MFA.
Родное приложение позволяет реализовать возмжоность MFA при подключении к серверам DefGuard, а так же использовать его как обычный WG клиент для подключения к любым другим VPN туннелям. У меня не получилось настроить MFA. Либо что-то не допонял по последовательности действий, либо где-то ошибся. Думаю, что там всё работает нормально, так как в Issues не заметил каких-то вопросов по этой теме. Думаю, надо просто больше времени потратить на настройку.
Помимо всего описанного, DefGuard поддерживает YubiKeys. У меня, кстати, есть такой. Любопытная штука, но я так и не стал им пользоваться. Также реализованы Webhooks на некоторые действия с пользователями: создание, удаление, смена пароля, добавление YubiKey. В осноном это для того, чтобы настроить те или иные введомления для пользователя.
Благодаря интеграции с OpenID, можно настроить сквозную аутентификацию через DefGuard в друиге сервисы, которые тоже его поддерживают. Например, Proxmox. Пример, как это выглядит, показан в документации. Там же есть примеры интеграции с Portainer, Grafana, MinIO, Vault, Django, Matrix.
В целом, продукт очень привлеактельный. Из бесплатных self-hosted аналогов не много. Netbird.io разве что. Расскажу про него на днях отдельно.
⇨ Сайт / Исходники
#vpn #wireguard
На базе Wireguard есть очень крутая, частично бесплатная, open source платформа для построения VPN сетей - netbird.io. Это платный SaaS сервис, который имеет бесплатный тарифный план, а так же бесплатную self-hosted версию. Расскажу кратко своими словами, что она из себя представляет и как работает.
Вы разворачиваете у себя серверную часть из пакетов или готового docker compose файла. Далее на любую популярную десктопную или мобильную систему устанавливаете агента. Причём установка максимально простая. Достаточно при установке указать url сервера и специальный ключ. Установленный агент появляется в панели управления сервером.
Теперь все настройки выполняются через веб интерфейс на сервере. Вы можете пользователей и подключенные сервера объединять в различные группы и настраивать политики доступа на уровне файрвола и маршрутов. Можно, к примеру, создать группу пользователей и группу тестовых серверов. И разрешить этим пользователям пинговать, подключаться по SSH и HTTP к этим серверам. И больше ничего. Настройки очень гибкие.
Если есть какое-то оборудование, куда нельзя установить агент netbird, но хочется управлять доступом к нему, можно для существующих клиентов VPN сети указать какой-то узел сети в качестве шлюза, через который они будут подключаться к целевой машине. А уже на ней настроить в файрволе конкретные разрешения для указанного шлюза. Для разных пользователей могут использоваться разные шлюзы и, соответственно, правила на файрволе.
Таким образом, с помощью netbird можно покрыть всю существующую инфраструктуру и централизованно управлять доступом. Причём политики доступа могут быть очень гибкие. Например, можно запретить подключаться клиентам с какой-то определённой версией системы. Например, Windows 7 или iOS, если у ваших сотрудников их нет вообще. То же самое можно делать по географическому признаку - запретить подключаться из каких-то стран.
Подключения между агентами устанавливаются напрямую, если это возможно. Если нет - используется технология STUN и TURN. Пиры VPN сети связаны между собой на базе Wireguard. Для тех, кто будет писать, что WG блокируют, сразу скажу, что это не инструмент для обхода блокировок. Не надо его пытаться использовать в этом ключе. Это система для построения mesh сети разнородных узлов с централизованным управлением доступа.
У Netbird нет собственной системы хранения учётных записей. Используется внешний IdP (identity provider). Это может быть Authentik, Keycloak или Zitadel. Для self-hosted установки есть готовый docker compose, где автоматически разворачивается Netbird в связке с Zitadel. Есть готовый bash скрипт для установки этой связки. Необходимо подготовить VPS с внешним IP и настроенной DNS записью. Далее просто запускаем:
Подробно подобная установка и управление этой связкой описано в соответствующем разделе документации.
По возможностям Netbird очень сильно похож на Tailscale, только у последнего нет официального self-hosted сервера с подобной функциональностью. Тут мне что-то подсказывает, что со временем тоже не будет. Слишком хорош он в подобной редакции. Скорее всего по мере роста популярности, возможности self-hosted версии будут уменьшаться. Так же его можно сравнить с Netmaker или Nebula, но по возможностям и удобству он их превосходит.
Подробный обзор установки и использования Netbird можно посмотреть в свежем видео:
▶️ Install a self-hosted VPN platform // Netbird
Я ничего похожего по возможностям и забесплатно не знаю. Выглядит всё очень удобно и функционально для объединения и инфраструктуры, и внешних пользователей для работы с ними. Попробовать всё это можно на бесплатном тарифном плане в облаке. Ограничение там - 5 пользователей и 100 устройств.
⇨ Сайт / Исходники
#vpn #wireguard
Вы разворачиваете у себя серверную часть из пакетов или готового docker compose файла. Далее на любую популярную десктопную или мобильную систему устанавливаете агента. Причём установка максимально простая. Достаточно при установке указать url сервера и специальный ключ. Установленный агент появляется в панели управления сервером.
Теперь все настройки выполняются через веб интерфейс на сервере. Вы можете пользователей и подключенные сервера объединять в различные группы и настраивать политики доступа на уровне файрвола и маршрутов. Можно, к примеру, создать группу пользователей и группу тестовых серверов. И разрешить этим пользователям пинговать, подключаться по SSH и HTTP к этим серверам. И больше ничего. Настройки очень гибкие.
Если есть какое-то оборудование, куда нельзя установить агент netbird, но хочется управлять доступом к нему, можно для существующих клиентов VPN сети указать какой-то узел сети в качестве шлюза, через который они будут подключаться к целевой машине. А уже на ней настроить в файрволе конкретные разрешения для указанного шлюза. Для разных пользователей могут использоваться разные шлюзы и, соответственно, правила на файрволе.
Таким образом, с помощью netbird можно покрыть всю существующую инфраструктуру и централизованно управлять доступом. Причём политики доступа могут быть очень гибкие. Например, можно запретить подключаться клиентам с какой-то определённой версией системы. Например, Windows 7 или iOS, если у ваших сотрудников их нет вообще. То же самое можно делать по географическому признаку - запретить подключаться из каких-то стран.
Подключения между агентами устанавливаются напрямую, если это возможно. Если нет - используется технология STUN и TURN. Пиры VPN сети связаны между собой на базе Wireguard. Для тех, кто будет писать, что WG блокируют, сразу скажу, что это не инструмент для обхода блокировок. Не надо его пытаться использовать в этом ключе. Это система для построения mesh сети разнородных узлов с централизованным управлением доступа.
У Netbird нет собственной системы хранения учётных записей. Используется внешний IdP (identity provider). Это может быть Authentik, Keycloak или Zitadel. Для self-hosted установки есть готовый docker compose, где автоматически разворачивается Netbird в связке с Zitadel. Есть готовый bash скрипт для установки этой связки. Необходимо подготовить VPS с внешним IP и настроенной DNS записью. Далее просто запускаем:
# export NETBIRD_DOMAIN=netbird.example.com; curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started-with-zitadel.sh | bash
Подробно подобная установка и управление этой связкой описано в соответствующем разделе документации.
По возможностям Netbird очень сильно похож на Tailscale, только у последнего нет официального self-hosted сервера с подобной функциональностью. Тут мне что-то подсказывает, что со временем тоже не будет. Слишком хорош он в подобной редакции. Скорее всего по мере роста популярности, возможности self-hosted версии будут уменьшаться. Так же его можно сравнить с Netmaker или Nebula, но по возможностям и удобству он их превосходит.
Подробный обзор установки и использования Netbird можно посмотреть в свежем видео:
▶️ Install a self-hosted VPN platform // Netbird
Я ничего похожего по возможностям и забесплатно не знаю. Выглядит всё очень удобно и функционально для объединения и инфраструктуры, и внешних пользователей для работы с ними. Попробовать всё это можно на бесплатном тарифном плане в облаке. Ограничение там - 5 пользователей и 100 устройств.
⇨ Сайт / Исходники
#vpn #wireguard
Один подписчик поделился со мной информацией о необычном и полезном программном продукте. Изначально он обратился ко мне с просьбой подсказать, какой веб сервер под Windows можно использовать для быстрого запуска локально с флешки размещённого там небольшого проекта. Первое, что мне пришло в голову - Caddy. Это максимально простой веб сервер, состоящий из одного бинарника на Go, который всю конфигурацию хранит в едином конфиге. Версия под Windows тоже есть.
Он в итоге нашёл для себя вариант ещё проще и лучше - Small HTTP server. Пошёл, посмотрел, что это такое. Очень заинтересовала программа. Раньше про неё не слышал. Она из далёкого прошлого. Написана изначально была под Windows 95 и NT, но развивается до сих пор. Свежий релиз от 24.03.24. Код, как я понял, написан на С++ и очень хорошо оптимизирован. Установщик занимает примерно 1 мегабайт (❗️). При этом программа имеет следующие возможности:
◽HTTP сервер. Поддерживает CGI и FastCGI интерфейсы для скриптов (запуск исполняемых файлов; Perl, PHP, и других внешних интерпретаторов), ISAPI (Internet Server API — API для веб-сервера IIS) интерфейс, виртуальные хосты и каталоги.
◽Почтовый сервер POP3 и SMTP. Анти-спам фильтры. Белый, чёрный, и серый списки общие для всех и персональные для каждого пользователя. Переотправка и возможности запускать скрипты для входящих сообщений. Запуск внешнего антивируса.
◽FTP сервер с виртуальными каталогами.
◽HTTP proxy сервер. Поддерживаются HTTP, FTP, HTTPS запросы
Сохранение большого объема трафика, быстрый доступ. Внутренняя докачка при разрывах соединения. Сервер может запрашивать сжатый контент и распаковывать ответ на лету (с использованием внешней Zlib библиотеке).
◽DNS сервер. 🔥Опция динамической проверки сервиса на удаленном хосту и если сервис не работает, автоматическая замена одного IP адреса на другой во всех запросах. Рекурсивный поиск имен от корневых DNS серверов или от DNS серверов провайдера. Кеширование. Опция автоматического ответа на запросы IPv6 адреса. (для сетей, не использующих Internet по IPv6). DNSBL сервер (работает совместно с SMTP). DNS через HTTP(S) известный как DoH (RFC8484).
◽DHCP сервер.
◽HTTP TLS VPN сервер и клиент! Используется OpenVPN Windows TAP драйвер. Описание, как это работает и для чего.
Всё это собрано под Windows и Linux, в том числе ARM. Для Debian есть готовый пакет. Хорошее решение для маломощных одноплатников.
По работе всех служб есть статистика в веб интерфейсе. Я попробовал работу на Windows. Всё работает чётко, запустил без каких-либо проблем. Конфигурация хранится в текстовом файле. Управлять можно как в нём, так и через интерфейс программы. Для запуска достаточно запустить экзешник. По умолчанию веб сервер работает в режиме листинга файлов директории, которая указана, как корень веб сервера. Можно настроить работу как служба.
У программы, несмотря на видимую простоту, очень много настроек и возможностей. Они все перечислены в виде параметров в интерфейсе программы, так что можно быстро их оценить.
Предлагаю автору накидать звёздочек в github и подписаться на Telegram канал. Думаю, ему будет приятно. Программа реально интересная и необычная. Не знаю, что за мотивация у человека столько лет её развивать и поддерживать.
Мне кажется, сейчас программистов С++ уже можно по профильным школам и вузам водить, как ветеранов, и рассказывать от их лица, что программы могут быть маленькими, оптимизированными и работать быстро. А то скоро все вообще забудут, что такое в принципе может быть.
⇨ Сайт / Исходники / TG канал
#webserver #dns #dhcp #ftp
Он в итоге нашёл для себя вариант ещё проще и лучше - Small HTTP server. Пошёл, посмотрел, что это такое. Очень заинтересовала программа. Раньше про неё не слышал. Она из далёкого прошлого. Написана изначально была под Windows 95 и NT, но развивается до сих пор. Свежий релиз от 24.03.24. Код, как я понял, написан на С++ и очень хорошо оптимизирован. Установщик занимает примерно 1 мегабайт (❗️). При этом программа имеет следующие возможности:
◽HTTP сервер. Поддерживает CGI и FastCGI интерфейсы для скриптов (запуск исполняемых файлов; Perl, PHP, и других внешних интерпретаторов), ISAPI (Internet Server API — API для веб-сервера IIS) интерфейс, виртуальные хосты и каталоги.
◽Почтовый сервер POP3 и SMTP. Анти-спам фильтры. Белый, чёрный, и серый списки общие для всех и персональные для каждого пользователя. Переотправка и возможности запускать скрипты для входящих сообщений. Запуск внешнего антивируса.
◽FTP сервер с виртуальными каталогами.
◽HTTP proxy сервер. Поддерживаются HTTP, FTP, HTTPS запросы
Сохранение большого объема трафика, быстрый доступ. Внутренняя докачка при разрывах соединения. Сервер может запрашивать сжатый контент и распаковывать ответ на лету (с использованием внешней Zlib библиотеке).
◽DNS сервер. 🔥Опция динамической проверки сервиса на удаленном хосту и если сервис не работает, автоматическая замена одного IP адреса на другой во всех запросах. Рекурсивный поиск имен от корневых DNS серверов или от DNS серверов провайдера. Кеширование. Опция автоматического ответа на запросы IPv6 адреса. (для сетей, не использующих Internet по IPv6). DNSBL сервер (работает совместно с SMTP). DNS через HTTP(S) известный как DoH (RFC8484).
◽DHCP сервер.
◽HTTP TLS VPN сервер и клиент! Используется OpenVPN Windows TAP драйвер. Описание, как это работает и для чего.
Всё это собрано под Windows и Linux, в том числе ARM. Для Debian есть готовый пакет. Хорошее решение для маломощных одноплатников.
По работе всех служб есть статистика в веб интерфейсе. Я попробовал работу на Windows. Всё работает чётко, запустил без каких-либо проблем. Конфигурация хранится в текстовом файле. Управлять можно как в нём, так и через интерфейс программы. Для запуска достаточно запустить экзешник. По умолчанию веб сервер работает в режиме листинга файлов директории, которая указана, как корень веб сервера. Можно настроить работу как служба.
У программы, несмотря на видимую простоту, очень много настроек и возможностей. Они все перечислены в виде параметров в интерфейсе программы, так что можно быстро их оценить.
Предлагаю автору накидать звёздочек в github и подписаться на Telegram канал. Думаю, ему будет приятно. Программа реально интересная и необычная. Не знаю, что за мотивация у человека столько лет её развивать и поддерживать.
Мне кажется, сейчас программистов С++ уже можно по профильным школам и вузам водить, как ветеранов, и рассказывать от их лица, что программы могут быть маленькими, оптимизированными и работать быстро. А то скоро все вообще забудут, что такое в принципе может быть.
⇨ Сайт / Исходники / TG канал
#webserver #dns #dhcp #ftp
Несколько лет назад я уже писал про бесплатный Radmin VPN. Интересное простое решение для организации совместного доступа к группе компьютеров. На тот момент у меня создалось впечатление, что это какой-то полузаброшенный старый проект. Но на деле это оказалось не так. Основной продукт Radmin сервер продолжает развиваться, продаваться, и все бесплатные вспомогательные программы тоже потихоньку обновляются.
Radmin VPN — приложение только под Windows. После установки оно создаёт новое сетевое соединение, подключается к своему серверу, назначает компьютеру серый IP адрес с маской 255.0.0.0. Далее вы можете создать локальную сеть, закрытую отдельным паролем и собирать в эту сеть подключенные компьютеры.
Я проверил, как это работает. Установил Radmin VPN на 3 машины: Win10, Win11, WinSRV2019. Добавил их в единую сеть. Они сразу же увидели друг друга: стали пинговаться по своим серым адресам, заработал доступ к файлам через
Не знаю, насколько это безопасный способ подключения. Я так понял, что все клиенты этой сети сидят в общем адресном пространстве 26.0.0.0 с маской 255.0.0.0. Вы можете создавать публичные сети для совместной онлайн игры. Посмотрел на доступный список подобных сетей. Их очень много на разных языках. То есть продуктом реально пользуются по всему миру. Зашёл в одну такую публичную сеть - стал видеть все компы из этой сети по их серым IP адресам. Они видны, так как все участники сети отображаются в общем списке. Как только из общей сети выходишь, доступ к её членам по IP пропадает.
В целом, не вижу тут каких-то серьёзных сетевых проблем, если настроить файрвол и разрешить доступ только со своих серых IP адресов. Они статичны. Можно разрешить только те протоколы, что вам нужны. Например, RDP. У него своё шифрование, так что можно спокойно пользоваться поверх любых сетей.
А так в целом продукт очень простой для использования. Будет удобно для тех, кто не хочет или не может, не умеет, настраивать свои VPN серверы. Можно детей научить пользоваться, чтобы играли с приятелями в онлайн игры. Тот же Minecraft.
⇨ Сайт
Помимо Radmin VPN у этой компании есть ещё два неплохих бесплатных продукта для сисадминов, работающих с локальными сетями и пользователями:
▪️ Advanced IP Scanner
▪️ Advanced Port Scanner
Думаю, по названиям и так понятно, что эти программы делают - сканируют локалку, ищут хосты в ней и проверяют открытые порты.
#vpn
Radmin VPN — приложение только под Windows. После установки оно создаёт новое сетевое соединение, подключается к своему серверу, назначает компьютеру серый IP адрес с маской 255.0.0.0. Далее вы можете создать локальную сеть, закрытую отдельным паролем и собирать в эту сеть подключенные компьютеры.
Я проверил, как это работает. Установил Radmin VPN на 3 машины: Win10, Win11, WinSRV2019. Добавил их в единую сеть. Они сразу же увидели друг друга: стали пинговаться по своим серым адресам, заработал доступ к файлам через
\\26.210.121.198\c$
, подключение по RDP. Никаких настроек делать не пришлось, кроме подключения к созданной сети через клиента Radmin VPN. Сам софт доступен без регистрации и каких-то дополнительных действий. Не знаю, насколько это безопасный способ подключения. Я так понял, что все клиенты этой сети сидят в общем адресном пространстве 26.0.0.0 с маской 255.0.0.0. Вы можете создавать публичные сети для совместной онлайн игры. Посмотрел на доступный список подобных сетей. Их очень много на разных языках. То есть продуктом реально пользуются по всему миру. Зашёл в одну такую публичную сеть - стал видеть все компы из этой сети по их серым IP адресам. Они видны, так как все участники сети отображаются в общем списке. Как только из общей сети выходишь, доступ к её членам по IP пропадает.
В целом, не вижу тут каких-то серьёзных сетевых проблем, если настроить файрвол и разрешить доступ только со своих серых IP адресов. Они статичны. Можно разрешить только те протоколы, что вам нужны. Например, RDP. У него своё шифрование, так что можно спокойно пользоваться поверх любых сетей.
А так в целом продукт очень простой для использования. Будет удобно для тех, кто не хочет или не может, не умеет, настраивать свои VPN серверы. Можно детей научить пользоваться, чтобы играли с приятелями в онлайн игры. Тот же Minecraft.
⇨ Сайт
Помимо Radmin VPN у этой компании есть ещё два неплохих бесплатных продукта для сисадминов, работающих с локальными сетями и пользователями:
▪️ Advanced IP Scanner
▪️ Advanced Port Scanner
Думаю, по названиям и так понятно, что эти программы делают - сканируют локалку, ищут хосты в ней и проверяют открытые порты.
#vpn
Тема VPN серверов всё актуальнее день ото дня. Покажу, как быстро настроить VPN сервер OpenConnect. В чём его особенности, я рассказывал в отдельной заметке, не буду повторяться. Кратко поясню, что это VPN с использованием TLS шифрования, что делает его похожим на HTTPS трафик. Сразу скажу, что это не означает, что его нельзя отличить от реального трафика к веб сайтам. Можно, но пока такая блокировка не особо практикуется, так что можно пользоваться.
Я установлю OpenConnect на Debian 12 с использованием сертификатов от Let's Encrypt и аутентификацией пользователей через связку логин/пароль. Это максимально простая настройка, в которой вы получаете полнофункциональный VPN сервер с возможностью управления маршрутизации клиентов централизованно на сервере.
Подготовимся и получим сертификаты:
В директории
Устанавливаем OpenConnect из пакетов:
Рисуем ему примерно такой конфиг
Файл конфигурации хорошо прокомментирован, нетрудно разобраться. Здесь я весь трафик отправляю в туннель. А вот такая настройка:
Отправит в туннель только указанные подсети.
Теперь создаём файл с учётками и добавляем пользователя zerox:
Перезапускаем службу и проверяем её работу:
Логи смотрим либо в
В завершении важная настройка, которую некоторые либо забывают, либо не понимают, что это такое и для чего. По умолчанию на сервере не работает перенаправление пакетов с одного сетевого интерфейса на другой. В данном случае с VPN интерфейса на WAN. Нам нужно включить эту настройку. Для этого раскомментируем в файле
И применим его:
Теперь нам нужно настроить NAT, чтобы клиенты VPN сети могли выходить в интернет. Сам OpenConnect эти вопросы не решает. Для этого воспользуемся старым добрым iptables:
Eth0 - WAN интерфейс, который смотрит в интернет.
Теперь идём на клиент, качаем клиентское приложение:
⇨ https://gui.openconnect-vpn.net/download/
Запускаем приложение, добавляем новый профиль, указав единственный параметр gateway с url сервера. В моём случае https://333271.simplecloud.ru. Далее подключаемся с использованием созданного пользователя и пароля.
Нужно не забыть настроить hook в certbot на перезапуск сервера после обновления сертификата:
Ну и не забудьте применить правила файрвола после перезапуска сервера. Подробно не останавливаюсь на этих вопросах, так как уже лимит на объём заметки исчерпан.
Получился удобный многофункциональный VPN сервер для решения различных прикладных задач маршрутизации трафика и доступа к корпоративным ресурсам.
Если кто-то пользуется данным сервером, скажите, сталкивались ли с блокировками протокола этого VPN сервера на уровне провайдеров.
#vpn
Я установлю OpenConnect на Debian 12 с использованием сертификатов от Let's Encrypt и аутентификацией пользователей через связку логин/пароль. Это максимально простая настройка, в которой вы получаете полнофункциональный VPN сервер с возможностью управления маршрутизации клиентов централизованно на сервере.
Подготовимся и получим сертификаты:
# apt install certbot
# certbot certonly -d 333271.simplecloud.ru --standalone
В директории
/etc/letsencrypt/live/333271.simplecloud.ru
будут файлы fullchain.pem
и privkey.pem
, которые нам понадобятся позже. Устанавливаем OpenConnect из пакетов:
# apt install ocserv
Рисуем ему примерно такой конфиг
/etc/ocserv/ocserv.conf
. Показываю только те параметры, что поменял. Остальное отставил по умолчанию, как было:# включаем аутентификацию по данным из файла
auth = "plain[passwd=/etc/ocserv/passwd]"
# указываем сертификат от let's encrypt
server-cert = /etc/letsencrypt/live/333271.simplecloud.ru/fullchain.pem
server-key = /etc/letsencrypt/live/333271.simplecloud.ru/privkey.pem
# указываем подсеть для внутренней адресации в туннеле
ipv4-network = 192.168.155.0
# заворачиваем в туннель все dns запросы и резолвим их через 1.1.1.1
tunnel-all-dns = true
dns = 1.1.1.1
# заворачиваем весь трафик в VPN туннель
route = default
# эти 2 подсети отправляем мимо туннеля
no-route = 192.168.13.0/255.255.255.0
no-route = 10.20.1.0/255.255.255.0
Файл конфигурации хорошо прокомментирован, нетрудно разобраться. Здесь я весь трафик отправляю в туннель. А вот такая настройка:
route = 10.10.10.0/255.255.255.0
route = 1.2.3.4/255.255.255.255
Отправит в туннель только указанные подсети.
Теперь создаём файл с учётками и добавляем пользователя zerox:
# ocpasswd -c /etc/ocserv/passwd zerox
Перезапускаем службу и проверяем её работу:
# systemctl restart ocserv
# systemctl status ocserv
Логи смотрим либо в
/var/log/syslog
, либо в systemd, если syslog отключен:# journalctl -f -u ocserv
В завершении важная настройка, которую некоторые либо забывают, либо не понимают, что это такое и для чего. По умолчанию на сервере не работает перенаправление пакетов с одного сетевого интерфейса на другой. В данном случае с VPN интерфейса на WAN. Нам нужно включить эту настройку. Для этого раскомментируем в файле
/etc/sysctl.conf
параметр:net.ipv4.ip_forward = 1
И применим его:
# sysctl -p
Теперь нам нужно настроить NAT, чтобы клиенты VPN сети могли выходить в интернет. Сам OpenConnect эти вопросы не решает. Для этого воспользуемся старым добрым iptables:
# apt install iptables
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Eth0 - WAN интерфейс, который смотрит в интернет.
Теперь идём на клиент, качаем клиентское приложение:
⇨ https://gui.openconnect-vpn.net/download/
Запускаем приложение, добавляем новый профиль, указав единственный параметр gateway с url сервера. В моём случае https://333271.simplecloud.ru. Далее подключаемся с использованием созданного пользователя и пароля.
Нужно не забыть настроить hook в certbot на перезапуск сервера после обновления сертификата:
post_hook = systemctl restart ocserv
Ну и не забудьте применить правила файрвола после перезапуска сервера. Подробно не останавливаюсь на этих вопросах, так как уже лимит на объём заметки исчерпан.
Получился удобный многофункциональный VPN сервер для решения различных прикладных задач маршрутизации трафика и доступа к корпоративным ресурсам.
Если кто-то пользуется данным сервером, скажите, сталкивались ли с блокировками протокола этого VPN сервера на уровне провайдеров.
#vpn