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

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Наступила новая эпоха, а проблемы остались всё те же. Хочу рассказать вам одну поучительную историю, которую я узнал от подписчика. История банальна, так как там отсутствовали бэкапы и системный подход, но нова, потому что не обошлось без ChatGPT.

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

Дальше мне рассказали историю проблемы. База данных очень сильно нагружала процессор. Автор вызвался помочь с решением проблемы, но не рассчитал свои силы. Он запустил mysqltuner.pl и получил некоторые рекомендации от него. Когда он их внёс, в логе были какие-то ошибки. Тогда он решил спросить по ним совета у ChatGPT, и он предложил переместить файлы ib_logfile0 и ib_logfile1, чтобы при запуске были созданы новые. После этих манипуляций база перестала вообще стартовать.

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

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

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

Когда вы выполняете какие-то манипуляции в работающих сервисах, всегда держите в голове мысль: "А что я будут делать, если после моих изменений сервис не запустится". Об этом нужно подумать заранее, даже если вы точно знаете, что будете делать. Вы можете банально ошибиться, перепутать консоли и грохнуть работающие базы. Это далеко не редкость, и я сам путал консоли неоднократно.

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

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

#backup #история
​​Для ОС Windows со стародавних времён существуют различные твикеры, которые могут быть как безвредными и полезными, так и вредными и бесполезными. Я вас хочу познакомить с полезной программой такого рода, которая использует только встроенные возможности самой Windows, ничего принудительно не отключает и не удаляет, типа обновлений или Windows Defender. Это проект с большой историей и хорошей репутаций. Его можно считать помощником по настройке Windows 10 и 11. Речь пойдёт о наборе скриптов Sophia-Script-for-Windows и приложении SophiApp на его основе.

Как я уже сказал, эти программы работают на базе стандартных возможностей настройки ОС Windows с помощью PowerShell. Первая ссылка этот как раз скрипт на powershell, а вторая — приложение на C#, реализующее этот же функционал. Полностью историю создания и возможности можно узнать из статьи самого автора на хабре.

📌 Основные возможности программы:

Быстрая настройка параметров конфиденциальности (телеметрия, сбор диагностических данных ОС, всевозможные настройки в браузере и т.д.)
Настройка внешнего вида проводника (значки рабочего стола, флажки элементов, поиск, тема и т.д.)
Некоторые системные настройки (очистка диска, гибернация, схема электропитания и т.д.)
Удаление UWP приложений и игр, OneDrive.
Управление планировщиком заданий (базовые задачи, которыми имеет смысл управлять пользователю)
Некоторые настройки безопасности (аудит, песочница Windows, Defender и т.д.)

В настройках нет ничего такого, чего бы вы не смогли сделать вручную, перемещаясь по многочисленным настройкам Windows. Начиная с Windows 10 настройка системы реально усложнилась. Приходится тратить много времени, чтобы вспомнить и отыскать ту или иную настройку. Тут автор попытался собрать то, что посчитал наиболее полезным в единый интерфейс. Удалить Defender или отключить обновления с помощью SophiApp не получится.

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

Sophia-Script-for-Windows / SophiApp

#windows
​​Расскажу про простой и современный способ быстро организовать временный мониторинг Linux сервера с возможностью посмотреть результаты в веб интерфейсе. Для этого нам понадобится утилита glances и influxdb.

Glances в консоли показывает нагрузку на сервер в режиме реального времени. Эта программа сама по себе неплоха, а конкретно в нашей задаче удобна тем, что умеет выгружать метрики в режиме реального времени в influxdb. Influxdb — СУБД для хранения временных рядов. Имеет свой собственный веб интерфейс, что тоже удобно для нашей задачи.

Всё манипуляции я буду проводить на Debian 11. Установим туда glances определённой версии через pip. В данном случае 3.2.5. В самой последней, судя по всему, какой-то баг с экспортом данных, она падает через несколько секунд после запуска. В 3.2.5 проблем не было.
# apt install python3-pip
# pip install glances[all]==3.2.5
# pip install influxdb-client

