ServerAdmin.ru
26.7K subscribers
204 photos
24 videos
8 files
2.49K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Представляю вашему вниманию готовую веб панель для управления хостингом - aaPanel. Я не фанат таких продуктов и сам никогда не устанавливаю на серверах под своим управлением. Тем не менее они имеют довольно высокую популярность и активно используются. Сам часто видел у заказчиков платные панели, но с определённого периода вообще перестал с ними работать, так как не могу гарантировать результат.

Возвращаясь к aaPanel скажу, что это наиболее простая и приятная панель, с которой мне приходилось сталкиваться. Попробовал её в деле - установил и развернул типовой сайт на php. Прошло всё без проблем и интуитивно понятно, что вообще ни разу не случалось с подобными продуктами. AaPanel бесплатная, исходный код открыт. Монетизируется за счёт платного дополнительного функционала и модулей.

AaPanel ставится скриптом от разработчиков, либо запускается в Docker. Функционал стандартный для подобных продуктов:

 установка и настройка web сервера с php (поддерживаются разные версии одновременно);
 установка Mysql с phpMyadmin;
 установка Ftp, Mail сервера (на базе postfix и dovecot);
 поддержка бесплатных сертификатов Let's Encrypt;
 cron, логи доступа к сайту, простой мониторинг;
 бэкап сайтов через панель управления (отдельный бесплатный модуль для бэкапа на S3);
 файловый менеджер через браузер;
 расширение функционала за счёт модулей (много бесплатных).

Добавление нового сайта выглядит максимально просто. Прописываете DNS запись, добавляете сайт, указываете версию php, указываете использование https и редирект с http. Если DNS записи уже обновились, то сразу же получите свой сайт с доступом по https. К нему отдельную учётку с базой данных и ftp доступ к файлам.

🔥 Лично мне бесплатная aaPanel понравилась больше, чем платные ISP Manager, Cpanel или Plesk, с которыми приходилось сталкиваться. Я сейчас имею ввиду не функционал, а удобство работы и интуитивно понятный интерфейс.

Если знаете и имеете опыт работы с другими бесплатными панелями управления хостингом, поделитесь информацией. Я работал только с VestaCP и ничего хорошего про неё сказать не могу. Там часто что-то ломалось, работало не так, как надо, приходилось что-то править руками.

Сайт - https://www.aapanel.com
Исходники - https://github.com/aaPanel/aaPanel

#webserver #hosting_panel
Расскажу отдельно, почему сам никогда не использую никакие готовые веб панели для управлением хостингом. Если кратко, то это чёрный ящик, который в любой момент может взорваться. Конечно, если с ним с самого начала будет работать специалист и делать всё аккуратно, то вероятность проблем будет минимальная, но всё равно она будет. На моей практике с веб панелями работали вообще не специалисты и вот чем это кончалось.

📌 Первые две истории будут про Plesk. Один заказчик попросил настроить в ней новый сайт, какие-то версии ПО добавить и т.д. Я всё сделал и перезапустил некоторые службы через веб панель. Это необходимо было сделать, чтобы применились изменения. После этого у них упал основной сайт. Как оказалось, они не разобрались, как добавить некоторые функции в конфигурационные файлы через панель, поэтому добавили их в конфиги вручную. А панель после перезапуска служб всегда актуализирует конфиги в соответствии со своими внутренними настройками. Все внесённые изменения руками были удалены. Потом они всегда повторяли ручное изменение конфигурации после перезапуска служб.

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

📌 Ещё одна показательная история. У знакомого использовались старая версия ОС и ISP Manager, которые уже давно не поддерживались. Надо было переезжать на свежие версии. Но проблема в том, что там были сотни сайтов. Если бы это был обычный сервер, то каких-то фатальных проблем с автоматизацией скорее всего не было. Перекинули бы исходники, базы, конфиги чуть подправили под новые версии, протестировали и перенесли, либо вообще сервер на месте обновили. Но не в этом случае. Возможно и было какое-то решение с автоматизацией, но оно явно сильно сложнее, чем в общем случае. В итоге руками переносили.

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

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

#webserver
​​Один подписчик поделился информацией о программе для учёта компьютерного оборудования в компании - Hardware Inspector. Я с удивлением вспомнил, что эту программу хорошо знаю, потому что покупал её и активно использовал, но давно. Решил написать по ней заметку.

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

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

