ServerAdmin.ru
28.9K subscribers
303 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Думаю, большинство уже знакомы с реализацией VPN в виде WireGuard, код которой включён в ядро Linux. В том числе поэтому wireguard работает быстрее многих других реализаций.

Существует open source проект WireGuard Easy, с помощью которого можно легко управлять пользователями сервера через веб браузер. То есть это простая панель управления для vpn сервера на базе wireguard.

Запускается и устанавливается в докере в несколько кликов. Я проверил на Centos 8 и в Ubuntu 20. На Centos по какой-то причине не завелось. В контейнере падал сетевой интерфейс wg0, который создавал wireguard и контейнер из-за этого уходил в вечный reboot. А вот в Ubuntu все сразу завелось:

docker run -d \
--name=wg-easy \
-e LANG=en \
-e WG_HOST=🚨YOUR_SERVER_IP \
-e PASSWORD=🚨YOUR_ADMIN_PASSWORD \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
ghcr.io/wg-easy/wg-easy

Указываем свои IP сервера и пароль админа.

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

В общем, простая и удобная штука. Минималистичный дизайн, ничего лишнего. Мне понравилось.

#wireguard #vpn
​​Вчера очень долго разбирался с различными готовыми решениями на базе Wireguard. Хочется найти что-то такое же функциональное, как openvpn. Чтобы умело не только vpn поднимать, но и соответствующую функциональную обвязку в виде пуша конфигов, маршрутов клиентам, pre-up и down скриптов и т.д. И по возможности максимальное простое, без веб интерфейса. Меня управление в консоли полностью устраивает. Пока что-то ничего не нашел.

По описанию и схеме работы приглянулся проект Drago - https://github.com/seashell/drago. Но я не осилил его полноценно запустить и попробовать. Документации нет, а сидеть самому разбираться в сборке и запуске всего этого добра не захотелось. За 1,5 часа не осилил и бросил это дело.

Понравился проект easy-wg-quick - https://github.com/burghardt/easy-wg-quick. Позволяет быстро запустить и начать использовать Wireguard. В нём ничего лишнего, легко и быстро ставится.
# apt install wireguard-tools mawk grep iproute2 qrencode
или
# dnf install wireguard-tools gawk grep iproute qrencode

Далее запускается обычный bash скрипт, который всё делает за нас.
# wget https://git.io/fjb5R -O easy-wg-quick
# chmod +x easy-wg-quick
# ./easy-wg-quick

Кто переживает за безопасность, может скрипт посмотреть. Читается легко. И он небольшой.

Скрипт формирует набор конфигов и создает одного пользователя. Формат конфигов текстовый, легко посмотреть и подправить что-то. Например, правила iptables или postup, postdown скрипты. Новые клиенты добавляются отдельно:
# ./easy-wg-quick client_name

Сервер запускается следующей командой:
# wg-quick up ./wghub.conf

Дальше можно идти к клиенту и подключаться. Конфиг или qrcode был сформирован ранее. Статус сервера можно посмотреть командой:
# wg show

По сути это законченная инструкция. Можно забрать в закладки и потом использовать, когда надо будет.

#vpn #wireguard
​​Актуальность VPN растёт день ото дня. Сейчас столько всяких событий происходит с защитами, запретами, ограничениями и т.д., что голова кругом идёт. Доходит до того, что мой сайт serveradmin.ru, который хостится в Москве, у кого-то в России открывается только через VPN. Я даже не знаю, как расследовать такие инциденты. Явно есть проблемы у каких-то операторов.

Существует очень удобная и простая в плане установки и настройки панель для управления VPN на базе популярного и современного WireGuard под названием Firezone. Это бесплатный Open Source продукт. С её помощью можно управлять всеми настройками WireGuard через браузер.

Для Firezone подготовлен установщик, который автоматом всё развернёт на вашем сервере, в том числе и WireGuard. Достаточно только запустить готовый bash скрипт. Сейчас разумно предостеречься от подобных методов, так что можно установить всё вручную. Это описано в документации. Сам Firezone собран в rpm или deb пакет. Компоненты web-интерфейса выполняются под непривилегированным пользователем. Поддерживаются все современные Linux дистрибутивы.