Можете запустить glances в консоли и посмотреть, что она из себя представляет. Теперь запустим influxdb. Для простоты будем использовать docker. Запустить можете как локально, так и на любом другом хосте. Я запущу тут же, предварительно создав директорию для хранения данных:
# mkdir ~/influxdb
# docker run -d -p 8086:8086 \
-v ~/influxdb:/var/lib/influxdb2 influxdb:latest

Идём в консоль контейнера и инициализируем базу данных:
# docker exec -i -t 6ee6223a3ce3 bash
# influx setup
> Welcome to InfluxDB 2.0!
? Please type your primary username serveradmin
? Please type your password ***********
? Please type your password again ***********
? Please type your primary organization name serveradmin
? Please type your primary bucket name glances
? Please type your retention period in hours, or 0 for infinite 0
? Setup with these parameters?
 Username:     serveradmin
 Organization:   serveradmin
 Bucket:      glances
 Retention Period: infinite
 Yes
User Organization Bucket
serveradmin serveradmin glances

Теперь создадим токен для доступа к оrganization serveradmin:
influx auth create \
 --org serveradmin --read-authorizations --write-authorizations \
 --read-buckets --write-buckets --read-dashboards \
 --write-dashboards --read-tasks --write-tasks \
 --read-telegrafs --write-telegrafs --read-users \
 --write-users --read-variables --write-variables \
 --read-secrets --write-secrets --read-labels \
 --write-labels --read-views --write-views --read-documents \
 --write-documents --read-notificationRules --write-notificationRules \
 --read-notificationEndpoints --write-notificationEndpoints \
 --read-checks --write-checks --read-dbrp \
 --write-dbrp --read-annotations --write-annotations \
 --read-sources --write-sources --read-scrapers \
 --write-scrapers --read-notebooks --write-notebooks \
 --read-remotes --write-remotes --read-replications --write-replications

В конце получите токен вида wEgrY0Y1wY1R1S-qCiKxA== (в оригинале он длиннее, сократил для удобства) Он будет нужен для конфигурации glances. Создаём её в директории ~/.config/glances/glances.conf
[influxdb2]
host=localhost
port=8086
protocol=http
org=serveradmin
bucket=glances
token=wEgrY0Y1wY1R1S-qCiKxA==

Host укажите свой. Если запустили локально, то это localhost, если удалённо, то укажите реальный адрес. Теперь можно идти в web интерфейс influxdb по адресу http://172.25.225.173:8086 (измените ip на свой) и просматривать графики. Для этого перейдите в раздел Load DataBuckets и выберите созданный бакет Glances. Дальше, думаю, разберётесь, как выводить данные. Пример ниже на картинке.

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

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

#мониторинг
Удаляли когда-нибудь рабочие базы данных? Я посидел, подумал, но не припоминаю такого. Вообще не помню, чтобы по ошибке удалял что-то нужное.

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

Сел так как-то за комп к одному сотруднику и по привычке очистил корзину в Outlook. У него глаза на лоб полезли. Задёргался аж, говорит, зачем ты это сделал? Он там зачем-то нужные письма хранил. Восстановить я это уже никак не мог. Объяснил ему, что так делать не надо. В некоторых случаях корзина может и автоматически очиститься.

#мем
​​Заметка на тему современных ноутбуков. После того, как пересел на Thinkpad T480, всё устраивало в плане производительности, кроме одного момента. Иногда при быстром переключении межу приложениями по Alt+Tab ощущался небольшой подлаг, даже если никакой особой нагрузки нет. Не сильно мешало, но раздражало. 

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

Решил вопрос бесплатной программой ThrottleStop. У неё уйма настроек, разбираться в которых нет ни желания, ни времени. Что конкретно мне помогло, уже не помню. Настроил по какой-то рекомендации на англоязычном ресурсе от владельца такого же ноута. Когда программа запущена, никаких подлагов нет, частота процессора не снижается. 

Если работаю от аккумуляторов (в этом ноуте их 2), не запускаю ThrottleStop. В итоге работает задуманное вендором энергосбережение. Надеюсь кому-то это будет полезным. Сейчас во всё современное оборудование внедряют энергосбережение, которое не всегда уместно.