Hardware Inspector умеет автоматически заполнять информацию о железе и установленном ПО на рабочих местах с помощью интеграции с AIDA32 или ASTRA. Я Аиду использовал. Сама интеграция очень простая. AIDA с нужными ключами запускается на компе с помощью GPO при Logon, генерирует текстовый отчёт, записывает его в файл. Hardware Inspector читает этот файл.

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

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

С внедрением программы придётся потрудиться и потратить какое-то время. С кондачка тут хорошего результата не будет.

📌 Особенности Hardware Inspector:

Локальное приложение под Windows (на Linux работает через Wine), веб версии нет.
База хранится в файле, его можно положить на сетевой диск и открывать из разных мест.
Лицензирование идёт по количеству объектов в базе.
Есть интеграция рабочих мест с AD, так что при желании можно всё автоматически развернуть и потом уже редактировать то, что получилось. Это быстрее, чем заводить с нуля.

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

Сайт - https://www.hwinspector.com
Реестр ПО - https://reestr.digital.gov.ru/reestr/303504/

#управление #ITSM #отечественное
​​Есть удобный инструмент для отладки работы iptables - iptables-tracer. С его помощью можно отследить путь прохождения пакета по цепочкам iptables. Утилита написана на Go, так что ставится относительно просто. Надо собрать бинарник, причём сделать это можно где угодно, а потом просто передать на целевой сервер.

# apt install golang git
# git clone https://github.com/x-way/iptables-tracer
# cd ./iptables-tracer/
# go build
Почему то команда, которую я считал аналогичной трём выше:
# go get github.com/x-way/iptables-tracer
не собрала бинарник. Не стал разбираться с ошибкой. Мне всегда казалось, что это одно и то же. В итоге у вас соберётся бинарник iptables-tracer, который можно запускать с нужными параметрами.

Посмотрим список правил iptables:
# iptables -L -v -n
# iptables -L -v -n -t nat

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

# ./iptables-tracer -f "-d 10.20.1.56 -p icmp" -t 30s
nat PREROUTING NEW IP 10.20.1.1 > 10.20.1.56: ICMP echo request, [In:ens18 Out:]
filter INPUT NEW IP 10.20.1.1 > 10.20.1.56: ICMP echo request, [In:ens18 Out:]
nat  INPUT NEW IP 10.20.1.1 > 10.20.1.56: ICMP echo request, [In:ens18 Out:]

Запросы шли извне, так что сначала попали в таблицу NAT, цепочку PREROUTING, потом в таблицу FILTER, цепочку INPUT. Всё достаточно наглядно и понятно, как на картинках со схемой прохождения пакетов в iptables. Синтаксис фильтров для iptables-tracer аналогичен правилам iptables, так что проблем с написанием возникнуть не должно.

Когда что-то не получается с iptables, я первым делом включаю лог всех заблокированных запросов. Это самое простое. Там обычно сразу видно, в чём проблема и какое конкретно направление блокируется. Если не помогает, то подключаю iptables-tracer.

#iptables
​​В марте этого года Microsoft выпустила необычный продукт - бесплатный Open Source сканнер заражения RouterOS (Mikrotik) RouterOS Scanner. Он выполняет следующие проверки на устройствах:
версию системы и наличие CVE под неё
наличие запланированных задач
наличие правил переадресации трафика
наличие статических DNS записей в кэше
изменение стандартных портов у системных служб
наличие дополнительных пользователей
наличие подозрительных файлов на устройстве
наличие настроенных прокси

Как происходит типовое заражение Микротиков и почему выбраны именно эти проверки, подробно объясняется в блоге Microsoft.

Routeros scanner написан на Python и запускается просто:
# python3 main.py -i 192.168.88.1 -p 22 -u admin -ps pAsSw0rd
Перед этим, соответственно, надо склонировать репозиторий и установить зависимости:
# git clone https://github.com/microsoft/routeros-scanner
# pip install -r requirements.txt

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

Инструмент неплохой и кто бы что не думал о Microsoft, в целом это крупная компания, которая создала массу хороших продуктов или небольших утилит (calc.exe 😁, пользуюсь постоянно). Я себе поставил в WSL, мало ли, пригодится.

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

Исходники - https://github.com/microsoft/routeros-scanner