Из дополнительных плюшек, помимо управления пользователями, Firezone умеет управлять nftables для ограничения доступа клиентов к каким-то хостам. Все настройки выполняются через веб интерфейс, который построен на базе Admin One Bulma Dashboard.

Проект претендует на нечто большее, чем уровень pet project и пилит коммерческую версию с разными способами аутентификации, а так же интеграцией с SAML и LDAP. Из всех панелей управления WireGuard эта показалась наиболее приятной и проработанной. Остальные можете посмотреть по метке в конце поста.

Сайт - https://www.firez.one/
Исходники - https://github.com/firezone/firezone
Документация - https://docs.firez.one/
Demo - https://demo.firez.one/

#vpn #wireguard
▶️ Очень подробный разбор темы настройки WireGuard:
https://www.youtube.com/watch?v=inx_dVfjadI

Сразу предупреждаю, если вы не любите смотреть видеоролики, не надо писать гадости. Проходите мимо.

Содержание видео:
0:00:00 Что будем делать?
0:01:15 Утилита проверки IP
0:01:50 Создаем виртуальную машину
0:03:27 Ставим Docker
0:04:25 Wireguard Docker Images
0:07:50 Смотрим на конфигурацию сервера
0:17:11 Добавляем клиентов (пиров)
0:18:11 Настраиваем IOS клиента
0:20:38 Настраиваем клиента на Mac OS
0:22:50 Как самому сгенерировать ключи?
0:28:38 Генерация ключей на сайте
0:29:25 Настраиваем Wireguard на Mikrotik
0:32:40 Маршруты
0:37:20 Сравнение Wireguard и OpenVPN

Автор очень подробно и доступно всё объясняет. Материал для новичков и для тех, кто не в теме. Сама по себе настройка WireGuard не представляет каких-то особых сложностей.

У меня на канале ранее были заметки на тему WireGuard и готовых панелей для установки и управления сервером: easy-wg-quick и WireGuard Easy.

#video #wireguard #vpn
​​Subspace - простой и функциональный WireGuard VPN GUI. Ещё год назад получал рекомендацию посмотреть на него, когда публиковал информацию о другой веб панели. По факту эта выглядит намного функциональнее и удобнее того, что видел ранее.

Основное отличие от многих подобных бесплатных панелей управления - наличие Single Sign-On (SSO) на базе G Suite и Okta. Всё остальное плюс-минус как у всех:
- добавление клиентов и конфигов для них, в том числе с помощью QR кодов
- удаление и отключение удалённых клиентов

Ставится и работает Subspace через Docker, так что проблем с этим никаких нет. Коротенькая инструкция в репозитории присутствует. Из коробки поддерживает сертификаты от Let's Encrypt. Может работать как Standalone веб сервер, так и за прокси. Так что это решение из разряда купить минимальную VPS и запустить на ней свой VPN с управлением через браузер. Можно настроить и отдать кому-нибудь в пользование.

В общем, шутка полезная, рекомендую. Пора уже мне себе поставить Wireguard. Я всё по старинке VPN на базе OpenVPN делаю. И личные, и рабочие. Очень нравится пушить маршруты клиентам. Жить без этого не могу.

Исходники - https://github.com/subspacecloud/subspace

#wireguard #vpn
​​Продолжая тему Wireguard, нашёл любопытный проект. Wireproxy - консольный Linux клиент WG, который после подключения автоматически поднимает socks5 прокси.

Wireproxy работает в userspace и не требует административных прав. То есть может быть запущен там, где не хватает прав для создания нового сетевого интерфейса.

Решение хорошо подходит для обхода блокировок определённых сайтов. Не нужно никуда заворачивать трафик, добавляя новые маршруты в систему. Достаточно с помощью дополнений к браузеру прописать доступ к определённым или всем сайтам через поднятый прокси.