Ниже скриншоты моих настроек ThrottleStop, где я что-то менял. Всё остальное по умолчанию оставлено.

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

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

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

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

Вот примерный список вопросов, на которые ответил я:
- Как Вы определяете цену за свою работу?
- Попадались ли ситуации, когда заказчик кидал с оплатой?
- Оформляются ли документы с заказчиком (договоры, ТЗ и пр.)?
- Как обстоят дела с лицензиями?
- Как Вы думаете, почему после собеседования тебя, как ИП, потом часто отказывают в сотрудничестве?
- Можешь вспомнить своего первого клиента после ухода с работы?
- Владимир, а ты работаешь один или у тебя есть сотрудники?

Ну и другие мелкие вопросы. Здесь не стал оформлять всё в отдельную публикацию, потому что по объёму будет превышение и влезет всего 2-3 вопроса с ответами. В комментариях на сайте удобнее будет всю переписку прочитать.

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

https://serveradmin.ru/kak-sistemnomu-administratoru-otkryit-ip

#разное
​​▶️ Я уже рассказывал про классный мониторинг Uptime Kuma, который можно развернуть у себя. Он умеет мониторить сайты и всё, что с ними связано, а также делать простые icmp проверки, проверки tcp портов и Docker контейнеров.

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

Если не знакомы с Uptime Kuma, рекомендую обратить внимание. Очень приятный и удобный мониторинг доступности хостов и сервисов. Активно поддерживается и развивается. В видео подробно про него рассказано на примере уже настроенного большого мониторинга.

https://www.youtube.com/watch?v=7gN9_Ph-9Z4

#мониторинг #видео
​​▶️ В интернете масса статей и видео по настройке одного из самых популярных веб серверов Nginx. Разработчики в какой-то момент озаботились тем, чтобы самим выпустить канонические руководства, по которым стоит настраивать их веб сервер. Эти руководства они поддерживают и по мере необходимости обновляют.

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

https://youtube.com/playlist?list=PLGz_X9w9raXf748bzuGOV6XJv7q3wLxhZ

🎓 Список тем из него:

How to define and publish APIs using NGINX Controller
How to Set Quotas with NGINX Plus
How to Set Up SSL with NGINX
How to Serve Static Content
How to Install NGINX on Debian and Ubuntu
How to create an API Dev Portal using NGINX Controller
Key Files, Commands, and Directories with NGINX
How to Install NGINX on CentOS and Red Hat
How to Install NGINX Amplify on Linux
NGINX Unit: From Zero to Lift Off
Dynamic SSL Key Management with NGINX
Getting Started with NGINX Service Mesh
NGINX as an API Gateway
How to Configure NGINX Plus as a WAF Using NGINX App Protect
NGINX App Protect Denial of Service (DoS) Overview
Configure NGINX as a Reverse Proxy
How to Streamline API Operations with API Connectivity Manager

Все видео на английском. Если не знаете его, можно спокойно всё понять через переводчик в режиме реального времени от Яндекса, или с английскими субтитрами. Часть тем актуальна для только версии Plus.

#nginx #видео #обучение
​​Сколько вы знаете способов увидеть, под каким пользователем работаете в ОС на базе Linux? На практике эта информация нужна не так часто, если ты работаешь в консоли. Обычно и так знаешь, под каким пользователем подключаешься. Также его видно в строке ввода терминала в bash. Исключения бывают, когда приходится работать под отдельным пользователем для настройки какого-то софта. Например, postgresql. Удобнее зайти под пользователем postgres и работать в его окружении.

Традиционные способы через утилиты: whoami, id , logname, w и т. д. Можно посмотреть через переменные окружения: echo $LOGNAME и echo $USER. Все эти способы вроде бы похожи друг на друга, но на самом деле есть некоторые принципиальные отличия.

К примеру, если запустить whoami и id под sudo, вы увидите пользователя root, а в logname — пользователя, под которым вы запускаете sudo. Это может быть полезно, если выполняете какой-то скрипт под sudo, и вам нужно сделать проверку пользователя, который его запускает. Например, разрешить запуск скрипта только если он запущен конкретным пользователем (script_allow_user).