#mikrotik
​​Никогда не понимал, почему вывод информации об устанавливаемых пакетах в apt-get, а потом и в apt такой неудобный. Вам просто вываливают лапшу перед глазами, где трудно что-то разобрать, например найти отдельный пакет. И ладно бы трудно было придумать что-то получше, но оно уже есть. Берём yum/dnf, там всё красиво и удобно. Почему нельзя сделать так же? Достаточно добавить форматирование.

Кажется, что это мелочь, но когда я пользовался Centos, меня прям отвращало от Debian и Ubuntu именно это поведение apt. Я не понимал, почему не сделать удобно, как в других дистрибутивах. Не понимаю я этого и сейчас. Когда впервые услышал про apt, как замену apt-get, думал, там это будет решено. Но нет.

Если хотите в Debian или Ubuntu получить нормальный вывод информации о пакетах при работе с пакетным менеджером, можете поставить Nala. Она не делает ничего особенного - просто приводит вывод apt в человекочитаемый вид. Ну и бонусом может параллельно скачивать пакеты в несколько потоков.

Поставить Nala можно либо из собранного пакета, либо из репозитория Testing/Sid самого Debian. Его нужно будет отдельно добавить в систему. Лучше этого не делать, чтобы случайно не обновиться с тестовых реп. Это необратимый процесс. Либо сразу после установки отключить его.

Я так понимаю, раз Nala уже в Testing/Sid, то есть шанс, что её перенесут в основной стабильный репозиторий. Было бы неплохо.

Исходники - https://gitlab.com/volian/nala

#debian #ubuntu
Компания Zabbix выпустила первую альфу версии 6.4. Решил почитать, что они планируют изменить, добавить в этой версии. Какого-то общего списка нововведений ещё не публиковали, так что информация из разных англоязычных источников (страница документации, почтовая рассылка, список изменений для 6.4.0alpha1).

Новое навигационное меню в веб интерфейсе. Появится новый раздел Dashboards. Исчезнет раздел Configuration, появится пересобранный Data collection. Многие разделы переедут в другие места, плюс появятся новые пункты. Наверняка первое время будет путаница. Все старые инструкции разом потеряют актуальность 😔

Виджет Item Value научится менять цвет фона в зависимости от значения. К примеру, когда всё ОК - зелёный, когда проблема - красный.

Айтемы vfs.fs.get и vfs.fs.discovery научатся возвращать в том числе и опции монтирования. Например, тип файловой системы, режим доступа (чтение, запись и т.д.). Довольно удобное нововведение. Нужно будет шаблоны по этой теме обновлять вручную, чтобы увидеть изменения.

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

Дефолтное значение параметра RefreshActiveChecks с двух минут уменьшают до 5 секунд. Напомню, что этот параметр отвечает за получение информации Zabbix agent в active mode настроек с сервера.

Появятся новые шаблоны: AWS RDS instance by HTTP, AWS S3 bucket by HTTP, Azure by HTTP, OPNsense by SNMP.

При обновлении Zabbix Proxy с использованием базы SQLite, последняя будет автоматически удаляться и создаваться заново с новой версией данных. Раньше это нужно было делать вручную и это реально напрягало. Хорошо, что автоматизировали.

Как-то совсем мало нововведений. В основном косметические изменения. Хотя обычно именно на 4-ю версию ветки приходится больше всего изменений, так как их на ней отлаживают перед принятием в новую LTS ветку. Судя по всему в 7.0 тоже каких-то кардинальных изменений не ожидается.

Так и не изменили механизм веб мониторинга 😪 Он откровенно неудобен и устарел по современным меркам. Я ждал изменений в 6.4 по этому поводу.

Заметки о выпуске для Zabbix 6.4.0alpha1

#zabbix
🎓 Признайтесь честно, без гугления, знаете что такое идемпотентность? Никогда не получается нормально выговорить это слово. Если не знаете, то скорее всего не знакомы и с Ansible. Для админа в наши дни это плохой сигнал, даже если не работаете с большими масштабами.

Ansible стал практически стандартом автоматизации и преднастройки инфраструктуры. Если не приходится использовать его лично, то всё равно на базе Ansible написана куча инструментов по установке чего-либо. Например, разворачивание кластера Kubernetes на своих хостах с помощью Kubespray. Или то же самое для Ceph. Если умеешь работать с Ansible, не будет никаких проблем раскатать кластер и продебажить установку в случае проблем.

