ServerAdmin.ru
28K subscribers
224 photos
26 videos
10 files
2.55K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Последнее время всё чаще и чаще появляется информация о блокировках тех или иных 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
​​На практике регулярно приходится собирать Nginx с дополнительными модулями. Чаще всего это модули brotli, vts или lua. У меня когда-то была статья для Centos по этой теме, но она уже неактуальна. Решил сделать мини-инструкцию по сборке своего пакета Nginx для Debian на примере добавления туда модуля статистки vts. А завтра отдельной публикацией покажу, как с его помощью очень быстро организовать мониторинг Nginx.

Выполнять сборку следует на отдельной машине, а не на рабочем сервере, чтобы не засорять его лишними пакетами. Я буду использовать небольшой читинг, а не полноценную сбоку пакета, которая не очень проста. Возьму готовые файлы настроек для упаковки в Debian 11 из официального репозитория Nginx. Распакую их, немного изменю настройки и запакую с ними свой пакет.

Устанавливаем необходимые зависимости, которые понадобятся для сборки Nginx и упаковки в deb пакет:
# apt install dpkg-dev devscripts quilte quivs wget dh-make build-essential \
git libpcre++-dev libssl-dev libgeoip-dev libxslt1-dev zlib1g-dev libpcre2-dev

Скачиваем файлы, которые нам понадобятся: исходники и настройки:
# mkdir build && cd build
# wget http://nginx.org/packages/debian/pool/nginx/n/nginx/nginx_1.24.0-1~bullseye.debian.tar.xz
# wget http://nginx.org/download/nginx-1.24.0.tar.gz

Распаковываем всё и удаляем архивы, чтобы не мешали:
# tar xvf nginx_1.24.0-1~bullseye.debian.tar.xz
# tar xzvf nginx-1.24.0.tar.gz
# rm -rf nginx_1.24.0-1~bullseye.debian.tar.xz nginx-1.24.0.tar.gz

Создаём директорию для модулей:
# mkdir debian/modules

Копируем туда исходники nginx-module-vts:
# cd debian/modules
# git clone https://github.com/vozlt/nginx-module-vts

Возвращаемся обратно в build и переносим директорию debian/ в папку с исходниками:
# cd ../../
# mv debian ./nginx-1.24.0
# cd nginx-1.24.0

Редактируем некоторые файлы. Начинаем с debian/changelog. Добавьте в начало по аналогии новую запись с описанием нового пакета. Примерно так:
nginx (1.24.0-1~bullseye) bullseye; urgency=low

 * 1.24.0-1
 * Add nginx-module-vts

 -- Serveradmin <root@serveradmin.ru> Fri, 18 Aug 2023 10:03:46 +0300

Важно следить за всеми отступами и пробелами. Если просто скопируете отсюда, то будут ошибки. Копируйте строки из исходного файла и меняйте их.

Далее вам может понадобиться файл debian/control, где можно добавить зависимости. В моём случае новых зависимостей не появится. А если вы, к примеру, захотите добавить модуль с lua, то там нужно будет пару пакетов в систему установить. Просто добавьте их в Build-Depends.

Открываем файл debian/rules и добавляем туда:
MODULESDIR = $(CURDIR)/debian/modules
Можете эту строку добавить сразу же после строки с BASEDIR. Далее ищем строки с ./configure и добавляем к ним в конец дополнительный параметр:
--add-module=$(MODULESDIR)/nginx-module-vts
Здесь же можете удалить лишние модули, которые вам точно не понадобятся.

Удаляем файл debian/source/format. Он не даст собрать пакет.
# rm -rf debian/source/format

Сохраняем файл и собираем архив с настройками пакета:
# dh_make --copyright gpl -s -e root@serveradmin.ru --createorig -y -p nginx_1.24.0
В директории build должен появиться файл nginx_1.24.0.orig.tar.xz.

Собираем пакет:
# dpkg-buildpackage -rfakeroot

В директории build должен появиться в том числе файл с пакетом nginx_1.24.0-1~bullseye_amd64.deb. Его можно установить и проверить:
# dpkg -i nginx_1.24.0-1~bullseye_amd64.deb

Проверяем, есть ли там наш модуль:
# nginx -V
В самом конце должно быть
--add-module=/root/build/nginx-1.24.0/debian/modules/nginx-module-vts

На этом всё. Таким образом можно собирать любые сборки Nginx под свои потребности и размещать их в своих репозиториях. Например, с помощью Nexus, aptly, apt-offline и т.д.

Заметка получилась полноценной инструкцией с информацией, которую я в интернете не нашёл в готовом виде. Пришлось написать самому.

#debian #nginx
​​Популярный вопрос к моим статьям и заметкам по настройке проксирования HTTP запросов с Nginx куда-то на backend. Нужно ли настраивать HTTPS и как вообще правильно это сделать. Поясню, о чём идёт речь.

Допустим, у вас есть какой-то сервер Nginx, работающий в режиме proxy_pass и раскидывающий соединения к разным доменам по разным серверам или контейнерам. Либо это один большой сайт с несколькими бэкендами. Очевидно, что соединение клиента с этим Nginx настроено по HTTPS. А от Nginx до остальных серверов нужно ли настраивать по HTTPS?

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

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

Некоторые примеры подобных ошибок и их решения я публиковал на сайте (phpmyadmin, wordpress). Точно надо что-то делать с Bitrix, если проксируешь его по HTTP. Сейчас уже не помню, что именно. Не записывал. Каждый раз по месту разбираюсь.

А вы как считаете? Нужно ли в этом случае настраивать HTTPS, при условии, что запросы гуляют по нашей внутренней сети, которая считается доверенной? Если речь идёт про проксирование через сторонний сервис, тот же Cloudflare, или другую систему защиты от DDOS, то HTTPS я всегда настраиваю.

#nginx #webserver
​​Я вчера рассказал, как собрать Nginx с модулем статистики vts. Расскажу теперь, как его настроить и собрать метрики в систему мониторинга Prometheus.

Для настройки статистики вам достаточно добавить в основной файл конфигурации nginx.conf в секцию http:
vhost_traffic_status_zone;

И в любой виртуальных хост ещё один location. Я обычно в default добавляю:

server {
  listen    80;
  server_name localhost;
.........................
location /status {
vhost_traffic_status_display;
  vhost_traffic_status_display_format html;
}
..................

Теперь можно сходить по ip адресу сервера и посмотреть статистику прямо в браузере - http://10.20.1.56/status/. Сразу покажу ещё два важных и полезных урла: /status/format/json и /status/format/prometheus. По ним вы заберёте метрики в формате json или prometheus. Последняя ссылка нам будет нужна далее. Я покажу настройку мониторинга Nginx на примере Prometheus, так как это самый быстрый вариант. Имея все метрики в json формате, нетрудно и в Zabbix всё это закинуть через предобработку с помощью jsonpath, но времени побольше уйдёт.

Устанавливаем Prometheus. Нам нужен будет любой хост с Docker. Готовим конфиг, куда сразу добавим сервер с Nginx:
# mkdir prom_data && cd prom_data && touch prometheus.yaml

global:
 scrape_interval:   5s
 evaluation_interval: 5s

rule_files:

scrape_configs:
 - job_name: prometheus
  static_configs:
   - targets: ['localhost:9090']

 - job_name: nginx_vts
  metrics_path: '/status/format/prometheus'
  static_configs:
   - targets: ['10.20.1.56:80']

Это по сути стандартный конфиг, куда я добавил ещё один target nginx_vts. Запускаем Prometheus:
# docker run -p 9090:9090 -d --name=prom \
-v ~/prom_data/prometheus.yaml:/etc/prometheus/prometheus.yml \
prom/prometheus

Идём на ip адрес хоста и порт 9090, где запущен Prometheus. Убеждаемся, что он работает, а в разделе Status -> Targets наш Endpoint nginx_vts доступен. Можете взять метрики со страницы /status/format/prometheus и подёргать их в Prometheus. Разбирать работу с ним не буду, так как это отдельная история.

Теперь ставим Grafana, можно на этот же хост с Prometheus:
# docker run -p 3000:3000 -d --name=grafana grafana/grafana
Идём на ip адрес и порт 3000, видим интерфейс Графаны. Учётка по умолчанию admin / admin. Идём в раздел Administration -> Data sources и добавляем новый типа Prometheus. Из необходимых настроек достаточно указать только URL прома. В моём случае http://172.27.60.187:9090.

Теперь нам надо добавить готовый Dashboard для Nginx VTS. Их представлено штук 10 на сайте Grafana, но реально актуальный и работающий без доработки только один - https://grafana.com/grafana/dashboards/14824-nginx-vts-stats/. Соответственно, в разделе Dashboards Графаны нажимаем Import и указываем URL приведённого выше дашборда. Все основные метрики вы увидите на нём. Если надо добавить что-то ещё, то идёте на /status/format/prometheus, смотрите метрику и добавляете запрос с ней в Grafana.

Если с Prometheus не работали ранее, то подобное описание возможно не очень подробное, но в рамках заметки тему не раскрыть. Зато когда разберётесь и научитесь, настройка такого мониторинга будет занимать минут 10. Даже если в готовом дашборде что-то не будет работать, нетрудно подредактировать. Как Grafana, так и VTS модуль активно развиваются, поэтому старые дашборды в основном нерабочие. Но тут метрик не так много, так что не критично. Можно либо поправить, либо самому всё сделать.

На картинке всё не уместилось. Ниже ещё статистика по бэкендам будет. Примеры можно посмотреть в описании дашборда на сайте Grafana.

#nginx #мониторинг #prometheus #grafana
​​Решил создать небольшую шпаргалку по информации о файлах в Linux. Я очень часто сам путаюсь в некоторых понятиях. Например, в modify и change. Вроде одно и то же, но на самом деле нет.

Посмотреть информацию о файле можно с помощью утилиты stat:

# stat file.txt
 File: file.txt
 Size: 3      Blocks: 8     IO Block: 4096  regular file
Device: fe00h/65024d Inode: 657571   Links: 1
Access: (0644/-rw-r--r--) Uid: (  0/  root)  Gid: (  0/  root)
Access: 2023-08-22 00:31:39.446518364 +0300
Modify: 2023-08-22 00:30:55.460753550 +0300
Change: 2023-08-22 00:30:55.460753550 +0300
Birth: 2023-08-22 00:30:45.778142819 +0300

1️⃣ Birth (crtime). С временем создания всё понятно. Это время создания иноды файла. Нужно обязательно учитывать файловую систему. Не везде stat показывает эту информацию. Я в заметке буду иметь ввиду ext4 и xfs.

2️⃣ Access (atime). С доступом вроде бы тоже всё просто. Если вы откроете файл для просмотра и проверите его после этого командой stat, время доступа изменится на момент открытия файла. Но тут есть существенные нюансы. Метка atime зависит от опций, с которыми смонтирована файловая система.
noatime, если указан этот параметр, то время доступа к файлу не обновляется при просмотре.
relatime, с этим параметром обновление поля access будет только если atime меньше времени последнего изменения файла или если с предыдущего обновления прошло больше 24 часов. Этот параметр включён в набор defaults, который используется по умолчанию для монтирования файловых систем. То есть фактически вы время доступа знать не будете, если оно было чаще одного раза в последние 24 часа. Проверить это легко. Создайте файл и проверьте atime. Далее откройте файл один раз и проверьте ещё раз. Время изменится. А вот если вы проверите ещё один раз, то время не изменится, а останется то же, что было при первом просмотре.

3️⃣ Modify (mtime) - время последнего изменения содержимого файла.

4️⃣ Change (ctime) - время последнего изменения метаданных файла в файловой системе. Например, после использования утилиты chown или chmod для изменения прав и владельца файла, ctime изменится, но при этом изменения содержимого не происходит. Если в каталоге создать новый подкаталог, то ctime исходного изменится.

Лично я последние два понятия часто путаю. У меня в голове постоянно возникает ассоциация, что изменение содержимого это change. Оно и понятно, в результате перевода change и modify на русский язык получаются слова синонимы. Так что тут приходится жёстко запоминать разницу.

Чётко понимать, что значат эти обозначения, очень важно, когда используешь find для поиска с различными параметрами. Я даже в своих заметках ошибался, когда писал про это. Например, в одной из заметок ctime обозначил как время создания файла. Ну и до кучи добавлю несколько заметок про find (один, два, три). Там много полезных примеров, которые я привёл из своих шпаргалок, которые лично использую.

#linux
​​Не откладывая на потом, продолжу вчерашнюю тему с значениями даты файла. Я уже когда-то частично касался этой темы, когда рассказывал про утилиту touch. С её помощью можно менять atime и mtime. Например так:

# touch -a test.file
# touch -m test.file

Это мы поменяли atime и mtime на текущие. А можно любую дату задать явно:

# touch -m -a -t 201003211751 test.file 

Установили дату atime и mtime — 21 марта 2010 года 17:51. Формат даты в команде - YYMMDDhhmm. 

Единственное, что не умеет менять touch — дату создания файла (Birth, crtime). С ней есть объективные сложности. Для изменения даты создания файла, надо изменить дату создания иноды для этого файла. А это можно сделать только залезая в файловую систему напрямую. Поможет нам в этом утилита debugfs.

# debugfs -w -R 'set_inode_field /tmp/test.file crtime 201003211751' /dev/sda2
# echo 2 > /proc/sys/vm/drop_caches

Второй командой мы сбросили кэш. Если этого не сделать, то сразу изменение не увидите. Я видел информацию, что эту команду надо выполнять с отмонтированным разделом. Возможно для ext2 или ext3 это так, но в ext4 у меня всё меняется наживую в корневом разделе без отмонтирования. Единственное, иногда несколько раз надо было выполнить команду изменения и сброса кэшей, чтобы увидеть результат. Не знаю, с чем связано.

Кстати, через debugfs и set_inode_field вы можете поменять, как и в touch, все остальные значения atime, ctime, mtime.

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

#linux
​​Расскажу одну историю, которая случилась со мной на днях. Это будет наглядный пример закона подлости и надежды на авось. У меня есть два старых неттопа, которые я время от времени использую. По характеристикам они до сих пор вполне актуальны: i3 cpu + 8GB ram + ssd. Там стоят Windows 10. Один вообще не используется, там чистая настроенная система, второй немного используется и его настройки терять не хочется.

Тот, который используется, бэкапится с помощью Veeam Agent for Windows Free. Архив порядка 100 GB весит. В какой-то момент система начала глючить и периодически виснуть при загрузке. Приходилось систему жёстко выключать, она запускалась снова, проводила какую-то свою диагностику и в итоге загружалась. При этом в журнале ничего информативного. Не понятно, что же не так.

Мне это надоело, решил как-то исправить проблему. Я сразу подумал на железо, поэтому для экономии времени просто перекинул жёсткий диск на второй неттоп. Через некоторое время проблема повторилась. Более того, спустя несколько дней система вообще перестала загружаться, тупо зависая в процессе.

Тогда я почему-то решил, что проблема в жёстком диске, потому что всё остальное я поменял. Взял второй изначально работающий неттоп и решил на него восстановить бэкап нужного. Загрузился с загрузочного диска Veeam, оказалось, что он не видит расшаренные сетевые диски. Пришлось искать внешний диск. Нашёл старый USB-HDD, там USB-2.0. Пару часов копировал на него бэкап.

Подключил диск к системе, начал восстановление бэкапа. При этом бэкапа работающей системы у меня не было. Я перед тем, как начать восстановление, подумал, что наверное неплохо было бы забэкапить чистую систему, чтобы потом не настраивать всё сначала, но поленился.

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

Пока пишу эту заметку, гружу образ винды, буду всё настраивать с нуля. История, как мне кажется, поучительная получилась. Имея как минимум одну работающую систему и бэкап неработающей, я получил две неработающие системы и невозможность воспользоваться бэкапом. По факту систему я потерял. В данном случае это не критично, я потерял только своё время. А вот если в проде такое повториться, то это будет провал.

Причём такие провалы я видел лично, но не по своей вине. Сам я, слава богу 🙏, не сталкивался с этим. Меня привлекали помочь решать проблемы, когда то VM не восстанавливались из бэкапа, то дампы баз данных. Кстати, всегда удавалось решить проблему. У людей просто квалификации не хватало всё сделать правильно, а тренировки они не делали.

❗️Отсюда можно сделать 2 важных коротких вывода:

1️⃣ Надо проверять скорость восстановления бэкапа. В моём случае если бэкап весил бы 500 Гб, то его сутки пришлось бы копировать и восстанавливать.

2️⃣ Бэкапы надо проверять и по возможности хранить как можно бОльшую глубину, так как проблема может появиться очень давно, а проявиться слишком поздно. Если впервые увидели проблемы, сразу сохраните отдельно бэкап ещё рабочей системы.

p.s. Бэкап глючной системы постараюсь починить в виртуалке. Очень интересно узнать, что там случилось. По результатам напишу потом.

#backup
Недавно рассказывал про open source систему контроля доступа к сервисам и системам Teleport. На днях как по заказу вышел подробный ролик с описанием его установки за проксируемым сервером Traefik. Это, кстати, фича последних версий. Раньше Teleport не удавалось разместить за прокси.

Installing Teleport + Traefik (Letsencrypt TLS certs)

Видео наглядное и подробное. Автор на наших глазах разворачивает всё хозяйство в Docker и настраивает. В качестве примера Application настраивает доступ к серверу Proxmox. Всё как мы любим. Не хватает только Mikrotik. Доступ через web, при желании, к нему настраивается по аналогии. Мне очень интересно узнать, записывает ли Teleport сессии к Application так же как к серверам по SSH. На своём стенде забыл это проверить.

Если не понимаете на слух английский, включите субтитры или синхронный перевод от Яндекса. Я с ним слушал, всё понятно. Качество перевода приемлемое. Я бы даже сказал хорошее, если бы он "teleport" не переводил как "телепортация".

#security #управление #devops
​​Многие, наверное, уже слышали, что некоторое количество бывших разработчиков Nginx создали форк и начали его развивать под названием Angie. Я видел эту новость давно, но не вникал в подробности. Сейчас решил разобраться и посмотреть, что в итоге получилось. Событие необычное.

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

Вообще, Angie появился примерно год назад в виде open source проекта. А весной 2023 года появилась коммерческая версия Angie Pro. Он имеет сертификаты совместимости с отечественными операционными системами РЕД ОС, Astra Linux Special Edition и Альт Сервер 10. Авторы говорят про него: "Angie PRO – единственный коммерческий веб-сервер разработка которого локализована в России."

Насколько я понял, пока каких-то принципиальных технических отличий от оригинального Nginx нет. Тем не менее реализованы некоторые дополнительные возможности, в том числе фичи из платных редакций. Например, привязка сеанса пользователя к конкретному бэкенду. Если не ошибаюсь, в бесплатном Nginx такого нет. Изменения перечислены в новостях на сайте компании. Обещают важное обновление поддержку шифрования по ГОСТ. На текущий момент этот продукт может быть интересен тем, у кого стоит вопрос импортозамещения на софт из реестра отечественного ПО.

При этом никто не мешает вам уже сейчас начать использовать Angie. Он доступен на операционных системах Alma Linux 8 и 9 версий, Alpine 3.18, Centos 7, 8 и 9 версий, Debian 12 и Ubuntu 23.04. Для них подготовлены репозитории от разработчиков. Я установил на Debian 12:

# curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
https://angie.software/keys/angie-signing.gpg
# echo "deb https://download.angie.software/angie/debian/ `lsb_release -cs` main" \
| tee /etc/apt/sources.list.d/angie.list > /dev/null
# apt update && apt install angie

По конфигам тот же самый Nginx, но уже видны некоторые различия в именованиях директорий. На сайте Angie заявлено, что им можно подменить Nginx без каких-либо правок конфигурации.

Судя по публичному репозиторию, работа над веб сервером активно ведётся. Как по мне, новость отличная. Веб сервер с полной локализацией в РФ лишним точно не будет. Тем более, что разработку начали не с нуля, а взяли готовый продукт, над которым работают его же бывшие разработчики.

Помимо обычного веб сервера, разработчики работают над Angie Ingress Controller (ANIC) для Kubernetes. Его, как Angie Pro, можно приобрести с услугой внедрения и технической поддержки.

#отечественное #nginx #webserver
​​На днях в комментариях посоветовали необычный 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
​​В конце публикации картинка, которую я увидел на reddit и решил перевести, потому что привлёк внимание последний пункт. Всё, что я дальше напишу, это будет на полном серьёзе, а не шутки и преувеличения.

Иногда я реально исправляю проблемы просто фактом того, что обращаю на них внимание. Кто-то звонит или пишет, сообщает о проблеме. Я подключаюсь и она решается сама собой. С некоторыми женщинами были забавные истории по этому поводу. Когда проблема решалась сама, я в шутку говорил, что типа всё нормально. Я понимаю, что ты просто хотела со мной поболтать или увидеться. Некоторым было неудобно, и они потом на смартфон записывали проблему, чтобы я не говорил подобное.

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

Я считаю такие события подтверждением того, что ты правильно выбрал профессию. Всегда ощущал себя на своём месте. В детстве, ещё в 90-е, когда появилась западная техника, а я был младшеклассником, мог запросто настроить любой новый телевизор или видик. Ходил всем соседям и родственникам помогал. Хотя вроде бы и учиться было негде. Как-то получалось самому быстро разобраться во всём.

У вас есть такое? Ощущаете, что правильно выбрали профессию у вас всё получается как будто само собой? Это ведь не у всех так. И точно не так у тех, кто постоянно ноет, жалуется и чем-то недоволен. Критика и недовольство - верный признак того, что ты не на своём месте и занимаешься не тем. Невозможность реализовать себя проявляется именно так.

#мем #мысли
​​После моей недавней заметки про Angie, в комментариях появился один из разработчиков этого продукта и дал более конкретную информацию. Так как комментарии читают не все, я хочу зафиксировать основную информацию отдельным сообщением.

1️⃣ Angie это не пересборка Nginx для перепродажи в России. Над развитием продукта работают разработчики. Изменения вносятся в том числе в open source версию и это будет продолжаться. Angie Pro не копия Nginx Plus. Это другой продукт.

2️⃣ Другой сайт будет. То, что сейчас на Тильде, это временно. Сейчас фокус на сам продукт, его код и другие организационные моменты.

3️⃣ У Angie есть свой Telegram канал - https://t.me/angie_software.

4️⃣ На сайте после моей заметки появилась обзорная статья: Сходства и различия Angie и nginx. (nginx почему-то с маленькой буквы, а Angie с большой 😁) Основные моменты оттуда (что-то в сокращении):

🔹в Angie нет кода NGINX Plus, закрытой коммерческой версии nginx; более того, у нас нет цели сделать наш платный веб-сервер, Angie PRO, стопроцентной функциональной копией NGINX Plus

🔹Angie сознательно ориентируется на платформы, для которых “официальный” nginx будет собираться еще нескоро: это такие сертифицированные в России ОС, как ALT Linux, Astra Linux SE и РЕД ОС, а также процессоры “Байкал” и “Эльбрус”.

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

Последнее прокомментирую, так как это важно. Разработчики Angie решили сами собирать популярные динамические модули веб сервера, чтобы упростить жизнь пользователям. Недавно у меня была публикация, где я рассказывал, как собрать Nginx с нужными модулями. А здесь разработчики озаботились и решили эту проблему сами. Список готовых модулей можно посмотреть на сайте. Там всё наиболее популярное присутствует (brotli, lua, geoip и т.д.) Не нашёл только vts. Думаю, разработчикам имеет смысл обратить на него внимание тоже. Все модули собраны в пакеты и доступны из репозитория. Вообще, это существенный плюс в пользу того, чтобы поставить Angie вместо Nginx, если тебе нужен какой-то модуль.

🔹Следующий фактор, на который мы обращаем внимание в своей работе, — ускорение работы самого веб-сервера за счет устранения лишних задержек. Мы:
добавили API-интерфейс динамической конфигурации и средства адаптивной DNS-адресации;
реализовали механизм привязки пользовательских сессий к проксируемому серверу;
внедрили активные проверки работоспособности проксируемых серверов, уменьшающие вероятность отправки реального запроса на неработающий сервер;
создали возможность сегментировать прокси-кэш, тем самым более эффективно задействуя все ресурсы сервера.

🔹Еще одна область, в которой мы хотим добиться улучшений, — это гибкость и удобство настройки веб-сервера. Мы:
добавили для групп проксируемых серверов упомянутый выше API-интерфейс динамической конфигурации;
предоставили ряд других настроек, менее масштабных, но весьма полезных.

🔹Наконец, важным для нас аспектом развития Angie является мониторинг состояния самого веб-сервера и проксируемых серверов. Мы:
реализовали в API-интерфейсе возможность получения базовой информации о веб-сервере, а также статистики по всем основным аспектам его функционирования в популярных современных форматах;
внедрили уже упомянутые активные проверки проксируемых серверов, самостоятельно следящие за их работоспособностью;
добавили семейство настроек для сбора статистики по сессиям передачи данных и запросам разрешения адресов.

Спасибо за подробные комментарии и описание отличий. Все эти изменения выглядят очень привлекательно для эксплуатации. Наглядно видно развитие и фокус внимания на реальные потребности пользователей. Обязательно попробую этот веб сервер в деле.

#webserver #nginx #angie #отечественное
​​🎓 Предлагаю вашему вниманию немного необычную тему для обучения: Основы документирования сетей с помощью серии бесплатных уроков на youtube. Документированию уделяется очень мало внимания в современных курсах. Я, к примеру, вообще ничего подобного не видел ни в одном из курсов по разным направлениям, которые проходил. Будь то сети или администрирование. Каждый рисует схемы как считает правильным и нужным.

Курс будет полезен следующим категориям:
Сетевые инженеры, администраторы
Системные администраторы, девопсы
Проектировщики

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

📌 Список уроков курса:

Введение
Чем рисовать? Visio
Чем рисовать? Diagrams.net
Структурная схема сети
L3 схема сети
L2 схема сети
Расположение оборудования в стойке
IP-план
Описание настроек
Заключение

▶️ https://www.youtube.com/playlist?list=PLcDkQ2Au8aVPmWZ2vXcby73Tl8SA7fp97

#обучение #бесплатно
​​С момента начала пандемии резко возросла потребность в сервисах для аудио и видео встреч. И с тех пор этот сфера программных продуктов активно развивается. Среди open source проектов один из самых популярных - Jitsi. Он может работать как самостоятельный продукт, так и интегрироваться в состав других. К примеру, Rocket.Chat использует его в качестве внутренних видеозвонков, а так же чат сервер Matrix-Synapse.

Попробовать Jitsi можно как в публичном сервисе, так и развернув его у себя. Покажу, как это сделать на Debian 12. Проверил на этой версии, но инструкция будет актуальна для любого deb дистрибутива, так как используется общий репозиторий разработчиков.

Перед установкой я подготовил VPS с внешним IP адресом, создал для него DNS запись и прописал её в качестве hostname, чтобы можно было сразу получить бесплатный сертификат от Let's Encrypt.

Устанавливаем необходимые зависимости:
# apt install apt-transport-https gnupg

Подключаем репозиторий и импортируем его ключ:
# echo 'deb https://download.jitsi.org stable/' \
| tee /etc/apt/sources.list.d/jitsi-stable.list
# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key \
| apt-key add -

Устанавливаем сервер Jitsi. Он, кстати, работает на Java:
# apt update
# apt install jitsi-meet

В процессе установки вас попросят ввести полное FQDN имя сервера. А затем спросят, хотите ли вы получить сертификаты от Let's Encrypt. Если у вас с DNS всё в порядке, то заказывайте сертификаты, если нет, то выберите вариант с self signed.

Далее вся установка и настройка выполнятся автоматически. Проверить статус службы можно вот так:
# systemctl status jitsi-videobridge2

Если всё в порядке, заходите по FQDN имени браузером, увидите свой сервер Jitsi с возможностью создать комнату для конференции. Если вас будет выкидывать из комнаты при подключении второго человека, то перезапустите службу:
# systemctl restart jitsi-videobridge2

Это, похоже, какой-то старый баг, описание, как и решение, которого я увидел в одном из issue в репозитории.

После установки сервер доступен для всех без аутентификации, как при создании конференции, так и подключении. Подозреваю, что вы не собираетесь делать его публичным, так что сразу настройте одну из аутентификаций. Описание есть в документации.

Можно настроить аутентификацию на создание конференций, а подключения к уже существующим комнатам позволить в том числе анонимным пользователям, если их подтвердит модератор, либо они будут знать пароль от комнаты. Jitsi поддерживает как внутреннюю аутентификацию (смотри настройку Prosody), так и внешнюю через LDAP.

По умолчанию Jitsi работает через Nginx, так что конфигурацию веб сервера или http логи смотреть надо в нём. А логи самого сервера живут в /var/log/jitsi/jvb.log.

Сайт / Исходники

💡Аналогом Jitsi можно считать тоже бесплатный open source проект BigBlueButton, про который я уже писал. Также можно воспользоваться бесплатной версией TrueConf Server Free с ограничением в 10 абонентов (считаются пользователи онлайн).

#видеоконференции
▶️ Год назад делал подборку хороших русскоязычных IT каналов с Youtube. В комментариях было много дополнений, часть из которых дополнили мой список. Думаю, будет полезным обновить его ещё раз и оформить в виде расширенного списка.

🟢 GNU Linux Pro. Канал с отличными обучающими роликами и полноценными курсами. За качество и проработку материала поставил этот канал на первое место. К сожалению, давно не было обновлений. Рекомендую вот этот курс - Основы GNU/Linux и подготовка к RHCSA.

🟢 ADV-IT. Канал Devops инженера и Cloud архитектора из Канады. Много материалов с привязкой к AWS, которые по вполне очевидным причинам стали не очень актуальны в РФ. Но и помимо этого много хороших видео на различные темы современной IT инфраструктуры и технологий.

🟢 RomNero. Много наглядных практических уроков, где автор берёт и что-то делает руками: настраивает Gitlab, Wireguard, OpenVAS, Bitwarden и т.д. Делится не только рабочими моментами, но и какими-то своими увлечениями, программами.

🟢 Asterisk Russia. Канал компании VoxLink на тему VOIP. Много качественных материалов и записей с конференций.

🟢 Мир IT с Антоном Павленко. Сразу скажу, что мне не очень нравится подача материала, но это субъективно. Сами материалы качественные, выходят регулярно, автор хороший специалист. Так что для самообразования и расширения кругозора смотреть полезно.

🟢 realmanual. Автор - практикующий devops инженер и автор онлайн школы. На канале много практических уроков по настройке современного софтового стека - gitlab, docker, kubernetes, ceph и т.д.

🟢 BAKAVETS. Канал Devops инженера с соответствующей тематикой на тему Kubernetes, Terraform, Helm, Jenkins, IaC, Git и т.д.

🟢 Unix way. На канале много качественных проработанных уроков по Linux и Devops. Можно использовать для изучения с нуля таких программ как Ansible, Jenkins, PostgreSQL и других. 

🟢 Aleksey Samoilov. Авторский канал с общей информацией о различных дистрибутивах Linux. Для меня чисто развлекательное видео с обзорами. По профессии системный администратор или devops там ничего нет. Видео качественные, смотреть интересно. 

🟢 Dmitry Ketov. Здесь много длинных уроков по Linux, его базовым вещам. Подойдёт для тех, кто хочет самостоятельно обучаться. К сожалению, новых уроков не было уже пару лет. 

🟢 Артем Матяшов. На канале немного видео, но есть пара десятка обучающих очень хорошего качества. Тематика - Linux, Mikrotik. К примеру, рекомендую обучающее видео по основам Docker

🟢 Сисадмин канал. Канал практикующего системного администратора на обслуживании офисов. Никакого Devops. Видео выходят редко и особой проработки нет. Тем не менее, автор иногда делится своими мыслями, программами, инструментами, которые использует в работе. 

🟢 Ускорение Сайтов :: Метод Лаб и Поддержка Сайтов :: Метод Лаб - два канала, которые ведёт один и тот же человек - Лавлинский Николай. Разделены чисто по тематике, подача и качество одинаковые, так как ведёт один и тот же человек. Вся информация в основном практической направленности. Очень много оттуда почерпнул, часто заметки делал по ним.

🟢 #linux life. Общая информация о Linux и настройке некоторых программ. Например, Nextcloud, Wireguard, Nginx, веб панели для хостинга и т.д. Информация скорее для пользователей Linux и админов localhost. 

🟢 PLAFON - Канал о линуксе. Канал пользователя Linux. Никакого системного администрирования. Очень хорошая проработка и монтаж видео. Полезно для тех, кто собирается переходить на Linux и использовать его постоянно в повседневной жизни.

🟢 AdminGuide. Канал со смешанной тематикой. Автор выкладывает и системное администрирование, и прохождение игр, и о своей жизни. В эту подборку он попал за большое количество обучающих уроков по системному администрированию (Zabbix, Linux AD-DC. Ubuntu 22 и другие).

Продолжение в следующей заметке ниже ⬇️⬇️⬇️

#подборка #видео
Продолжение, начало выше ⬆️⬆️⬆️

🟢 Be Geek. Авторский канал Devops инженера, который в том числе занимался преподаванием в GeekBrains и SkillBox. У него есть видео в том числе и об этом. Я изначально ими заинтересовался, а потом и остальные видео стал смотреть. На канале в основном мысли и размышления, а не руководства и инструкции.

🟢 DevOps Channel. Канал конференции DevOpsConf. Перед началом новой конференции сюда выкладывают все доклады с прошлой. Я обычно просматриваю список и что-то выбираю себе для просмотра.

🟢 IT-спец. Денис Курец. Авторский канал специалиста по информационной безопасности. Так как тема безопасности плотно пересекается с системным администрированием, материалы актуальны и для сисадминов.

🟢 Mikrotik Training. Канал известного тренера по Mikrotik - Романа Козлова. На канале есть очень информативные длинные руководства и трансляции по настройке микротиков. Некоторые мне очень пригодились в своё время. Например, Передача маршрутов удаленным VPN-клиентам.

🟢 курсы-по-ит.рф. Ещё один канал тренера по Mikrotik. На канале в основном некоторые уроки из платных курсов автора.

🟢 NetSkills. Канал онлайн школы, где много практической информации по настройке чего-либо. Некоторые вещи выложены полноценными курсами без обрезок и ограничений. Например, Основы документирования сетей, Основы виртуализации.

🟢 Networker Channel. Авторский канал сетевого инженера. Видео не так много, особенно новых. Но, к примеру, есть информация об Eltex, а в старых видео качественные уроки по настройке Cisco (серия из 31 урока).

🟢 Pavel Zloi aka EvilFreelancer. Авторский канал разработчика и системного администратора. Меня он в своё время привлёк роликами о настройке ARM кластера на базе Raspberry Pi. Потом уже и некоторые другие его видео посмотрел (TeamPass, Sonatype Nexus 3, KeeWeb и т.д.).

🟢 Southbridge. Канал известного аутсорсера с одноимённым названием. Они же авторы школы Слёрм. На канале есть интересные вебинары, особенно Сергея Бондарева.

🟢 Слёрм. Канал одноимённой IT школы. Много интересной и необычной информации. Постоянно придумывают какие-то активности, типа Школы мониторинга, подкаста Так дела не делаются, Заходят два архитектора в бар и т.д.

🟢 Администратор 1С. Канал разработчика и администратора 1С. В видео в основном заманухи для покупки курсов автора. Даётся частичная информация по настройке чего-либо, но есть и полезная информация. Кое-что я там почерпнул.

🟢 Давыд Рыленков. Авторский канал системного администратора и сетевого инженера. Много хороших законченных руководств по настройке чего-либо (мониторинг MikroTik с помощью Zabbix, Настройка ограничения скорости в pfSense, Базовая настройка OSPF на MikroTik и т.д.).

🟢 Иван Глазков. Ещё один авторский канал системного администратора с практическими руководствами по настройке всей админской кухни на Linux (Docker, Mikrotik, OpenVPN, Nginx, Iptables и т.д.).

Уф, реально устал составлять этот список. Надеюсь, он будет вам полезен. Я подписан на все эти каналы. Так как видео там выходят редко, никакого переизбытка информации не возникает.

#подборка #видео
​​👨‍💻 Многие, наверное, знают, что у меня рабочий ноутбук на операционной системе Windows 11. Я не раз об этом упоминал. Одно время были мысли перейти на Linux, но после того, как Microsoft сделали WSL2 на своей системе, надобность в отдельном Linux отпала. Меня полностью устраивает связка Windows 11 + Ubuntu в WSL2. Плюс, некоторые виртуалки тут же в HyperV запускаются.

Убунтой я пользуюсь активно и постоянно. Симбиоз реально удобный получается. Не нужны никакие компромиссы. Я получаю все плюсы обоих систем на одной машине. Сегодня решил поделиться с вами своими алиасами в Ubuntu, которыми пользуюсь постоянно. Это один из примеров того, зачем нужен Linux в Windows.

Сама Ubuntu у меня запускается через Windows Terminal. Профиль с ней установлен по умолчанию. Первый запуск буквально пару секунд занимает и у тебя тут же консоль Linux. Теперь про алиасы:

🔹alias ll='ls -alF'
Это стандартный алиас, который есть во многих системах, но не всех. Некоторые путают его и считают отдельной утилитой. Я тоже так думал сначала, пока не попал в систему, где этого алиаса не было. Упомянул о нём, чтобы лишний раз напомнить, что это алиас к ls.

🔹alias bfiles='ls --human-readable --size -1 -S --classify | head -n 20'
Показывает Топ 20 самых больших файлов в директории. Очень удобно директорию Downloads чистить.

🔹alias dusage='du -ah --max-depth=1 $(pwd) | sort -rh | head -n 10'
Мне нравится вывод du именно в таком виде. 10 самых больших директорий, где на первом месте указан суммарный объём текущей, в которой ты находишься. А ниже 9 самых больших в ней. При этом в итоговом списке показаны полные пути. Примерно так:
# dusage
58G   /mnt/c/Users/Zerox/YandexDisk
28G   /mnt/c/Users/Zerox/YandexDisk/share
8.9G  /mnt/c/Users/Zerox/YandexDisk/manuals
4.5G  /mnt/c/Users/Zerox/YandexDisk/work
4.2G  /mnt/c/Users/Zerox/YandexDisk/!Сайты
4.0G  /mnt/c/Users/Zerox/YandexDisk/docs
3.5G  /mnt/c/Users/Zerox/YandexDisk/Загрузки
2.0G  /mnt/c/Users/Zerox/YandexDisk/tmp
1.5G  /mnt/c/Users/Zerox/YandexDisk/books
886M  /mnt/c/Users/Zerox/YandexDisk/soft

🔹 alias myip='curl ifconfig.co'
Удобно быстро посмотреть свой IP адрес. С учётом того, что постоянно используются различные VPN, в том числе с заменой дефолтного шлюза, часто пользуюсь.

🔹function ipa {
  curl -s https://ifconfig.co/json?ip=$1 | jq 'del(.user_agent)'
  }
Это не алиас, а функция, так как приходится передавать параметр, но используется так же, как алиас. С помощью этой функции и сервиса ifconfig.co смотрю информацию по любому ip адресу. Примерно так:
# ipa 77.88.8.1
{
 "ip": "77.88.8.1",
 "ip_decimal": 1297614849,
 "country": "Russia",
 "country_iso": "RU",
 "country_eu": false,
 "latitude": 55.7386,
 "longitude": 37.6068,
 "time_zone": "Europe/Moscow",
 "asn": "AS13238",
 "asn_org": "YANDEX LLC",
 "hostname": "secondary.dns.yandex.ru"
}
Постоянно пользуюсь этой функцией, так как часто бывает нужно быстро проверить какой-то IP адрес.

🔹function ipc {
  curl -s https://ifconfig.co/json?ip=$1 | jq '.country'
  }
Это почти то же самое, только выводит информацию о стране. Часто бывает нужно именно страну увидеть, так что сделал для этого отдельный алиас.
# ipc 77.88.8.1
"Russia"

В принципе, это всё. Больше ничего не прижилось. Напомню, для тех, кто забыл. Алиасы и функции добавляются в файл .bashrc, который находится в домашней директории пользователя. Прямо в том виде, как я их показал, можете добавлять к себе. После изменения файла надо его перечитать:
# source ~/.bashrc

Если у вас есть что-то ещё полезное, чем постоянно пользуетесь, поделитесь в комментариях.

#linux #terminal
Получил вчера бумажный спецвыпуск «Хакера» по предзаказу. Увидел в рассылке предложение и заказал. Даже не помню, когда последний раз бумажный журнал в руках держал.

Решил написать заметку, чтобы поддержать издание. Рекламу у меня никто не заказывал. Просто меня порадовал бумажный журнал. Приятно его получить, распечатать, полистать. Очень непривычно после онлайн формата. Гиперссылки в тексте подсвечены, но их невозможно нажать 😁

От переизбытка информации в интернете, большую часть не воспринимаешь толком, а быстро просматриваешь или пролистываешь. С бумагой так не получится. Подход к чтению и восприятие информации другие.

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

Журнал можно положить и привлечь внимание детей. Возможно, это определит их судьбу. Кто знает.

Если кто-то хочет заказать, попробуйте. Может ещё остались экземпляры.

#разное
​​Современные операционные системы сегодня живут своей жизнью. Иногда бывает забавно посмотреть на сетевой трафик и ужаснуться от того, сколько там различных сетевых соединений, которые инициировали не вы. Проще всего их отследить по DNS запросам, настроив свой DNS сервер с логированием всех запросов.

Но есть способы проще. Например, взять open source приложение Sniffnet и посмотреть в удобном виде всю сетевую активность. Причём приложение кроссплатформенное. Я сначала не понял, как такая простая и маленькая программа на Rust может одинаково работать на всех платформах. Оказалось, она использует библиотеку pcap: libpcap в unix и npcap в windows. Для тех, кто не в курсе, поясню, что это та же библиотека, что используется в Nmap и Wireshark.

Sniffnet позволяет подключиться к конкретному сетевому интерфейсу и посмотреть его активность. Работает в том числе с VPN интерфейсами. Например, если вы заворачиваете весь трафик в VPN, то на основном интерфейсе увидите только трафик в сторону VPN сервера. А если заглянете в VPN интерфейс, там уже будет детальна информация. Можно быстро проверить, точно ли весь нужный трафик идёт в VPN.

В Sniffnet можно настроить 3 типа уведомлений:
1️⃣ Превышение порога по частоте передачи пакетов.
2️⃣ Превышение порога полосы пропускания.
3️⃣ Соединение с указанными IP адресами.
Уведомления фиксируются и отображаются в отдельной вкладке интерфейса.

Поддерживаются оба протокола: ipv4 и ipv6. В программе, в принципе, ничего особенного нет. Но сделана добротно и удобно, приятный интерфейс, есть русский язык. Можно взять на заметку, если понадобится подобный функционал. Я, к примеру, так сходу и не вспомню, чем так же трафик посмотреть на Windows. Первыми на ум приходят различные application firewalls, но это немного не то. Более навороченные и функциональные программы.

В Windows предварительно надо будет установить Npcap (installer), в Linux libpcap и звуки со шрифтами:
# apt install libpcap-dev libasound2-dev libfontconfig1-dev
А потом уже сам Sniffnet.

Сайт / Исходники

#network
​​Продолжу тему веб серверов, которую недавно начал. В свете последних новостей про Angie она заиграла новыми красками. Есть один популярный модуль, который часто используют и включают в различные сборки Nginx, типа nginx-more и не только. Речь пойдёт про модуль Headers More.

С помощью этого модуля можно очень гибко управлять добавлением или редактированием заголовков (headers). Стандартно Nginx позволяет добавлять заголовки только с помощью add_header. Модуль Headers More существенно расширяет эту функциональность. Примеры я покажу ниже.

В базовой сборке Nginx этого модуля нет. Чтобы добавить, нужно собрать его самостоятельно из исходников. Эту задачу существенно упростили разработчики Angie, собрав все популярные модули в своих репозиториях в виде пакетов. Так что дальше я покажу примеры с установкой и использованием модуля в этом веб сервере. Установить его сразу с нужным модулем проще простого. Показываю на примере Debian:

# curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
https://angie.software/keys/angie-signing.gpg
# echo "deb https://download.angie.software/angie/debian/ `lsb_release -cs` main" \
| tee /etc/apt/sources.list.d/angie.list > /dev/null
# apt update && apt install angie angie-module-headers-more

Установили веб сервер Angie с модулем headers-more. Чтобы подключить модуль, достаточно в конфиг /etc/angie/angie.conf добавить в основную секцию main:
load_module modules/ngx_http_headers_more_filter_module.so;

После этого можно управлять заголовками. Я покажу пару примеров, чтобы вы поняли суть. Для начала заменим стандартный заголовок Server, где веб сервер указывает свою версию, на что-то своё. Для этого в /etc/angie/angie.conf, в секцию http добавляем свой заголовок:

more_set_headers "Server: my_secret_server";

Теперь сервер будет представляться как my_secret_server. Причём вы можете в разных виртуальных хостах указывать разное значение. Модуль headers-more позволяет управлять заголовками глобально для всего веб сервера, отдельно для каждого виртуального хоста или даже отдельного location. А также добавлять различные условия.

Например, вы можете добавить отдельный заголовок в какой-то виртуальный хост для всех запросов, которые будут отдавать 404-й код ответа. Делается это так:

more_set_headers -s '404' 'Error: 404';

Новый заголовок Error со значением 404 будет добавлен только к 404-м ошибкам. Через пробел можно добавить разные коды в одну настройку:

more_set_headers -s '404 500 502' 'Status: Not OK';

В заголовках можно и тип документа изменить. Например, отдадим страницу с 404 ошибкой в виде plain text, а не html, которая отдаётся по умолчанию:

more_set_headers -s '404' -t 'text/html' 'Content-Type: text/plain' 'Error: 404 txt';

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

В заголовки можно добавлять переменные, использовать условия, очищать или перезаписывать заголовки и т.д. Более подробно всё это можно посмотреть в описании модуля на github.

В ванильном Nginx всё это настраивается точно так же 1 в 1.

#webserver #angie #nginx
​​Существует удобный веб интерфейс для управления и мониторинга СУБД Postgresql - temBoard. Он по смыслу напоминает специализированный мониторинг Percona Monitoring and Management (PMM). Но почему-то не очень популярен, хотя написан людьми, которые контрибьютят в PostgreSQL. Есть новость на сайте postgresql от них с анонсом очередного релиза.

У меня есть несколько одиночных серверов PostgreSQL для работы с 1С, так что я решил проверить работу сразу с ними. В сети нет готовых инструкций по настройке temBoard, а с учётом того, что сборка PostgreSQL для 1С не совсем типовая, пришлось немного повозиться с настройкой. В итоге всё получилось.

С помощью temBoard можно:
подключить множество экземпляров СУБД в единую веб панель;
смотреть основные метрики мониторинга серверов;
управлять активными сеансами пользователей;
запускать операции vacuum, reindex, analyze;
отслеживать запросы к СУБД;
выполнять некоторые настройки СУБД.

С учётом перечисленных возможностей понятно, что у панели есть почти полный доступ к СУБД, так что использовать её надо аккуратно. Это может быть точкой отказа или утечки данных.

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

Я развернул всё на Debian 11. В моём случае наблюдаемый сервер PostgreSQL будет стоять на этом же хосте. Нужно убедиться, что все хосты имеют FQDN имена. Без них ничего не заработает, так как будут выпущены сертификаты. А скрипты генерации сертификатов ожидают FQDN имена, без них будут ошибки.

Для установки использовал официальную инструкцию. Ставим утилиты, которые пригодятся:
# apt install gnupg curl sudo
Подключаем репозиторий и устанавливаем temBoard:
# echo deb http://apt.dalibo.org/labs $(lsb_release -cs)-dalibo main \
> /etc/apt/sources.list.d/dalibo-labs.list
# curl https://apt.dalibo.org/labs/debian-dalibo.asc | apt-key add -
# apt update
# apt install temboard

Теперь нужно запустить скрипт настройки. Он берёт все значения PostgreSQL по умолчанию. Если используете сборку от Postgrespro для 1С, то сокет для подключения она открывает в /tmp, а не в /var/run. Нужно это передать скрипту. Сразу покажу и переменную для tcp порта postgresql, если у вас используется нестандартный.
# PGPORT=5432 PGHOST=/tmp /usr/share/temboard/auto_configure.sh
Скрипт генерирует сертификаты, конфиги, службу systemd, создаёт себе базу данных в СУБД и что-то ещё, соответственно, в pg_hba.conf нужно настроить доступ для юзера postgres. После того, как скрипт отработает, запускаем службу:
# systemctl enable --now temboard

Если всё прошло без ошибок, то можно открывать веб интерфейс https://temboard.local:8888, учётка - admin / admin. Там будет пусто, так как нет ни одного подключенного хоста.

Теперь нужно установить агента. Если это одна и та же машина, то пакет ставится из того же репозитория. Если хост другой, то подключите туда репозиторий:
# apt install temboard-agent

Запускаем скрипт для конфигурирования агента:
# /usr/share/temboard-agent/auto_configure.sh https://temboard.local:8888
Тут он у меня постоянно вываливался с неинформативной ошибкой. Анализируя скрипт понял, что идёт проверка доступности ключа /etc/ssl/private/ssl-cert-snakeoil.key пользователем postgresql. Проверить так:
# sudo -u postgres cat /etc/ssl/private/ssl-cert-snakeoil.key
Если доступа нет, настройте. После этого всё получится. Далее забираем ключ с сервера, запускаем агента и регистрируемся на сервере:
# sudo -u postgres temboard-agent -c \
/etc/temboard-agent/15/pg5432/temboard-agent.conf fetch-key
# systemctl enable --now temboard-agent@15-pg5432
# sudo -u postgres temboard-agent -c \
/etc/temboard-agent/15/pg5432/temboard-agent.conf register --groups default

Идём в веб интерфейс и наблюдаем там свой хост.

Сайт / Исходники

#монитроинг #postgresql