if [[ "$(logname)" = 'script_allow_user' ]]
then
echo "Start script execution..."
...............................................
else
echo "This user is not allowed to run the script"
fi

Отдельно стоит упомянуть утилиту из состава systemd — loginctl. С её помощью можно узнать массу всего не только об активном пользователе, но и о сессиях, и даже управлять ими.
# loginctl user-status

#bash #script
​​Небольшой полезный сервис, с помощью которого вы можете очень быстро настроить доступ к локальному сервису через интернет. Речь пойдёт про pinggy.io. Покажу сразу на конкретном примере, что это такое.

Допустим, вы запускаете http сервер на локальном сервере, чтобы получить доступ к файлам в директории:

# cd /var/log
# python3 -m http.server

Теперь по адресу http://172.25.228.79:8000/ вы сможете увидеть содержимое директории /var/log. Если вы хотите получить доступ к этой директории через интернет, то воспользуйтесь указанным сервисом:

# ssh -p 443 -R0:localhost:8000 -L4300:localhost:4300 a.pinggy.io

Эта команда выполнит переадресацию локального порта 8000 по ssh на сервер pinggy.io, который выдаст вам временное доменное имя и настроит доступ к вашему сервису через интернет. Ссылка будет вида https://ranfgxbznvwfo.a.pinggy.io. Пройдя по ней, вы попадёте на свой локальный веб сервер. Статистику по действиям пользователей увидите прямо в консоли сервера.

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

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

В заметке использовался веб сервер python и переадресация портов ssh. Веб сервер был взят для примера. Настроить доступ через интернет можно к любому локальному сервису.

#сервис #бесплатно
​​Давно не было заметок о Zabbix, хотя я с ним регулярно работаю. В основном привычные настройки делал. Из последнего — настраивал мониторинг сайтов, docker контейнеров, бэкапов. Стандартный шаблон для Docker очень нравится. Полезные метрики, оповещения, всё на автообнаружении сделано. Ручной работы нет. Статьи в целом актуальны по смыслу и идеям реализации, но где-то в деталях и картинках устарели. Планирую после релиза 7.0 весь раздел по Zabbix на сайте актуализировать.

От команды Zabbix последнее время не было каких-то значимых новостей, заметок в блоге или на ютуб канале. Я за всем этим слежу. Из более ли менее интересных событий отмечу следующие:

Появился шаблон оповещений для интеграции с новой технологией Event-Driven Ansible.

На днях в блоге вышла очень хорошая статья, описывающая принципы создания новых метрик с использованием различных преобразований. Для примера там взяли типовой шаблон для Nginx и показали, как к базовым метрикам добавить новые. Например, показать динамику изменения числа запросов к веб серверу и вывести метрику на дашборд. Таких примеров там много, статья большая. Рекоvендую, если осваиваете Zabbix.

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

В Zabbix 6.4 появилась возможность выгружать события из Zabbix в режиме реального времени в другие системы. В статье описан пример реализации этой функциональности.

Цикл видео про настройку мониторинга Kubernetes с помощью Zabbix (1, 2, 3 части)

25 мая будет вебинар на русском языке — Обзор системы мониторинга Zabbix.

💡Релиз Zabbix 7.0 LTS обещают к концу этого года. Думаю, перенесут на начало 2024, как это обычно бывает. Там много полезного обещают завести. Например, сбор метрик из сторонних TSDB, наконец-то обновление раздела Inventory. Я думал, они его в конце концов уберут. Обновление мониторинга сайтов обещают, но пока даже не начали разработку. Скорее всего отложат.

#zabbix
​​Пользуюсь утилитой screen почти столько же лет, сколько использую Linux. В основном для того, чтобы не завершалась ssh сессия после разрыва соединения. И только на днях один подписчик написал, что её можно использовать для доступа другого пользователя к своей сессии или наоборот. Не знал об это и никогда не видел. Делал когда-то заметки про бесплатные сервисы, которые позволяют шарить консоль, по типу того, как это происходит в teamviewer или anydesk, только для консоли.

Если подключились под одной учётной записью к серверу, то любому из подключившихся достаточно создать сессию screen:
# screen -d -m -S shared
И обоим подключиться к ней:
# screen -x shared
Теперь у обоих одна консоль на двоих. Все команды отображаются у обоих подключившихся.