К примеру, я почти не пользуюсь в своей работе Ансиблом, но тем не менее знаю его. Проходил курсы, писал свои плейбуки. Когда понял, что поддерживать и обновлять их дольше, чем настроить вручную раз в пол года, перестал. Но мне нет проблемы развернуть тот же Kube или Ceph из готовых плейбуков. Я понимаю, как там всё устроено и работает.

Долгая подводочка к теме получилась. Вот вам на выходные хороший цельный урок по Ansible от и до.

Всё что нужно знать по Ansible. Основы и не только:
⇨  https://www.youtube.com/watch?v=YYjCwLs-1hA

К видео есть содержание, так что можете сразу оценить, о чём там будет речь.

Кстати, у небезызвестного Дениса Астахова есть свой курс на Udemy на русском языке. Цена символическая, правда я не знаю, нормально ли с приёмом платежей из РФ там сейчас. Там же есть и бесплатные курсы, но на английско-индусском.

Если кто-то знает хороший бесплатный курс по Ansible в текстовом виде на русском языке, поделитесь информацией. У меня есть вот такая ссылочка в закладках, но это скорее просто подробная статья. На обучение не тянет.

#обучение #ansible #бесплатно
Ко мне поступил интересный вопрос от читателя, который я решил вынести на публичное обсуждение и прокомментировать, так как будет полезно многим администраторам.

"Есть компьютер с CentOS 5.8 (дистрибутив FreePBX) на борту, выполняющий роль шлюза и сервера Asterisk. Есть необходимость сделать полный бэкап диска/системы, чтобы потом, в случае какой-то глобальной проблемы, восстановить всё на другом железе (время бэкапа/восстановления особой роли не играет). Нюанс в том, что так как эта система выполняет роль шлюза, то останавливать её нельзя. Поэтому единственный вариант - делать бэкап по сети.

Подскажите, пожалуйста, какие могут быть варианты решения вопроса."

В этом вопросе наглядно продемонстрирован ответ на вопрос - зачем нужна виртуализация. Удивительно, но до сих пор есть люди, которые сомневаются, ставить им гипервизор или разворачивать всё на железе. Я рекомендую всегда всё разворачивать в виртуальных машинах, кроме каких-то редких, специфичных случаев. Это нужно в первую очередь для того, чтобы не иметь привязки к железу. VM можно быстро и легко забэкапить или перенести.

В данном случае вижу несколько вариантов решения задачи:

1️⃣ Воспользоваться готовым решением в виде бесплатного Veeam Agent for Linux. Он без остановки машины может снять образ системы. Единственный нюанс, система очень старая. Я не уверен, что Veeam заработает на ней. Надо пробовать и подбирать какую-то старую версию.

2️⃣ Наиболее надёжный вариант. Найти всё-таки время в ночи, загрузиться с Live CD и снять образ диска. Например, с помощью CloneZilla.

3️⃣ Подготовить где-то идентичное железо или VM и сделать полную копию дисков с помощью dd и сразу же отправить по ssh. Примерно так:
# dd bs=1M if=/dev/sda | ssh root@restoresrv "dd bs=1M of=/dev/sda"
На практике я такое не делал, но не вижу особых проблем, почему это может не сработать. Метод стоит отработать где-то на тестовом стенде, а потом снять копию с боевого сервера. Вместо целого диска sda можно по разделам копировать: sda1, sda2 и т.д. Можно просто скопировать образ в файл, а потом уже развернуть из него систему:
# dd bs=1M if=/dev/sda of=/mnt/backup/sda.img
DD популярный инструмент, без проблем гуглится подходящее решение.

Как бы вы решали эту задачу?

#вопрос_читателя
​​Существует известная компания Luden.io. Разработчики игр, которые помогают освоить профессию инженера и как частный случай, программиста. Ранее на канале была заметка об их игре while True: learn().

У них есть ещё одна известная игра - Learning Factory, в которой надо выстроить автоматизированную систему процессов на фабрике с применением машинного обучения, чтобы понять, чего хотят котики. Игра сделана на базе Factorio. А теперь самое интересное. У них есть бесплатная обучающая игра для детей - Learning Factory EDU.

Learning Factory EDU представляет из себя непосредственно игру для PC и набор методических материалов для вовлечения детей в игровой процесс. Причём материалы есть на русском языке. Я сначала удивился, когда их увидел, а потом понял, что вся команда Luden.io русскоязычная. Просто они не афишируют это, сайт на английском, как и все продукты. Они ориентированы на мировой рынок.