Для запуска достаточно скачать бинарник из репы или собрать самому и запустить через Docker. Готовый Dockerfile представлен в репозитории.

Для работы можно подготовить свой конфиг. Пример есть в репозитории. Либо импортировать уже имеющийся конфигурационный файл wireguard.

Исходники - https://github.com/octeep/wireproxy

#wireguard #vpn
​​Wireguard потихоньку обрастает прикладным софтом вокруг себя. Я уже писал о том, как можно быстро поднять socks5 через wg. Сегодня расскажу про ещё одну утилиту, которая может быть полезна - onetun.

С помощью onetun можно настраивать проброс портов с локальной машины на любую другую машину в vpn сети Wireguard. По описанию не совсем понятно о чём идёт речь. Поясню на примере.

Допустим, у вас есть какое-то устройство, куда вы не хотите или не можете установить Wireguard. Причин этого может быть много, так как установка wg требует административных прав. Надо добавлять новый сетевой интерфейс в систему, добавлять маршруты.

Onetun представляет из себя один бинарник, который умеет подключаться к существующей VPN сети и пробрасывать на любой её хост какой-то локальный порт. Получается аналог переадресации портов через SSH, только здесь используется Wireguard, связь через которую будет лучше и быстрее, нежели через SSH.

Я не знаю, где подобное может в проде пригодиться, а вот для личных целей вполне. Сейчас постоянно рекомендуют использовать Wireguard для личных VPN серверов. Бинарники onetun есть под Windows, Linux, MacOS.

Использовать его примерно так:

onetun 127.0.0.1:8080:192.168.4.2:8080  \
  --endpoint-addr 140.30.3.182:51820    \
  --endpoint-public-key 'PUB_*********' \
  --private-key 'PRIV_BBBBBBBBBBBBBBBB' \
  --source-peer-ip 192.168.4.3          \
  --keep-alive 10

Пробросили локальный порт 8080 на машину в vpn сети с адресом 192.168.4.2. В самом репозитории всё подробно описано с примерами. В том числе техническая реализация. Как сделано и зачем всё это может быть нужно.

https://github.com/aramperes/onetun

#wireguard
​​Вчера рассказал про контейнер с openvpn, который позволяет в пару секунд запустить сервер с openvpn и готовым конфигом для клиента. В комментариях подсказали похожее решение для Wireguard.

Для Wireguard существует очень много готовых панелей для запуска и управления сервером, но предложенное прям совсем простое и автоматизированное. Это Docker контейнер от известного сообщества linuxserver.io, про которое я уже писал ранее. Их контейнеры отличает регулярное обновление, хорошая кастомизация через переменные, да и в целом качество. Они имеют статус Sponsored OSS и финансируются самим Докером.

Речь идёт о контейнере linuxserver/wireguard. Более подробное описание можно посмотреть на github. Готовый образ с помощью docker-compose или docker cli запускает Wireguard сервер с заданным набором клиентов и параметров. Выглядит это примерно вот так:

docker run -d \
 --name=wireguard \
 --cap-add=NET_ADMIN \
 --cap-add=SYS_MODULE `#optional` \
 -e PUID=1000 \
 -e PGID=1000 \
 -e TZ=Etc/UTC \
 -e SERVERURL=wireguard.domain.com `#optional` \
 -e SERVERPORT=51820 `#optional` \
 -e PEERS=1 `#optional` \
 -e PEERDNS=auto `#optional` \
 -e INTERNAL_SUBNET=10.13.13.0 `#optional` \
 -e ALLOWEDIPS=0.0.0.0/0 `#optional` \
 -e PERSISTENTKEEPALIVE_PEERS= `#optional` \
 -e LOG_CONFS=true `#optional` \
 -p 51820:51820/udp \
 -v /path/to/appdata/config:/config \
 -v /lib/modules:/lib/modules `#optional` \
 --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
 --restart unless-stopped \
 lscr.io/linuxserver/wireguard:latest