Для разных пользователей действия другие. Для начала необходимо установить suid бит, чтобы screen всегда запускался с привилегиями суперпользователя:
# chmod u+s $(which screen)
# chmod 755 /var/run/screen
# rm -fr /var/run/screen/*
Теперь запускаем, к примеру, сессию у root и открываем доступ для пользователя zerox:
# screen -d -m -S shared
# screen -r shared
Зайдя в сессию от root, разрешаем подключиться пользователю zerox. Для этого в терминале нажимаем комбинацию Ctrl-a и вводим команду:
:multiuser on
Потом снова Ctrl-a и команду:
Ctrl-a :acladd zerox
Подключаемся пользователем zerox и оказываемся в одной сессии с root:
# screen -x root/shared

Постороннему пользователю можно выдать как полные права, так и только на чтение. По умолчанию даются полные. Чтобы дать только на чтение, нужно добавить команду в сессии через Ctrl-a:
:writelock on

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

#linux #screen
​​Мне подсказали интересную программу для управления сетевыми устройствами — Mupsbox. Вышла она в 2019 году и изначально поддерживала только микротики. Сейчас поддерживает помимо него остальных популярных вендоров (Cisco, HP, Dlink, Huawei и т.д.). Привлекла она меня в первую очередь тем, что бесплатная версия имеет хорошую функциональность, которая позволяет полноценно использовать программу.

🟢 Основные возможности Mupsbox:

Управление сетевыми устройствами.
Бэкап, восстановление, сравнение архивов и конфигураций.
Подсчёт трафика.
Syslog сервер для сбора логов.
Функциональность HotSpot для доступа в сеть.

Mupsbox представляет из себя приложение под Windows с типовым установщиком. База локальная, хранится в firebird. Выглядит немного непривычно, потому что какого-то стандарта для такого рода приложений нет, но я довольно быстро установил и разобрался, немного подсмотрев инструкцию.

🔴 Ограничения бесплатной версии:

Добавление устройств и управление без ограничений.
Бэкап только 10 устройств.
Подсчёт трафика только для 3-х устройств, хранение статистики — неделя.
Syslog сервер только для 1 устройства, хранение лога — неделя.
Hotspot для одного устройства и только 5 аутентификаций в сутки.

Программа состоит из основного приложения и набора служб Windows, которые настраиваются и запускаются по необходимости. Отдельная служба ftp, sftp, tftp для сбора логов, отдельная для syslog сервера, отдельная для web интерфейса и т.д. Программа умеет отправлять оповещения по email или telegram.

Стоимость платных лицензий невысока. Разработчики из России, и тут есть компания, которая готова их продавать. Все цены и контакты есть на сайте. Даже бесплатная версия позволяет добавлять устройства без ограничений, что само по себе уже удобно, если нет никаких других программ для этих целей. Будет всё в одном списке с возможностью посмотреть основную информацию и быстро подключиться к устройству. Туда можно и любые Linux серверы добавлять по SSH, но я не совсем понял, для чего это может быть нужно.

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

Сайт / Обзор / Telegram группа

#network #mikrotik #backup
Думаю, многие из вас помнят приятную халяву от Oracle, когда можно было получить несколько бесплатных виртуалок навсегда. У меня была парочка, которая успешно работала длительное время, пока не случился февраль 2022. После этого все учётные записи пользователей из РФ были заблокированы. Я особо сильно не расстроился, так как очевидно, что подобную халяву можно использовать только для каких-то тестов. У меня там личные VPN жили.

Недавно увидел видео на ютубе на одном из каналов, которые регулярно смотрю — БЕСПЛАТНЫЕ СЕРВЕРА ORACLE. ТЕПЕРЬ БЕЗ КАРТЫ!. Информация заинтересовала, решил проверить. Сразу скажу итог — то, что описано, больше не работает в том виде, как там показано. Пишу эту заметку для того, чтобы вы не тратили время и лишний раз не расстраивались.

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