В googl drive представлены сам дистрибутив игры, рабочая тетрадь для ребёнка, планы уроков и все сопроводительные материалы в виде слайдов, картинок, иконок. Сделано всё очень качественно и продуманно. Это готовый план уроков для какого-нибудь кружка или родителя, который готов заниматься с ребёнком, чтобы вовлечь его в предметную область.

Если вы взрослый, не преподаёте и вообще всё это не для вас, то можете просто поиграть в Learning Factory. Это качественная тематическая игра с хорошим рейтингом и отзывами.

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

Learning Factory - https://store.steampowered.com/app/1150090/Learning_Factory/
Learning Factory EDU - https://luden.io/lfedu/

#игра #обучение #дети
Регулярно вижу сообщения на тему того, что OpenVPN работает медленно. Чаще всего это результат каких-то локальных проблем, а не распространённого мнения о том, что openvpn это медленный туннель. Всё познаётся в сравнении, а максимальная производительность туннеля зачастую больше всего зависит от сложности шифрования, которое используется.

В общем случае, при канале интернет в 100-200 мегабит в секунду вы не заметите проблем со скоростью в туннеле OpenVPN, если он будет поднят на базе PC, а не какого-то роутера с маломощным железом. По крайней мере я не сталкиваюсь с проблемами, когда на виртуальных машинах использую OpenVPN для объединения сетей через интернет.

Если вы видите, что ваше OpenVPN соединение работает значительно ниже исходного канала в интернет, то проверять стоит следующие вещи:
Сжатие. Попробуйте его отключить, если включено, и посмотрите, как это повлияет на скорость.
Если у вас используется TCP транспорт, поменяйте на UDP и проверьте скорость.
Попробуйте более простой шифр, например AES-128-CBC вместо AES-256-CBC. Для верности можно вообще что-то совсем простое поставить и проверить, действительно ли из-за шифра проседает скорость.
Посмотрите загрузку ядер процессора во время тестирования канала. Есть вероятность упереться в производительность одного ядра.

Далее идут более сложные вещи, в которые можно погрузиться, чтобы решить проблему с быстродействием:
Иногда могут возникать проблемы с буферами. Гуглите параметры sndbuf и rcvbuf. Пробуйте их менять или отключать управление со стороны OpenVPN. Тема большая, гуглится хорошо, всё найдёте. Не забудьте, что эти параметры можно не только поменять на сервере, но и передать их клиенту. Это суперспособность OpenVPN - передавать практически любые настройки клиенту.
Попробуйте поменять MTU с помощью параметра tun-mtu. Часто в этом может быть причина неадекватно низкой скорости туннеля.
Попробуйте поменять параметр длины очереди отправки txqueuelen. В общем случае дефолтное значение трогать не обязательно, но если ничего из вышеприведённого не помогло, можно попробовать изменить. Я видел ситуации, когда это помогало.

Само собой получился чек лист по исправлению проблем производительности OpenVPN туннеля. Можно забрать в закладки. Изначально хотел написать, как можно ускорить VPN туннели, в том числе и на базе OpenVPN, с помощью готового решения, но отложу это на завтра.

Почему я чаще всего использую OpenVPN - Подробный ответ.

#openvpn
Расскажу вам про решение проблемы с Openvpn Client на Windows, которая меня донимала последний год примерно, может чуть меньше. Вчера терпение лопнуло и я разобрался с ней раз и навсегда.

Проблема плавающая и выражалась она в том, что время от времени одно из настроенных подключений openvpn не подключалось. Ошибка была примерно такая:
MANAGEMENT: Socket bind failed on local address [AF_INET]127.0.0.1:25349
Ошибка возникала случайным образом на различных соединениях.

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

Дело вот в чём. После какого-то обновления Windows, она стала резервировать некоторые диапазоны портов для работы Hyper-V. Посмотреть эти диапазоны можно командой:
# netsh int ipv4 show excludedportrange tcp

И как оказалось, там есть диапазон локальных портов, который пересекается с диапазоном, который использует OpenVPN. Решение вопроса - изменить его в OpenVPN GUI:
Settings ⇨ Advanced ⇨ Management interface ⇨ Port offset.
После этого проблема исчезла.