Число клиентов задаётся переменной PEERS и может быть указано как просто число, так и перечислено в виде списка названий через запятую, примерно так: myPC,myPhone,myTablet. Если не указать доменное имя SERVERURL, то контейнер вместо него определит внешний IP хоста и будет использовать его. Остальные параметры понятны по названию и комментарию.

Конфиги для подключения клиентов будут представлены в виде QR кодов в логе Docker, также сложены в замапленную директорию /config.

Этот контейнер супер популярен, как и в целом контейнеры от linuxserver.io. У него 50M+ загрузок. Можно использовать как для временных подключений, так и для постоянных. В основном для личного использования. Если не только для личного, я бы лучше рассматривал какие-то веб панели, например Subspace, Firezone или WireGuard Easy. Последний наиболее популярен.

#wireguard
​​Есть любопытный проект под названием WireHole. Это docker-compose файл, который скрещивает в единое целое WireGuard, Pi-hole и Unbound для быстрого и удобного развёртывания VPN инфраструктуры, где клиенты автоматически получают DNS сервер с фильтрацией рекламы на уровне запросов.

Особенно это удобно для смартфонов. Небольшой WG клиент, быстрая настройка с помощью QR кода и на выходе у вас статичный IP от арендованной VPS или домашнего сервера и фильтрация рекламы средствами DNS. Настройка занимает буквально 5 минут.

Всё бы хорошо, но в настоящее время данный проект стал жертвой типичной проблемы, когда используются контейнеры с тэгом latest. Изменился базовый контейнер linuxserver/wireguard, за ним следом сломался ngoduykhanh/wireguard-ui. Ну и теперь ничего не работает. Я и так, и сяк его ковырял, пытаясь исправить. Потратил кучу времени и всё впустую. Уже бы сам быстрее собрал всё это, но каждый раз казалось, что ещё вот-вот и всё получится.

В итоге нашёл форк этой репы - https://github.com/m-karakus/wirehole. Человек просто взял и форкнул более старую версию проекта WireHole, когда использовался веб интерфейс wg-easy, а не wireguard-ui. И теперь всё реально запускается в пару кликов.

Копируете себе репу:

# git clone https://github.com/m-karakus/wirehole.git

Редактируете .env. В переменную MASTER пишите свой внешний IP адрес, указываете пароль для веб панели Wireguard и веб интерфейса Pi-hole. Больше можно ничего не менять. Запускаем:

# docker compose up

Идём в веб интерфейс http://ip-address:51821/ и добавляем клиента. Сканируем на смартфоне QR код и добавляем новое vpn соединение. Подключаемся и выходим в интернет через IP адрес сервера.

Веб интерфейс Pi-hole доступен через внутреннюю сеть по адресу http://10.2.0.100/admin. Там можно что-то настроить, посмотреть статистику. Она ведётся в том числе и по всем DNS запросам. Можно быстро оценить, куда ходит смартфон. А он куда только не ходит.

Удобная штука. Я взял VPS, накатил туда этот композ. Создал 2 учётки - для ноута и смартфона. Проверил, всё работает. Ничего особенного тут нет. Можно и самому всё это настроить. Но потом надо время тратить на поддержку и т.д. Проще взять что-то более ли менее популярное. Думаю, что WireHole в ближайшее время поправят и можно будет пользоваться. Он довольно старый и популярный. Не думаю, что его бросят. К тому же видел уже и в issues обсуждение проблемы и готовые pull requests. Судя по всему, пока некому их проверить и принять в основную ветку.

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

Исходники

#wireguard
​​Информация для тех, кто работает с Windows и VPN на базе WireGuard. Есть удобное приложение, которое позволяет настраивать использование приложениями различных туннелей. Например, один браузер направить через VPN, а все остальные приложения напрямую через основное сетевое соединение.

Настроить это можно с помощью TunnlTo. Установка и настройка очень простые. Скачиваете обычный msi пакет, устанавливаете приложение. Добавляете туда настройки туннеля WG, либо вручную, либо импортом файла с настройками. Далее открываете настройки этого туннеля и указываете, каким приложениям можно его использовать.