У меня для всякой санкционки есть отдельная виртуалка с чистым браузером и автоматическим подключением после загрузки к VPN серверу в США. С её помощью я без проблем и лишних заморочек обхожу различные ограничения. Так что попробовать эту методу у меня не составило труда. Всё сделал, как описано, но при регистрации всё равно попросили платёжную карту предоставить. Судя по свежим отзывам в комментариях, это у всех так теперь.

Написал заметку, чтобы вы не тратили время на этот способ, если где-то его увидите. Ну и если вдруг у кого-то всё же получилось зарегистрировать учётку в Oracle Cloud и получить виртуальные сервера бесплатно, то расскажите, как вы это сделали.
​​Веб сервер Nginx уже давно умеет писать логи в json формате. В настройке по умолчанию используются текстовые логи. Да и почти везде, где мне приходится видеть логи веб сервера, они в текстовом формате. Если ещё не используете json формат для логов, то предлагаю вам пересмотреть свои привычки и использовать. Это удобно и для ручного просмотра логов, и для парсинга в тех или иных системах.

Настроить json логи очень просто. Вот пример для привычного формата combined, только в json. Добавляем в основной конфиг в раздел http { }.

log_format json_combined escape=json
 '{'
  '"time_local":"$time_local",'
  '"remote_addr":"$remote_addr",'
  '"remote_user":"$remote_user",'
  '"request":"$request",'
  '"status": "$status",'
  '"body_bytes_sent":"$body_bytes_sent",'
  '"request_time":"$request_time",'
  '"http_referrer":"$http_referer",'
  '"http_user_agent":"$http_user_agent"'
 '}';

И дальше либо в общую настройку, либо в настройку логов виртуального хоста добавляем:

access_log /var/log/nginx/access.log json_combined;

Теперь, если отправить логи в ELK или Zabbix, их обработка будет упрощена, так как для json формата там есть готовые обработчики. А в консоли логи удобно смотреть с помощью jq. Смотрим весь лог:

# jq '.' access.log

Смотрим только список урлов, к которым были обращения:

# jq '.request' access.log

Выводим полные записи логов, где только 404 коды ответов:

# jq '. | select(.status=="404")' access.log

Теперь то же самое, только выводим не полные строки, а урл, где код ответа был 404:

# jq '. | select(.status=="404") | .request' access.log

Добавим сюда же информацию о времени запроса:

# jq '. | select(.status=="404") | .time_local,.request' access.log

Думаю, идею вы поняли. Json смотреть проще, быстрее и гибче, нежели грепать или обрабатывать утилитами типа sed, awk и т.д. Надо только немного изучить синтаксис jq. Если хотите получить значения без кавычек " ", то добавьте к jq ключ -r:

# jq -r '.request' access.log

Все переменные, которые вы можете использовать в логе, перечислены в документации к модулю ngx_http_core_module. Я обычно добавляю некоторые переменные к стандартным, а именно:

$request_length, $upstream_addr,
$upstream_status,
$upstream_response_time,
$upstream_connect_time,
$upstream_header_time,
$server_name,
$ssl_protocol,
$ssl_cipher.

#nginx #jq
​​Ранее я пробовал и рассказывал, как настроить VDI (Virtual Desktop Infrastructure) на базе Proxmox. Для этого нужно немного поднастроить гипервизор и использовать PVE-VDIClient для подключения к рабочим местам. Читайте, кому интересно, отдельную заметку по этому поводу.

С тех времён у меня в закладках осталась система Ravada VDI, которую я хотел попробовать, но так руки и не дошли. Нужен железный сервер, но он так и не подвернулся под руку. Поэтому рассказываю как есть по информации с их сайта.

Ravada — open source проект для организации VDI на базе гипервизора KVM. Разворачивается на типовых дистрибутивах: Debian, Ubuntu или Fedora. Для установки есть собранные deb и rpm пакеты, так что установка очень простая — скачиваем и устанавливаем пакет. Пример установки на Debian. Для хранения информации необходим MariaDB сервер. В комплекте с Ravada идёт веб сервер. Всё управление системой выполняется через браузер.

