ServerAdmin.ru
31.6K subscribers
855 photos
57 videos
23 files
3K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Ресурс включён в перечень Роскомнадзора
Download Telegram
Небольшой полезный проект на тему WireGuard, который в простых случаях заменяет веб интерфейс – wg-cmd. С его помощью можно в консольном режиме настроить сервер, добавить пользователей и прямо с консоли через QR-код настроить клиентов. Удобно, если сами настраиваете клиентов, к примеру, для своей семьи и прочих родственников, чьи смартфоны у вас под рукой.

Сразу предугадывая сообщения на тему того, что WG блокируют и т.д., скажу, что использовать WG надо внутри РФ на VPS. Это не заметка про то, как обходить блокировки и прочие ограничения. К этой VPS можно подключаться откуда-то извне (не наоборот) любым способом, который доступен. И на этой VPS решать все свои задачи, не трогая клиентские устройства.

Сразу напишу готовую инструкцию, чтобы можно было быстро воспроизвести. Делать всё буду на Debian 12.

# apt update && apt install wireguard-tools iptables
# curl -SL https://github.com/andrianbdn/wg-cmd/releases/download/v0.1.6/wg-cmd-0.1.6-linux-amd64 -o /usr/local/bin/wg-cmd
# chmod 755 /usr/local/bin/wg-cmd
# wg-cmd

Запустится консольный установщик. Можно на все вопросы ответить по умолчанию, ничего не меняя. Программа создаст все необходимые конфигурационные файлы, добавит правила в iptables, создаст wg интерфейс и юнит systemd.

После конфигурации откроется интерфейс управления сервером, где можно добавить клиента и тут же в консоли посмотреть QR код для него. В основном для этого обычно используется какой-то простенький веб интерфейс, типа wg-easy. Маленькая программа wg-cmd его заменяет. Можно добавлять и удалять пользователей, и считывать QR-коды. Больше она ничего не умеет. При желании можно руками в конфигурационных файлах клиентов что-то поправить, добавив дополнительные настройки.

Я лично проверил, всё завелось без проблем. Единственное, пришлось шрифт терминала немного уменьшить, чтобы QR-код поместился. Экрана ноута не хватило по высоте. Это самый простой и быстрый способ настроить WG и подключить клиента. И не надо веб интерфейс наружу выставлять и потом думать, чем его закрыть.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#wireguard #vpn
👍100👎3
Сейчас появилось очень много программ для построения mesh-сетей. Это локальные сети поверх других сетей, где хосты могут соединяться друг с другом напрямую, если есть возможность. А каждый из членов сети может выступать маршрутизатором для доступа к другим ресурсами.

Известными представителями подобных продуктов являются Nebula, Tailscale, Netmaker, Netbird и ZeroTier. На последнем я бы хотел остановиться поподробнее. Он выделяется из этого списка своим протоколом передачи данных, в то время как остальные в основном используют WireGuard. Плюс, Mikrotik в RouterOS7 имеет реализацию, как клиента, так и своего контроллера на базе ZeroTier.

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

ZeroTier - платный SaaS сервис. Регистрируетесь, платите деньги и получаете личный кабинет для управления всеми своими сетями. Но при этом серверная часть выложена в open source. Каждый может развернуть свой локальный сервер и управлять им через CLI. Я немного изучил команды, там на самом деле всё относительно просто.

В связи с этим появилось очень много реализаций бесплатного веб интерфейса для управления сервером. Я недавно читал статью про настройку Self-Hosted ZeroTier с помощью интерфейса ZTNET, поэтому не стал смотреть другие интерфейсы, а их много, взял сразу этот. В целом, там всё необходимое для управления есть.

Запускаем так:

# wget -O docker-compose.yml https://raw.githubusercontent.com/sinamics/ztnet/main/docker-compose.yml
# sed -i "s|http://localhost:3000|http://$(hostname -I | cut -d' ' -f1):3000|" docker-compose.yml
# docker compose up -d


Можно и вручную всё это сделать. В репозитории есть описание. Теперь можно идти на 3000 порт сервера и регистрировать учётку админа.

Принцип объединения устройств в единую сеть следующий:

1️⃣ Скачиваете клиента под свою систему (есть под все, в том числе мобильные)
2️⃣ В клиенте указываете Network ID или сканируете QR код, который видно в веб интерфейсе. В этом ID, как я понял, закодирован IP контроллера.
3️⃣ Клиент подключается к серверу, на сервере вы подтверждаете его подключение.
4️⃣ Клиент получает IP адрес внутренней сети.

Я объединил Windows, Linux и Mikrotik. Получилось всё без проблем. Узлы сети сразу же напрямую увидели себя по внутренним адресам сети ZeroTier. Заработали RDP, SSH, Winbox.

Вы можете назначить Mikrotik шлюзом для какой-то подсети, которая находится за ним. Клиенты, которые подключатся к общей mesh-сети, могут ходить в ту сеть через него. А какой-нибудь Linux сервер назначить шлюзом для доступа в другую инфраструктуру. То есть каждый узел может выступать в роли и клиента, и шлюза для других. Настраивается это очень просто, буквально в несколько кликов в веб интерфейсе.

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

В ZTNET это отключается в разделе настроек ZT Controller, где вы можете создать так называемый Custom Planet, который будет работать только локально и никуда подключаться не будет. Вам нужно будет обеспечить к нему прямой доступ всех клиентов, либо опубликовав контроллер напрямую в интернете, либо пробросив к нему порт 9993/udp.

Я всё это настроил. Разобрался со всем за пару-тройку часов. Не могу подробно расписать установку клиентов и команды, потому что лимит на длину заметки. В сети всё это есть, там ничего сложного.

Продукт простой, функциональный, бесплатный и известный. Много кем поддерживается. Так что если нужно что-то подобное, то можете смело использовать. Единственное, я бы поискал какой-то другой GUI. Этот показался немного кривоват, хотя вся необходимая функциональность присутствует.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX

#vpn #network
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍130👎3
Ранее я уже рассказывал про Small HTTP server. Это необычный веб сервер из далёкого виндового прошлого 90-х годов, который до сих пор поддерживается, немного развивается, и за это время оброс дополнительной функциональностью. Я с тех пор подписался на канал автора и наблюдал, как время от времени выходят обновления.

Проект меня заинтересовал. В первую очередь тем, что там из дополнительной функциональности заявлен HTTP TLS VPN сервер с небольшим VPN клиентом под Windows и Linux. С учётом того, что продукт этот мало кому известен, подумал, что это может быть полезным. Забегая вперёд скажу, что у меня не получилось его настроить, потому что надоело разбираться с продуктом, для которого толком нет документации и примеров настройки. В какой-то момент не захотелось дальше время тратить.

Стало жаль терять то, что уже сделал, поэтому решил написать публикацию. Автор выкладывает исходники и deb пакеты для запуска сервера под Linux. Но у меня не получилось установить из готового пакета, потому что он хочет старую версию libssl, которой в современной системе нет. А если берёшь старую систему, то не подходит версия libgnutls, так как требуется более новая.

Судя по всему автор собирает всё это сам с явным подключением нужных версий. Я в итоге нашёл конфигурацию дистрибутива, куда удалось автоматом всё установить из пакетов и не собирать вручную. Завернул всё это в Dockerfile и оформил в виде Docker Compose.

Выложил всё на Gitflic, там же и описание запуска:

https://gitflic.ru/project/serveradmin/smallsrv

Клонируете себе репозиторий:

# git clone https://gitflic.ru/project/serveradmin/smallsrv.git
# cd smallsrv

При необходимости правите конфигурацию сервера в файле httpd.cfg, наполняете директорию www/. Если туда не положить файл index.html, то будет работать простой листинг файлов. Можно в качестве простого файлового сервера использовать.

После этого запускаете:

# docker compose up -d

Будет собран локальный образ и запущен контейнер. Если надо что-то настроить в контейнере, то зайдите в него:

# docker exec -it smallsrv bash

Если измените конфигурацию сервера, контейнер нужно будет перезапустить:

# docker restart smallsrv

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

С помощью Docker очень легко упаковать приложение в преднастроенную среду и не мучать пользователей с настройкой. Причём сделать это может и человек со стороны. Теперь можно без проблем запустить приложение на любом линуксе.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX

#webserver #vpn
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍71👎4