Такая вот ерунда сожрала кучу моего времени. В логах самой винды никакой информации нет. По логу openvpn невозможно понять, в чём дело. А оказывается винда каким-то своим механизмом бронирует целые диапазоны портов и не даёт их использовать. При этом никак в системе не помечает их занятыми, иначе бы ошибка была другая. Что-то в духе local address [AF_INET]127.0.0.1:25349 is busy. А тут просто ошибка, которая говорит о том, что сокет не поднимается. Причин этому может быть много. Банальная нехватка прав или что-то ещё.

#openvpn #windows #ошибка
​​Существует необычный и полезный продукт - UDPspeeder, который способен улучшить качество связи VPN туннелей на каналах с большими задержками и потерями пакетов с помощью коррекции ошибок (Forward Error Correction).

Разработчики заявляют встроенную поддержку следующих VPN туннелей - OpenVPN, L2TP, ShadowVPN. Работает UDPspeeder следующим образом. Сначала организуете туннель с его помощью, а потом поверх пускаете тот же OpenVPN или что-то подобное.

В репозитории подробно описан принцип работы UDPspeeder. В основе лежит технология FEC (Forward Error Correction). С её помощью возможно обнаружить ошибки передачи данных и скорректировать их методом упреждения. Эффект реальный и очень заметный. В репозитории есть наглядный пример снижения количества потерянных пакетов без увеличения latency, что существенно увеличивает скорость передачи данных.

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

Настраивается UDPspeeder максимально просто и быстро. Работает только под Linux, есть пакет для openwrt.

# Запускаем на сервере:
./speederv2 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -f20:10
# Запускаем на клиенте
./speederv2 -c -l0.0.0.0:3333 -r 44.55.66.77:4096 -f20:10

Все запросы к порту 3333 клиента будут переадресовываться на порт 7777 сервера. Есть отдельная инструкция по настройке связки UDPspeeder + OpenVPN.

Если вам нужна готовая реализация VPN туннеля на базе UDPspeeder для быстрого запуска, можете взять tinyfecVPN от этого же автора. Там в пару команд настраивается VPN Site-to-Site.

Исходники - https://github.com/wangyu-/UDPspeeder

#vpn #openvpn
На моём канале время от времени бывает реклама хостинга. Причём рекламируются как крупные облачные провайдеры, так и небольшие лоу-костеры. Крупных всегда обвиняют в том, что цены высокие, а лоу-костеров в том, что они ненадёжны.

Хочу прокомментировать последних, так как с ними наиболее показательные истории бывают. Хостеры заходят с каким-то временным промо тарифом, открытым в рекламных целях. Это убыточные линейки, которые покрываются рекламным бюджетом. Меня не удивляют люди, которые начинают возмущаться и предъявлять претензии, что купленный по промо тарифу сервер не надёжен. Сам таким был.

Несколько лет назад у провайдера ruvds появился промо тариф за 30 р. (❗️ считай, что даром). Давали виртуалку с минимальными ресурсами и внешним IP. Купить этот тариф было трудно, VDS тут же кончались после начала акции. Но мне в итоге удалось его получить. Он тормозил жутко, была масса негатива. Я даже помню в комментариях на хабре в корпоративной статье возмущался, что хостер только негатив собрал с помощью этого глючного и тормозного промо тарифа.

Что по факту? Прошло года 2-3, этот VDS я до сих пор использую, стоит 40 р. в месяц. Это отличное предложение для персонального VPN сервера. С тех пор и хостером активно пользуюсь. И вам много раз его рекомендовал. То есть реклама сработала на 100%.

К чему я всё это написал. Не надо строить завышенных ожиданий от дешёвых промо тарифов, которые явно ниже рынка. Это обычная реклама и замануха. Относитесь к ним правильно и используйте с пользой, особенно если условия будут и дальше неизменными. А если хотите надёжное решение, то это должен быть не лоу-костер с VDS на базе десктопного или очень старого железа, о котором вам ничего не скажут, а крупный хостер со своими ДЦ.

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

#хостинг
​​Нередко возникают ситуации, когда хочется знать, кто и какие приложения запускал на компьютере с системой Windows. Сделать это очень просто, так как у этой ОС есть встроенный функционал по логированию всего и вся, в том числе и информации о работе приложений, причём не только запуска.

Включить аудит приложений просто. Это можно сделать как в локальной политике одиночного компьютера, так и централизованно с помощью групповых политик. Настройка живёт по адресу:

Конфигурация компьютера ⇨ Конфигурация Windows ⇨ Параметры безопасности ⇨ Локальные политики ⇨ Политики аудита ⇨ Аудит отслеживания процессов.