Судя по документации, настройка простая и быстрая. С помощью Ravada можно организовать рабочие места как на Linux, так и Windows. Для подключения к виртуальным машинам можно использовать virt-viewer. Подключение работает по протоколу SPICE. Есть интеграция с LDAP сервером. Пользователей можно брать оттуда.

Проект мне показался интересным и полезным. Бесплатных продуктов по данной тематике почти нет. Это удел крупных корпоративных систем за много денег. А для какого-нибудь учебного класса система, подобная Ravada, будет в самый раз. К тому же она активно развивается. Регулярно выходят новые релизы.

Сайт / Исходники
Тема тюнинга сетевого стека очень узкая и сложная. В сети в основном все перепечатывают статьи друг у друга. Когда изучал тему, сразу это бросилось в глаза. За основу имеет смысл взять вот эти материалы, которые мне понравились больше всего:

Описание некоторых sysctl переменных ядра Linux
Настройка ядра Linux для тяжелых проектов и защиты от DDOS
Настройка Linux для HL и защиты от DDoS
Когда TCP-сокеты отказываются умирать

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

📌 Увеличиваем значение tcp_max_orphans, которое отвечает за максимальное число осиротевших (не связанных ни с одним процессом) сокетов TCP. Каждый такой сокет съедает примерно 64 Кб памяти. Так что параметр нужно сопоставлять с доступной памятью на сервере.
net.ipv4.tcp_max_orphans = 65536

📌 Уменьшаем tcp_fin_timeout (по умолчанию 60). Параметр отвечает за максимальное время пребывания сокета в состоянии FIN-WAIT-2. Это состояние используется в тех случаях, когда другая сторона не закрыла соединение. Каждый сокет занимает порядка 1.5 Кб памяти, что может подъедать её, когда их очень много.
net.ipv4.tcp_fin_timeout = 10

📌 Параметры, отвечающие за проверку TCP соединений в статусе SO_KEEPALIVE: keepalive_time определяет время, через которое начнутся проверки после последней активности соединения, keepalive_intvl определяет интервал проверки, а keepalive_probes количество этих проверок.
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5

📌 Стоит обратить внимание на параметры net.ipv4.tcp_mem, net.ipv4.tcp_rmem, net.ipv4.tcp_wmem. Они очень сильно зависят от памяти на сервере и в момент загрузки системы вычисляются автоматически. В общем случае их трогать не обязательно, но иногда можно и вручную подредактировать в сторону увеличения значений.

📌 Отключаем (по умолчанию включено) передачу syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета.
net.ipv4.tcp_syncookies = 0

📌 Отдельное внимание алгоритму, который используется для контроля перегрузки в TCP сетях. Их много (cubic, htcp, bic, westwood и т.д.) и однозначно сказать, что лучше использовать, трудно. В разных схемах нагрузки алгоритмы показывают разные результаты. Управляет этим параметр ядра tcp_congestion_control:
net.ipv4.tcp_congestion_control = cubic

📌 При большом количестве исходящих соединений сервера может не хватать локальных портов для них. По умолчанию используется диапазон 32768 - 60999. Его можно расширить:
net.ipv4.ip_local_port_range = 10240 65535

📌 Включаем защиту от TIME_WAIT атак. По умолчанию она отключена.
net.ipv4.tcp_rfc1337 = 1

📌 Максимальное число открытых сокетов, ждущих соединения, по умолчанию имеет довольно низкое значение. В ядрах до 5.3 это 128, в 5.4 увеличили до 4096. На нагруженных и мощных серверах имеет смысл увеличить:
net.core.somaxconn = 16384

📌 На мощных и нагруженных серверах можно увеличить стандартные значения размера буфера приёма и передачи для всех соединений. Параметр измеряется в байтах. По умолчанию это 212992 или 208 КБ.
net.core.rmem_default = 851968
net.core.wmem_default = 851968
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912

📌 Отключаем локальные перенаправления ICMP пакетов. Делать это стоит только в том случае, если ваш сервер не выполняет роль маршрутизатора, то есть у вас обычный веб сервер.
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Дополнительно можно вообще отключить ответ на ICMP запросы на уровне ядра. Я сам так не делаю обычно, но видел компанию, где вообще все сервера не отвечали на пинги.
net.ipv4.icmp_echo_ignore_all = 1