Помимо настройки приложений, можно указать IP адреса и подсети, в которые нужно ходить через заданный туннель. Настраивать можно как разрешающие правила, так и запрещающие. То есть можно всем разрешить ходить через какой-то туннель, кроме определённого приложения.

Я программу проверил лично, все очень быстро настроил, потестировал. Очень удобно. Приложение поддерживает множественные VPN подключения. Если кто-то знает подобное приложение для OpenVPN, поделитесь информацией. Мне бы очень пригодилось, так как в основной использую OVPN, а не WG.

Исходники

#wireguard
​​Для 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 вручную. А если он уже установлен, то забэкапьте на всякий случай свои настройки в /etc/wireguard, если она вам нужны. Портал будет их менять в процессе управления.
2️⃣ Версия v2 пока в разработке. Используйте stable v1.
3️⃣ По умолчанию, если не будет отдельно настроено хранение пользователей, они будут храниться в .data/sqlite.db, откуда вы запустите compose.
4️⃣ Пример композа и конфигурации можно посмотреть на dockerhub или в документации. Не забудьте v2 поменять на v1. Почему-то все примеры с v2, хотя это ветка для разработки.

В целом, каких-то особых сложностей в установке и настройке нет. Ниже ссылка на видео, где подробно описан весь процесс, в том числе с LDAP.

Сайт / Исходники / Видеоинструкция

#vpn #wireguard
​​Последнее время WireGuard стал наиболее распространённым решением для построения VPN туннелей. Его используют и как самостоятельный продукт, и в составе каких-то готовых решений. Решил сделать подборку полезных заметок по данной теме, которые уже были ранее на канале.

 📌 Начну с веб панелей для разворачивания и управления сервером:

▪️ Wg-easy - очень простая в установке и настройке панель. Позволяет только управлять пользователями. Кому ничего другого и не надо - идеальный вариант.

▪️ WireGuard Portal - более функциональная панель с возможностью различных типов аутентификации (OAuth, LDAP) и хранения своих данных (различные СУБД).

▪️ Subspace - простая веб панель для управления пользователями. В качестве SSO (Single Sign-On) поддерживает G Suite и Okta. Всё остальное +- как у wg-easy, только интерфейс чуть поприятнее.

 📌  Клиенты:

▪️ TunnlTo - очень удобное приложение клиента WG, которое позволяет поднимать один или несколько туннелей и управлять приложениями и маршрутами, направляя их в заданные туннели.

 📌  Платформы для построения VPN сетей на базе WG с управлением пользователями, доступом, файрволами и т.д.:

▪️ Netmaker - популярное self-hosted решение для построения многофункциональных VPN сетей как для site-to-site соединений, так и для peer-to-peer. Всё управление через веб интерфейс: мониторинг сетей и хостов, списки доступа к сетям и хостам, пользователи и группы доступа.

▪️ Firezone - распределённая VPN сеть на базе WG с load balancing и failover. Поддерживает peer-to-peer соединения, различные способы аутентификации (email, okta, google).

▪️ Tailscale - платный сервис с бесплатным тарифным планом. Представляет из себя децентрализованную VPN-сеть на базе WG по принципу mesh-сети.

 📌  Другой софт на базе WG:

▪️ Wireproxy - подключается как WG клиент к существующей VPN сети и сразу поднимает у себя socks5/http прокси. Другие клиенты сети могут использовать её как точку выхода.

▪️ Onetun - программа, которая умеет подключаться к существующей WG сети и пробрасывать локальный порт на любую другую машину WG сети. Не требует установки и админстративных прав. Представляет из себя один бинарник под все популярные системы.

▶️ Очень подробный разбор темы настройки WireGuard для новичков:
https://www.youtube.com/watch?v=inx_dVfjadI

#wireguard #подборка
​​Познакомлю вас интересной 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
​​На базе 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 записью. Далее просто запускаем:

# 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