После включения политики, необходимо её обновить:
> gpupdate /force

Теперь идём в журнал Windows, раздел безопасность и смотрим события с ID 4688 это запуск процесса и 4689 - завершение. Далее эти логи можно отправить, к примеру, в ELK и там хранить и анализировать. Если нужен только мониторинг, то можно взять Zabbix, настроить триггер на запуск какого-нибудь нежелательного приложения.

#windows #security
​​Какой самый простой способ передать ссылку или небольшой текст с компьютера на смартфон? Правильно, отправить его самому себе через Telegram 😎 Всегда так делаю. А если нет мессенджера? Тут уже начинают шевелиться извилины, так как задача становится не такой уж и тривиальной.

Можно воспользоваться очень простым скриптом на Python, который будет генерировать QR-код из содержимого буфера обмена. Для этого нужна пара библиотек: qrcode и pyperclip.
# pip install qrcode pyperclip
Теперь можно запустить скрипт:
# git clone https://github.com/Louise-h-aa/qrclip.git
# cd qrclip
# python3 qrclip.py

Содержимое буфера обмена окажется в виде QR-code прямо в консоли. Я проверял локально на WSL. Не знаю, сработает ли в консоли сервера. Мне кажется, что нет, так как при подключении по ssh у сервера доступа к локальному буферу не будет.

Я решил сам немного переделать скрипт, чтобы текст для qr-кода можно было передать либо как параметр, либо ввести его в консоль, если скрипт запущен без параметров:

#!/usr/bin/env python3

import sys
from qrcode import QRCode, ERROR_CORRECT_L
def print_qr_code(text: str) -> None:

  qr = QRCode(
    version = 1,
    error_correction = ERROR_CORRECT_L,
    box_size = 10,
    border = 4
  )
  qr.add_data(text)
  qr.make(fit = True)
  qr.print_tty()

if __name__ == "__main__":
  if len (sys.argv) > 1:
    print_qr_code(sys.argv[1:])
  else:
    text: str = input()
    print_qr_code(text)

Это, кстати, наглядный пример простоты изучения Python. Я не умею на нём программировать, но код настолько простой и человекочитаемый, что я просто посмотрел на него, загуглил, как реализуется текстовый ввод в python, а так же передачу текста через параметры командной строки. Посмотрел, как пишется простой цикл и всё реализовал. Потратил буквально 30 минут. Стало интересно самому разобраться. В итоге всё получилось. Завис только на одном моменте. Не знал, как вывести список, пропустив нулевой элемент в нём. В итоге нашёл - [1:].

Теперь можно передать нужную строку в качестве параметра запуска:
# python3 qrclip.py https://ya.ru https://serveradmin.ru

Если хотите изучать программирование, начните с Python. Я помню как посмотрев пару бесплатных уроков, написал простенького бота. Даже публиковал его здесь, но его сразу сломали :) В целом, python очень простой. Его даже приятно изучать и что-то писать, не то что bash.

#python
​​Когда речь заходит о программном шлюзе, первое, что приходит в голову это наиболее популярный Pfsense. Более продвинутые, кто предпочитает настраивать шлюзы через cli, вспомнят про VyOS. Но есть ещё один продукт, который я лично использовал - IPFire.

Это аналог Pfsense, только на Linux. Причём сделан не на основе готового дистрибутива, а собран из исходников самостоятельно авторами. То есть там под капотом не какой-то условный debian или centos. Поэтому там нет ничего лишнего. Разработчики заявляют, что всё собрано и оптимизировано конкретно под задачи маршрутизации и фаервола. Отсутствие лишних компонентов повышает безопасность и стабильность системы.

Всё управление через web браузер, в консоль ходить не надо. На мой взгляд IPFire проще сделан, меньше функционала, но и настроить, разобраться быстрее. Лично мне по логике работы и организации функционала IPFire понравился больше Pfsense, когда я его использовал. Но это субъективно, не претендую на какой-то анализ и сравнение.

Основные задачи, которые решает IPFire:
DHCP и DNS сервер.
Firewall. Сделан на базе iptables.
QOS.
Intrusion Prevention System (IPS). Построена на базе Suricata.
Web Proxy. Под капотом Squid.
Ipsec и OpenVPN.