#linux #sysctl #network
▶️ Если кто-то ещё не видел, предлагаю насладиться просмотром великолепного саркастического ролика на тему работы технической поддержки по телефону: The Expert: IT Support.

 Оригинал:
https://www.youtube.com/watch?v=ZOzzRlc_qho
 Дубляж:
https://www.youtube.com/watch?v=F0T0Y91npYg
Мне лично оригинал намного больше понравился.

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

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

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

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

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

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

В общем, я смирился и уезжать не стал. Остался ночевать. Побоялся уехать, а то потом придётся возвращаться, чтобы перезагружать GSM модуль. Не было уверенности, что потом всё заработает само. В итоге ночью связь появилась, управление заработало. Утром я всё настроил и уехал домой.

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

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

Я не сторонник автоматизации в доме. Хотя казалось бы, со всем этим работаю и разбираюсь. Купить приборы, сервачок поставить, WiFi и т.д. Вот из-за того, что разбираюсь, и не хочу связываться. Пусть хоть дома всё будет чётко и по старинке — пришёл, шлёпнул по выключателю и всё работает. Система реального времени. Котёл тоже переделаю, когда перееду постоянно жить, а не наездами.

#юмор
▶️ Rebrain наконец-то стали выкладывать некоторые свои вебинары в публичный доступ. Теперь можно их пропускать и откладывать на потом 😁 И зашли сразу с козыря. Выложили вебинар:

Networks by Rebrain: Траблшутинг сетевых сервисов. Инструменты и утилиты для диагностики
https://www.youtube.com/watch?v=5Ppg5PHQFH4

Я смотрел два вебинара с этим ведущим. Очень понравилось. Ольга чётко всё рассказывает, в теме разбирается отлично. Видно, что к вебинарам готовится: план мероприятия, теория, подготовленная лаба, практика. На одном из вебинаров, Сегментация сети без разделения на подсети (интересная и новая для меня тема), не удержался и выразил своё восхищение 👍

В общем, рекомендую. Ольга Яновская, Василий Озеров, Андрей Буранов. Их стараюсь не пропускать, так как всегда гарантированно интересно и полезно.

#видео #обучение #network
На днях поставил себе на ноут программу по управлению оборотами вентилятора TPFanControl (https://thinkwiki.de/TPFanControl). Она вроде бы специально для серии Thinkpad написана, но может и с другими работает. Но это не суть. Таких программ много.

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

Стандартные алгоритмы управления вентилятором другие. Обычно хоть немного, но он шевелится и прибавляет обороты значительно раньше. Хотя температуры до 70-80 градусов вполне безопасны для процессора. Перегреться всё равно не успеет, он тротлить начинает сразу при перегреве.

У TPFanControl немного замороченный текстовый конфиг. Все настройки только в нём. После установки не понятно, с чего начать настройку. Если кому-то нужен, напишите в комментах, я свой выложу.

Обзор и настройка программы:
https://www.youtube.com/watch?v=5IPn0Jt7oA8

#железо
🎓 Недавно вспомнил про образовательную платформу stepik.org, где я когда-то давно проходил несколько курсов. Зашёл посмотреть, что там есть интересного и полезного. С удивлением заметил довольно много бесплатных и на вид неплохих курсов с тысячами отзывов и оценок.

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

📌 Несколько бесплатных курсов по Linux:

Введение в Linux — самый большой и масштабный бесплатный курс по Linux. В целом, отзывы положительные, но в последних видны упоминания, что курс уже устарел. На курсе даётся база, которая в Linux меняется очень слабо, так что скорее всего устаревание некритичное. К курсу полагается сертификат.

Основы Linux — более свежий и короткий курс по сравнению с предыдущим. Но объём всё равно внушительный. Не на один день.

Linux CLI — наиболее свежий курс с основами командной строки. Объём небольшой, на один вечер.

Архитектура параллельных вычислительных систем — название неговорящие, хотя сам курс про Linux. В нём учат настраивать линуксовую базу: apache, nginx, iptables, bind9 (dns), nfs, samba, docker.

#обучение