В IPFire удобно организована настройка OpenVPN через браузер. Уже даже для одной этой задачи имеет смысл его рассмотреть и попробовать. Из необычного, там реализован функционал 2FA для соединений на базе типовых сертификатов (с паролем или без) и дополнительного pin кода.

Функционал можно расширять с помощью дополнений. Их там довольно много. Можно реализовать типовой функционал для linux дистрибутивов: Samba, NFS Server, Bacula, Borg Backup, Postfix и т.д. Можно поставить Zabbix Agent, чтобы организовать нормальный мониторинг системы. В веб интерфейсе есть русский язык.

Проект живой, регулярно обновляется. Последний релиз - 17 сентября этого года. Сам софт бесплатный, исходники открыты. Компания зарабатывает продажей готового железа с преднастроенной системой.

Думаю, среди читателей найдётся немало людей, кто использовал или использует IPFire. Поделитесь, почему остановились именно на нём, а не каком-то другом продукте.

Сайт - https://www.ipfire.org
Исходники - https://github.com/ipfire/ipfire-2.x

#gateway #firewall
В Linux есть необычное псевдоустройство /dev/urandom для генерации псевдослучайных чисел. Его много где используют. Например, забить какой-то диск случайными данными для полного удаления предыдущей информации:

# dd if=/dev/urandom of=/dev/sda3

С помощью /dev/urandom удобно генерировать пароли с заданной длиной и сложностью. Пример простого пароля из 8 символов, с строчными и заглавными буквами:

# < /dev/urandom tr -dc 'a-zA-Z' | fold -w 8 | head -n 1

Добавляем сюда цифры и увеличиваем длину:

# < /dev/urandom tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1

Добавляем некоторые спецсимволы и ещё увеличиваем длину:

# < /dev/urandom tr -dc 'a-zA-Z0-9#!@' | fold -w 12 | head -n 5

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

Можно добавить алиас в .bashrc, чтобы быстро генерировать пароли:

alias randpw='< /dev/urandom tr -dc 'a-zA-Z0-9#!@' | fold -w 12 | head -n 5'

Перечитываем .bashrc и проверяем:
# source .bashrc
# randpw
oDQ7Fw@a#QhJ
364UG@j8T1Mm
UxwRZU9K1bIH
GfToKOi#fmgl
ZB!Qv6eI#cp5

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

А вы как генерируете пароли? Если кто-то знает, подскажите, как в примерах с urandom сделать так, чтобы в каждом пароле обязательно присутствовал спецсимвол, число и буква. Я не могу сообразить, как это сделать. В текущем варианте это всё рандомно и иногда спецсимволов нет, поэтому приходится по несколько паролей выводить, чтобы точно получить нужный.

#bash #linux
Я решил в конце каждого месяца публиковать топ постов по нескольким параметрам. Мне кажется, что это может быть интересно и полезно. Но это только моё мнение, потому что я веду канал и мне эта информация нужна.

Проголосуйте за этот пост 👍, если хотите видеть такой топ раз в месяц или 👎, если он не нужен.

📌 Больше всего просмотров:
Подборка бесплатных обучающих материалов (7602)
RouterOS Scanner от Microsoft (6898)
HTTP сервер на базе Python для передачи файлов (6851)

📌 Больше всего комментариев:
Промо тариф Aeza (193)
Мониторинг каналов в Mikrotik (119)
Обзор Nextcloud (106)

📌 Больше всего пересылок:
Подборка бесплатных обучающих материалов (679)
HTTP сервер на базе Python для передачи файлов (615)
Работа с файлами и директориями в bash (428)

📌 Больше всего реакций:
Работа с файлами и директориями в bash (198)
HTTP сервер на базе Python для передачи файлов (174)
Выдвижной ящик для слота 5,25 системного блока (109)
Падение моего сайта, анализ проблемы (109)

#топ
Media is too big
VIEW IN TELEGRAM
Прикольный старый ролик про админов, который я впервые увидел на днях. Решил с вами поделиться, может кто не видел. Первый раз можно посмотреть без звука для более острых впечатлений. А потом уже со звуком. Центральной шуткой тут является настройка циски. Девчуля вводит команду:

switchport trunk allowed vlan 265

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

Все ролики из этого цикла (всего 3):
https://www.youtube.com/watch?v=rjqe8T5XBmw
https://www.youtube.com/watch?v=WNnJ0gjPgEs
https://www.youtube.com/watch?v=ncXTQ83eW7Q

#юмор