Делал сегодня чистую установку системы Debian 12 и очень удивился, когда установив htop, увидел у него новую вкладку I/O. Потёр глаза, посмотрел повнимательнее. Реально новая вкладка. Сразу понял, как на неё переключиться - с помощью клавиши tab. На вкладке показана нагрузка на диск каждого сервиса.
Htop - это утилита, которую я по умолчанию ставлю на все сервера, которые настраиваю, как замену стандартному top. Я вижу её каждый день. Но сегодня впервые увидел эту вкладку. Для проверки открыл несколько других серверов, на которых бываю регулярно, там этой вкладки нет. То есть это не я такой невнимательный. Её реально раньше не было.
Полез искать в инете информацию и узнал, что, начиная с версии 3.2.0, появилась настройка (войти по F2) Show tabs for screen, которая включает эту вкладку с I/O. В Debian 12 из базового репозитория ставится версия 3.2.2 и там эта опция включена по умолчанию. Увидел мнение, что якобы последнее время активно ведётся разработка и развитие htop.
Такое вот полезное нововведение. Обновляйте или ставьте htop, если ещё не поставили и пользуйтесь новыми возможностями. Они реально полезны и заменяют многие консольные утилиты, которые показывают примерно то же самое.
Это только я такой слоупок? Вы знали об этом нововведении?
#linux #htop
Htop - это утилита, которую я по умолчанию ставлю на все сервера, которые настраиваю, как замену стандартному top. Я вижу её каждый день. Но сегодня впервые увидел эту вкладку. Для проверки открыл несколько других серверов, на которых бываю регулярно, там этой вкладки нет. То есть это не я такой невнимательный. Её реально раньше не было.
Полез искать в инете информацию и узнал, что, начиная с версии 3.2.0, появилась настройка (войти по F2) Show tabs for screen, которая включает эту вкладку с I/O. В Debian 12 из базового репозитория ставится версия 3.2.2 и там эта опция включена по умолчанию. Увидел мнение, что якобы последнее время активно ведётся разработка и развитие htop.
Такое вот полезное нововведение. Обновляйте или ставьте htop, если ещё не поставили и пользуйтесь новыми возможностями. Они реально полезны и заменяют многие консольные утилиты, которые показывают примерно то же самое.
Это только я такой слоупок? Вы знали об этом нововведении?
#linux #htop
Протокол ipv6 получил уже довольно широкое распространение по миру. Но конкретно в нашей стране, а тем более в локальной инфраструктуре он присутствует примерно нигде. По крайней мере я ни сам не видел его, ни упоминания о том, что кто-то использует его в своих локальных сетях. В этом просто нет смысла. Это в интернете заканчиваются IP адреса, а не в наших локалках.
С такими вводными оставлять включенным протокол ipv6 не имеет большого смысла. Его надо отдельно настраивать, следить за безопасностью, совместимостью и т.д. Как минимум, надо не забывать настраивать файрвол для него. Если ipv6 вам не нужен, то логично его просто отключить. В Linux это можно сделать разными способами:
1. Через настройки sysctl.
2. Через параметры GRUB.
3. Через сетевые настройки конкретного интерфейса.
Я не знаю, какой из них оптимальный.
В разное время и в разных ситуациях я действую по обстоятельствам. Если система уже настроена и введена в эксплуатацию, то системные настройки трогать уже не буду. Просто отключу на всех сервисах, что слушают ipv6 интерфейс, его работу.
Если же система только настраивается, то можно в GRUB отключить использование ipv6. Это глобальный метод, который гарантированно отключает во всей системе ipv6. Для этого в его конфиг (
После этого нужно обновить загрузчик. В зависимости от системы выглядеть это может по-разному:
Первые три варианта с большей вероятностью подойдут для deb дистрибутивов (для Debian 12 точно подойдут), последняя для rpm. Лучше отдельно уточнить этот момент для вашей системы.
После этого нужно перезагрузить систему и проверить результат. В настройках сетевых интерфейсов не должно быть ipv6 адресов, как и в открытых портах:
Для Windows такую рекомендацию не могу дать, так как слышал информацию, что отключение ipv6 там может привести к проблемам с системой. Так что лучше этот протокол не трогать. Деталей не знаю, подробно не изучал тему, но что-то там ломается без ipv6.
Отключаете у себя ipv6?
#linux #network #ipv6
С такими вводными оставлять включенным протокол ipv6 не имеет большого смысла. Его надо отдельно настраивать, следить за безопасностью, совместимостью и т.д. Как минимум, надо не забывать настраивать файрвол для него. Если ipv6 вам не нужен, то логично его просто отключить. В Linux это можно сделать разными способами:
1. Через настройки sysctl.
2. Через параметры GRUB.
3. Через сетевые настройки конкретного интерфейса.
Я не знаю, какой из них оптимальный.
В разное время и в разных ситуациях я действую по обстоятельствам. Если система уже настроена и введена в эксплуатацию, то системные настройки трогать уже не буду. Просто отключу на всех сервисах, что слушают ipv6 интерфейс, его работу.
Если же система только настраивается, то можно в GRUB отключить использование ipv6. Это глобальный метод, который гарантированно отключает во всей системе ipv6. Для этого в его конфиг (
/etc/default/grub
), конкретно в параметр GRUB_CMDLINE_LINUX, нужно добавить значение ipv6.disable=1
. Если там уже указаны другие значения, то перечислены они должны быть через пробел. Примерно так:GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet ipv6.disable=1"
После этого нужно обновить загрузчик. В зависимости от системы выглядеть это может по-разному:
# dpkg-reconfigure grub-pc
# update-grub
# grub-mkconfig -o /boot/grub/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
Первые три варианта с большей вероятностью подойдут для deb дистрибутивов (для Debian 12 точно подойдут), последняя для rpm. Лучше отдельно уточнить этот момент для вашей системы.
После этого нужно перезагрузить систему и проверить результат. В настройках сетевых интерфейсов не должно быть ipv6 адресов, как и в открытых портах:
# ip a
# ss -tulnp
Для Windows такую рекомендацию не могу дать, так как слышал информацию, что отключение ipv6 там может привести к проблемам с системой. Так что лучше этот протокол не трогать. Деталей не знаю, подробно не изучал тему, но что-то там ломается без ipv6.
Отключаете у себя ipv6?
#linux #network #ipv6
Освоить синтаксис регулярных выражений – непростая задача. Не то, чтобы она очень сложная, но не так много людей работают с ними постоянно. Большинству сисадминов и девопсов они нужны время от времени для разовых задач. В связи с этим сильно погружаться в них и разбираться зачастую не имеет смысла. Через полгода отсутствия практики всё забудешь.
Предлагаю запомнить, если ещё не запомнили, несколько простых вещей, которые требуются более-менее регулярно. По крайней мере я их помню. Покажу на примере парсинга вывода команды
🟢 В регулярных выражениях используются так называемые якоря, или анкоры. Наиболее часто встречающиеся:
Если убрать
Регулярно залетаю в бан на своём сайте, когда тестирую что-то. Команду на разбан всегда подсматриваю.
Оба анкора вместе
🟢 Далее стоит знать специальные символы
Можно заменить переход на новую строку пробелом или удалить все табуляции:
или просто
Удаляем табы:
🟢 Часто приходится использовать оператор или в виде прямой черты
Выведет все строки, где встречается либо postfix, либо dovecot. Здесь же я сразу упомянул ещё один специальный символ регулярных выражений, который занимается экранированием -
И поиск нормально сработает. Дело в том, что у регулярных выражений существуют разные диалекты. Ключ
В общем-то, это всё, что лично я помню. Если нужно использовать шаблоны, диапазоны, условия, открываю шпаргалки. Сходу правильно написать регулярку у меня не получится.
📌 Полезные ссылки по теме:
▪️ regex101.com — проверка регулярных выражений
▪️ grex — автоматическое составление регулярок
▪️ regexper.com — схематическое изображение регулярок
▪️ ihateregex.io — готовые примеры регулярных выражений
▪️ autoregex.xyz — построение регулярок с помощью ИИ
▪️ stepik.org — бесплатный курс для изучения регулярок
▪️ regexlearn.com — обучение regex на русском языке
#regex
Предлагаю запомнить, если ещё не запомнили, несколько простых вещей, которые требуются более-менее регулярно. По крайней мере я их помню. Покажу на примере парсинга вывода команды
history
. Это подходящий вариант для демонстрации. 🟢 В регулярных выражениях используются так называемые якоря, или анкоры. Наиболее часто встречающиеся:
^
- начало строки, $
- конец. Сразу пример. Допустим, мы когда-то использовали certbot
в консоли. Если сделать grep по этому имени, то вылезут строки, где мы его устанавливали или запускали службу с таким именем, где смотрели логи и т.д. А нам нужна команда, которая в консоли начиналась с certbot:# grep '^certbot' ~/.bash_history
certbot certonly
Если убрать
^
, то будут выведены все строки, в которых где угодно встречалось слово certbot. То же самое, только с концом строки. Выведу команду, где в конце указан IP адрес:# grep '75.35.224.135$' ~/.bash_history
fail2ban-client set nginx-limit-conn unbanip 75.35.224.135
Регулярно залетаю в бан на своём сайте, когда тестирую что-то. Команду на разбан всегда подсматриваю.
Оба анкора вместе
^$
означают пустую строку. Удобно использовать для чистки конфигов, логов от пустых строк.🟢 Далее стоит знать специальные символы
\n
- новая строка, \t
- табуляция. Это бывает нужно, когда стоит задача удалить эти табуляции, или наоборот добавить. Примерно так:# echo -e '\tThis is line with tab' >> file.txt
# echo -e '\nThis is new line' >> file.txt
Можно заменить переход на новую строку пробелом или удалить все табуляции:
# cat file.txt | tr '\n' ' '
или просто
# tr '\n' ' ' < file.txt
Удаляем табы:
# tr -d '\t' < file.txt
🟢 Часто приходится использовать оператор или в виде прямой черты
|
. Это прям самое популярное из регулярок. Грепаем что-то с набором условий:# grep 'postfix\|dovecot' ~/.bash_history
Выведет все строки, где встречается либо postfix, либо dovecot. Здесь же я сразу упомянул ещё один специальный символ регулярных выражений, который занимается экранированием -
\
. Если его не поставить, то grep будет искать буквально фразу postfix|dovecot
и ничего не найдёт. Но при этом можно сделать вот так:# grep -E "postfix|dovecot" ~/.bash_history
И поиск нормально сработает. Дело в том, что у регулярных выражений существуют разные диалекты. Ключ
-E
включает реализацию Extended Regular Expression (ERE), где получается всё наоборот. Метасимвол или |
экранировать не надо. А вот если мы хотим найти слово с этим символом, то нам его надо экранировать. По умолчанию grep использует диалект Basic Regular Expressions (BRE). Всё это зачастую добавляет путаницу и приходится постоянно пробовать, то так, то эдак экранировать, когда использует разные утилиты и перенаправления потоков.В общем-то, это всё, что лично я помню. Если нужно использовать шаблоны, диапазоны, условия, открываю шпаргалки. Сходу правильно написать регулярку у меня не получится.
📌 Полезные ссылки по теме:
▪️ regex101.com — проверка регулярных выражений
▪️ grex — автоматическое составление регулярок
▪️ regexper.com — схематическое изображение регулярок
▪️ ihateregex.io — готовые примеры регулярных выражений
▪️ autoregex.xyz — построение регулярок с помощью ИИ
▪️ stepik.org — бесплатный курс для изучения регулярок
▪️ regexlearn.com — обучение regex на русском языке
#regex
До появления Proxmox Backup Server я часто отдавал предпочтение при выборе гипервизора Hyper-V из-за того, что для Proxmox VE не было функционального инструмента для бэкапов VM, кроме его встроенного средства, которое делало только полные бэкапы.
С выходом PBS этот вопрос был закрыт, причём бескомпромиссно. Предложенное решение было лучше, чем любое другое бесплатное. Так что связка Proxmox VE + PBS аналогов сейчас не имеет по удобству, простоте настройки и эксплуатации.
Отдельно отметить и рассказать более подробно я хочу про Proxmox Backup Client. Это консольная утилита для Linux, которая позволяет делать бэкап на уровне файлов из виртуальной машины в PBS, даже если система находится на другом гипервизоре. То есть это полностью отвязанный от инфраструктуры Proxmox клиент, который позволяет складывать резервные копии в PBS. Таким образом этот сервер бэкапов может объединять в себе разнородную инфраструктуру.
Сразу перечислю основные ограничения этого клиента:
▪ бэкап только на уровне файлов или образов дисков, не системы целиком;
▪ официальная поддержка только deb дистрибутивов, для rpm люди сами собирают пакеты, так как исходники открыты;
▪ нет поддержки windows, вариант бэкапа данных оттуда только один - монтирование диска по smb к linux машине и бэкап этого примонтированного диска.
Использовать proxmox-backup-client очень просто. Я не буду подробно описывать его возможности, так как в оригинальной документации представлена исчерпывающая информация. Если хочется на русском, то можно обратиться к документации от altlinux. Кратко покажу пример установки и бэкапа.
Ставим Proxmox Backup Client на Debian:
Вставляем туда для Debian 12
Для Debian 11:
Для Debian 10:
Ставим клиента:
Теперь бэкапим корень сервера без примонтированных дисков. То есть делаем бэкап системы:
Здесь мы указали:
◽root.pxar - имя архива в формате pbs
◽/ - бэкапим корень системы
◽10.20.1.47 - адрес pbs сервера
◽main - имя datastore
По умолчанию используется учётная запись root@pam, то есть дефолтный админ. Разумеется, на проде так делать не надо, потому что у него полные права, в том числе на удаление архивов. Делайте отдельные учётки для разных систем с ограниченными правами. В PBS это организовано удобно и просто, так что разобраться не трудно. Для указания имени пользователя, нужно использовать такой вид репозитория:
Для того, чтобы не вводить пароль пользователя вручную, можно задать его через переменную окружения
Смотреть содержимое бэкапов можно как через веб интерфейс, так и тут локально. Причём бэкап можно примонтировать через fuse. Сморим снэпшоты и выбираем любой для монтирования:
Очень быстро и удобно. При желании бэкапы можно шифровать.
#proxmox #backup
С выходом PBS этот вопрос был закрыт, причём бескомпромиссно. Предложенное решение было лучше, чем любое другое бесплатное. Так что связка Proxmox VE + PBS аналогов сейчас не имеет по удобству, простоте настройки и эксплуатации.
Отдельно отметить и рассказать более подробно я хочу про Proxmox Backup Client. Это консольная утилита для Linux, которая позволяет делать бэкап на уровне файлов из виртуальной машины в PBS, даже если система находится на другом гипервизоре. То есть это полностью отвязанный от инфраструктуры Proxmox клиент, который позволяет складывать резервные копии в PBS. Таким образом этот сервер бэкапов может объединять в себе разнородную инфраструктуру.
Сразу перечислю основные ограничения этого клиента:
▪ бэкап только на уровне файлов или образов дисков, не системы целиком;
▪ официальная поддержка только deb дистрибутивов, для rpm люди сами собирают пакеты, так как исходники открыты;
▪ нет поддержки windows, вариант бэкапа данных оттуда только один - монтирование диска по smb к linux машине и бэкап этого примонтированного диска.
Использовать proxmox-backup-client очень просто. Я не буду подробно описывать его возможности, так как в оригинальной документации представлена исчерпывающая информация. Если хочется на русском, то можно обратиться к документации от altlinux. Кратко покажу пример установки и бэкапа.
Ставим Proxmox Backup Client на Debian:
# wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
# mcedit /etc/apt/sources.list.d/pbs-client.list
Вставляем туда для Debian 12
deb http://download.proxmox.com/debian/pbs-client bookworm main
Для Debian 11:
deb http://download.proxmox.com/debian/pbs-client bullseye main
Для Debian 10:
deb http://download.proxmox.com/debian/pbs-client buster main
Ставим клиента:
# apt update && apt install proxmox-backup-client
Теперь бэкапим корень сервера без примонтированных дисков. То есть делаем бэкап системы:
# proxmox-backup-client backup root.pxar:/ --repository 10.20.1.47:main
Здесь мы указали:
◽root.pxar - имя архива в формате pbs
◽/ - бэкапим корень системы
◽10.20.1.47 - адрес pbs сервера
◽main - имя datastore
По умолчанию используется учётная запись root@pam, то есть дефолтный админ. Разумеется, на проде так делать не надо, потому что у него полные права, в том числе на удаление архивов. Делайте отдельные учётки для разных систем с ограниченными правами. В PBS это организовано удобно и просто, так что разобраться не трудно. Для указания имени пользователя, нужно использовать такой вид репозитория:
user01@pbs@10.20.1.47
. То есть мы указали созданного вручную пользователя user01@pbs.Для того, чтобы не вводить пароль пользователя вручную, можно задать его через переменную окружения
PBS_PASSWORD
. Смотреть содержимое бэкапов можно как через веб интерфейс, так и тут локально. Причём бэкап можно примонтировать через fuse. Сморим снэпшоты и выбираем любой для монтирования:
# proxmox-backup-client snapshot list --repository 10.20.1.47:main
# proxmox-backup-client mount host/debian12-vm/2024-02-06T19:19:12Z root.pxar --repository 10.20.1.47:main /mnt/backup
Очень быстро и удобно. При желании бэкапы можно шифровать.
#proxmox #backup
На днях столкнулся с ошибкой в эксплуатации и настройке MySQL сервера, о которой решил написать, чтобы самому не забыть решение, и с вами поделиться. Тема довольно распространённая, теория по которой будет полезна всем, кто работает с этой СУБД.
В MySQL есть настройка innodb_temp_data_file_path, которая отвечает за управление временным табличным пространством (temporary tablespace). Это место, где временно хранятся данные на протяжении сеанса пользователя, потом очищаются. В основном это пространство используется для операций сортировки, может чего-то ещё. Точно я не знаю.
По умолчанию этот параметр имеет значение autoextend и в некоторых случаях при такой настройке файл
Тут указано, что создаётся файл изначального размера 12 мегабайт с автоматическим увеличением до 2 гигабайт. Заранее предсказать, какого максимального объёма будет достаточно, трудно. Это зависит от многих факторов. Я такую настройку сделал несколько лет назад на одном сервере, который на днях засбоил.
Проблемы выражались в том, что существенно увеличилась запись на диск. Об этом отрапортовал Zabbix. Посмотрел статистику этой VM на гипервизоре, тоже видно, что нагрузка на диск выросла. В самой VM в логе MySQL примерно в то же время стали появляться ошибки:
Меня они сначала сбили с толку, так как подумал, что на сервере не хватает места. Но нет, с местом всё в порядке. Стал разбираться дальше и понял, что подобная ошибка означает не только недостаток места на диске, (а при нём будет такая же ошибка) но и нехватку выделенного места под temporary tablespace. Увеличил значение в innodb_temp_data_file_path и перезапустил MySQL сервер. Ошибка ушла, как и повышенная нагрузка на диск.
Это один из тех параметров, на который нужно обращать внимание при настройке MySQL сервера, иначе он может в какой-то момент преподнести сюрприз. Можно этот файл вынести на отдельный диск, или вообще указать 2 разных файла на разных дисках. В процессе написания заметки возникла идея, что может его и в память можно перенести. Но это надо погружаться в тему, чтобы понять, к чему это в итоге приведёт и стоит ли так делать. Если кто-то пробовал, напишите о своём опыте.
#mysql
В MySQL есть настройка innodb_temp_data_file_path, которая отвечает за управление временным табличным пространством (temporary tablespace). Это место, где временно хранятся данные на протяжении сеанса пользователя, потом очищаются. В основном это пространство используется для операций сортировки, может чего-то ещё. Точно я не знаю.
По умолчанию этот параметр имеет значение autoextend и в некоторых случаях при такой настройке файл
ibtmp1
, в котором хранятся временные данные, может сожрать всё свободное место на сервере. У меня такое было не раз. Поэтому я всегда ограничиваю этот размер. Выглядит это примерно так:innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:2G
Тут указано, что создаётся файл изначального размера 12 мегабайт с автоматическим увеличением до 2 гигабайт. Заранее предсказать, какого максимального объёма будет достаточно, трудно. Это зависит от многих факторов. Я такую настройку сделал несколько лет назад на одном сервере, который на днях засбоил.
Проблемы выражались в том, что существенно увеличилась запись на диск. Об этом отрапортовал Zabbix. Посмотрел статистику этой VM на гипервизоре, тоже видно, что нагрузка на диск выросла. В самой VM в логе MySQL примерно в то же время стали появляться ошибки:
[ERROR] /usr/sbin/mysqld: The table '/tmp/#sql_1c6f_1' is full
Меня они сначала сбили с толку, так как подумал, что на сервере не хватает места. Но нет, с местом всё в порядке. Стал разбираться дальше и понял, что подобная ошибка означает не только недостаток места на диске, (а при нём будет такая же ошибка) но и нехватку выделенного места под temporary tablespace. Увеличил значение в innodb_temp_data_file_path и перезапустил MySQL сервер. Ошибка ушла, как и повышенная нагрузка на диск.
Это один из тех параметров, на который нужно обращать внимание при настройке MySQL сервера, иначе он может в какой-то момент преподнести сюрприз. Можно этот файл вынести на отдельный диск, или вообще указать 2 разных файла на разных дисках. В процессе написания заметки возникла идея, что может его и в память можно перенести. Но это надо погружаться в тему, чтобы понять, к чему это в итоге приведёт и стоит ли так делать. Если кто-то пробовал, напишите о своём опыте.
#mysql
Для автоматической проверки Docker образов на уязвимости (CVE) есть хороший open source инструмент Trivy. Год назад я делал по нему пару заметок с обзором и автоматическим исправлением уязвимостей. Потом всё это в небольшую статью оформил.
Этот продукт хорошо дополняет open source утилита Dockle. Она тоже проверяет контейнеры на уязвимости, но помимо этого проверяет образ на соответствие best-practice Dockerfile и рекомендации CIS Docker Benchmarks (#cis).
Использовать очень просто, так как это по сути одиночный бинарник. В репозитории есть пакеты для установки под все популярные системы. Можно запустить и в Docker без установки:
Пример отчёта можно посмотреть на тестовом образе, для которого есть замечания:
С помощью ключа
⇨ Исходники
#docker #devops #cicd #security
Этот продукт хорошо дополняет open source утилита Dockle. Она тоже проверяет контейнеры на уязвимости, но помимо этого проверяет образ на соответствие best-practice Dockerfile и рекомендации CIS Docker Benchmarks (#cis).
Использовать очень просто, так как это по сути одиночный бинарник. В репозитории есть пакеты для установки под все популярные системы. Можно запустить и в Docker без установки:
# docker run --rm goodwithtech/dockle:v0.4.14 [YOUR_IMAGE_NAME]
Пример отчёта можно посмотреть на тестовом образе, для которого есть замечания:
# docker run --rm goodwithtech/dockle:v0.4.14 goodwithtech/dockle-test:v2
С помощью ключа
-f json
вывод можно сохранить в json файле. Dockle легко интегрировать в пайплайн. В репозитории есть примеры (gitlab).⇨ Исходники
#docker #devops #cicd #security
Жена на днях прислала юморное видео на тему поиска вещей в доме мужчинами. Для тех, кто не женат, поясню. Мужчина напрочь теряет способность находить самостоятельно вещи, когда начинает жить с женщиной. Подтверждаю, что это на самом деле так.
▶️ Как мужчины ищут вещи
Видео, казалось бы, совсем не по теме канала. Но это не совсем так. Есть две вещи, которые его связывает с тематикой IT.
1️⃣ Там ищут ноутбук. То есть уже про IT.
2️⃣ В конце видео я начал смутно вспоминать, что какие-то знакомые актёры. Как-будто я их где-то раньше видел. И точно. Это же перевод видео от коллектива Bored, у которого была серия роликов про работу магазина компьютерных комплектующих. Я пару раз делал про них заметки несколько лет назад. К сожалению, они по какой-то причине ограничили доступ к своим оригинальным видео. Не знаю, с чем связано. Ни через VPN, ни с иностранной учёткой они не открываются.
Но на указанном канале есть все их популярные видео с русской озвучкой. Вот плейлист с ними. Там в том числе полно роликов с компьютерного магазина или около айтишной тематики. Например, типичный принтер, когда у мышки нет обратной совместимости или как починить компьютер идиота. Последнее особенно рекомендую тем, кто занимается технической поддержкой пользователей.
#юмор
▶️ Как мужчины ищут вещи
Видео, казалось бы, совсем не по теме канала. Но это не совсем так. Есть две вещи, которые его связывает с тематикой IT.
1️⃣ Там ищут ноутбук. То есть уже про IT.
2️⃣ В конце видео я начал смутно вспоминать, что какие-то знакомые актёры. Как-будто я их где-то раньше видел. И точно. Это же перевод видео от коллектива Bored, у которого была серия роликов про работу магазина компьютерных комплектующих. Я пару раз делал про них заметки несколько лет назад. К сожалению, они по какой-то причине ограничили доступ к своим оригинальным видео. Не знаю, с чем связано. Ни через VPN, ни с иностранной учёткой они не открываются.
Но на указанном канале есть все их популярные видео с русской озвучкой. Вот плейлист с ними. Там в том числе полно роликов с компьютерного магазина или около айтишной тематики. Например, типичный принтер, когда у мышки нет обратной совместимости или как починить компьютер идиота. Последнее особенно рекомендую тем, кто занимается технической поддержкой пользователей.
#юмор
YouTube
КАК ПОЧИНИТЬ КОМПЬЮТЕР ИДИОТА
#vldl
Оригинал видео - https://youtu.be/C__FeGyyugM
МЕРЧ VLDL - http://vldl.shop
---------------------------------------------------------------------------------------------------------------------------
СТАВЬ ЛАЙК И ПОДПИСЫВАЙСЯ: http://bit.ly/Sub2VivaLaDirtLeague…
Оригинал видео - https://youtu.be/C__FeGyyugM
МЕРЧ VLDL - http://vldl.shop
---------------------------------------------------------------------------------------------------------------------------
СТАВЬ ЛАЙК И ПОДПИСЫВАЙСЯ: http://bit.ly/Sub2VivaLaDirtLeague…
Привет вам из начала 2010-х годов, когда ещё были популярны железные RAID контроллеры и SAS накопители со скоростью вращения 10 и 15 тыс. об/мин. У меня есть один старый сервер из тех времён с контроллером LSI MegaRAID SAS 9260-8i, с батарейкой и SAS дисками.
Последнее время от него стали прилетать уведомления о проблеме с BBU (батарейкой). Зашёл посмотреть, что там с ней. Управляется всё это хозяйство из системы с помощью родного приложения на Java.
Контроллер самостоятельно следит за своим состоянием, дисками, батарейкой. Временами батарейка перестала проходить проверку. Контроллер это замечает, отключает кэширование на запись (режим write back), включает прямую запись на диск (write throute). Сам разряжает батарейку и заряжает заново. Потом убеждается, что батарейка работает и включает обратно кэш на запись. Удобно реализовано, не требуется участие человека.
Последнее время это стало происходить часто, так что, думаю, батарейка приказала долго жить. Такую сейчас кроме как на Авито нигде и не купишь. В магазинах не нашёл. Думаю, менять не буду. Пусть без кэша работает. Это уже некритично. Нагрузку всю с сервера давно убрали на новые.
С появлением быстрых SSD дисков все эти контроллеры и кэши с батарейками стали неактуальны. Я предпочитаю ставить SSD диски и использовать софтовый рейд. Это проще и надёжнее. Меньше точек отказа. Хотя от кого-то периодически ещё слышу, что типа старые SAS 15k диски это хорошее решение. Да, они намного надёжнее обычных HDD дисков, но всё равно их время уже прошло. Покупать бы сейчас не стал.
❓А вы какой конфигурации сервера общего назначения отдадите предпочтение? Будете туда железный контроллер ставить или SAS 15k диски? В продаже они всё ещё есть. Например, Seagate Exos 15E900 15000rpm 2.5".
#железо
Последнее время от него стали прилетать уведомления о проблеме с BBU (батарейкой). Зашёл посмотреть, что там с ней. Управляется всё это хозяйство из системы с помощью родного приложения на Java.
Контроллер самостоятельно следит за своим состоянием, дисками, батарейкой. Временами батарейка перестала проходить проверку. Контроллер это замечает, отключает кэширование на запись (режим write back), включает прямую запись на диск (write throute). Сам разряжает батарейку и заряжает заново. Потом убеждается, что батарейка работает и включает обратно кэш на запись. Удобно реализовано, не требуется участие человека.
Последнее время это стало происходить часто, так что, думаю, батарейка приказала долго жить. Такую сейчас кроме как на Авито нигде и не купишь. В магазинах не нашёл. Думаю, менять не буду. Пусть без кэша работает. Это уже некритично. Нагрузку всю с сервера давно убрали на новые.
С появлением быстрых SSD дисков все эти контроллеры и кэши с батарейками стали неактуальны. Я предпочитаю ставить SSD диски и использовать софтовый рейд. Это проще и надёжнее. Меньше точек отказа. Хотя от кого-то периодически ещё слышу, что типа старые SAS 15k диски это хорошее решение. Да, они намного надёжнее обычных HDD дисков, но всё равно их время уже прошло. Покупать бы сейчас не стал.
❓А вы какой конфигурации сервера общего назначения отдадите предпочтение? Будете туда железный контроллер ставить или SAS 15k диски? В продаже они всё ещё есть. Например, Seagate Exos 15E900 15000rpm 2.5".
#железо
На прошлой неделе подписчик поделился со мной полезной информацией, которая может пригодиться более широкой аудитории, нежели только я. Искренне выражаю благодарность всем, кто мне пишет какую-то полезную информацию, так как желание бескорыстно (а зачастую и анонимно) помогать другим благотворно влияет и на тех, кто помогает, и на тех, кто получает. Не всё из этого я публикую, потому что что-то не формат канала, что-то не кажется мне полезным аудитории, что-то я не успеваю проверить и забываю.
Сегодня речь пойдёт об утилите dhcptest и скрипте на powershell для автоматического поиска в сети постороннего DHCP сервера с уведомлением в Telegram об IP этого сервера и его MAC адресе. Думаю, многие администраторы сталкивались с ситуацией, когда в сети появляется посторонний DHCP сервер. В зависимости от настроек сетевого оборудования, он может наделать много бед. Обычно эти беды приходят, когда сталкиваешься с этим в первый раз. А потом уже начинаешь искать информацию и думать, как от этого защититься. Я сталкивался с подобным много раз.
Dhcptest делает очень простую работу – отправляет запрос на получение сетевых настроек и собирает информацию об ответивших. Она может работать как в интерактивном режиме, так и автоматически с заданием настроек через ключи запуска. В скрипте как раз будет такой пример. В репозитории лежат только исходники, но там же есть ссылка на сайт автора, где есть собранный бинарник под Windows.
Скрипт на powershell делает следующее:
1️⃣ Скачивает утилиту, переименовывает и кладёт её рядом с собой.
2️⃣ Запускает раз в минуту dhcp тест с запросом настроек и получает IP адрес ответившего сервера.
3️⃣ Если этого сервера нет в вашем списке DHCP серверов, то пингует этот сервер, проверяя его доступность, смотрит ARP таблицу и пытается получить его MAC.
4️⃣ Отправляет IP и MAC постороннего сервера в Telegram.
Понятно, что задачу по защите локальной сети от посторонних DHCP серверов можно и нужно решать другими способами, а не такими костылями. Обычно управляемые свитчи позволяют ограничивать активность неавторизованных DHCP серверов с помощью технологии DHCP Snooping. Но если ничего другого нет, то можно воспользоваться предложенным способом. К тому же вопрос с уведомлениями всё равно каким-то образом нужно будет решать отдельно.
Сам скрипт опубликован ниже в следующем сообщении.
⬇️⬇️⬇️⬇️⬇️
#network #dhcp
Сегодня речь пойдёт об утилите dhcptest и скрипте на powershell для автоматического поиска в сети постороннего DHCP сервера с уведомлением в Telegram об IP этого сервера и его MAC адресе. Думаю, многие администраторы сталкивались с ситуацией, когда в сети появляется посторонний DHCP сервер. В зависимости от настроек сетевого оборудования, он может наделать много бед. Обычно эти беды приходят, когда сталкиваешься с этим в первый раз. А потом уже начинаешь искать информацию и думать, как от этого защититься. Я сталкивался с подобным много раз.
Dhcptest делает очень простую работу – отправляет запрос на получение сетевых настроек и собирает информацию об ответивших. Она может работать как в интерактивном режиме, так и автоматически с заданием настроек через ключи запуска. В скрипте как раз будет такой пример. В репозитории лежат только исходники, но там же есть ссылка на сайт автора, где есть собранный бинарник под Windows.
Скрипт на powershell делает следующее:
1️⃣ Скачивает утилиту, переименовывает и кладёт её рядом с собой.
2️⃣ Запускает раз в минуту dhcp тест с запросом настроек и получает IP адрес ответившего сервера.
3️⃣ Если этого сервера нет в вашем списке DHCP серверов, то пингует этот сервер, проверяя его доступность, смотрит ARP таблицу и пытается получить его MAC.
4️⃣ Отправляет IP и MAC постороннего сервера в Telegram.
Понятно, что задачу по защите локальной сети от посторонних DHCP серверов можно и нужно решать другими способами, а не такими костылями. Обычно управляемые свитчи позволяют ограничивать активность неавторизованных DHCP серверов с помощью технологии DHCP Snooping. Но если ничего другого нет, то можно воспользоваться предложенным способом. К тому же вопрос с уведомлениями всё равно каким-то образом нужно будет решать отдельно.
Сам скрипт опубликован ниже в следующем сообщении.
⬇️⬇️⬇️⬇️⬇️
#network #dhcp
$AllowedDHCPServer = "ЗДЕСЬ_АЙПИШНИК_ТВОЕГО_DHCP"
#Замените URL-адрес загрузки на тот, куда вы сами загрузили файл DHCPTest. Мы загрузим этот файл только один раз.
$DownloadURL = "https://files.cy.md/dhcptest/dhcptest-0.9-win64.exe"
$DownloadLocation = "$(pwd)\DHCPTest"
$BotToken = "СЮДА_СУЙ_ТОКЕН_БОТА"
# Объявление массива с идентификаторами чатов
$ChatIDs = @("USERID1", "USERID2")
$NMinutes = 1 # Интервал времени для повторения проверки в минутах
# Функция для отправки сообщений в Telegram
function Send-TelegramMessage {
param (
[Parameter(Mandatory=$true)]
[string]$MessageText,
[Parameter(Mandatory=$true)]
[string[]]$ChatIDs
)
$TelegramAPI = "https://api.telegram.org/bot$BotToken/sendMessage"
foreach ($ChatID in $ChatIDs) {
$params = @{
chat_id = $ChatID
text = $MessageText
parse_mode = "Markdown"
}
$response = Invoke-WebRequest -Uri $TelegramAPI -Method Post -Body $params -ContentType "application/x-www-form-urlencoded"
}
}
# Бесконечный цикл для периодической проверки
while ($true) {
try {
$TestDownloadLocation = Test-Path $DownloadLocation
if (!$TestDownloadLocation) { New-Item $DownloadLocation -ItemType Directory -Force }
$TestDownloadLocationZip = Test-Path "$DownloadLocation\DHCPTest.exe"
if (!$TestDownloadLocationZip) { Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile "$($DownloadLocation)\DHCPTest.exe" }
}
catch {
$ErrorMessage = "Загрузка и извлечение DHCPTest не удались. Ошибка: $($_.Exception.Message)"
Send-TelegramMessage -MessageText $ErrorMessage -ChatIDs $ChatIDs
break # Выход из цикла в случае ошибки
}
$Tests = 0
$ListedDHCPServers = do {
& "$DownloadLocation\DHCPTest.exe" --quiet --query --print-only 54 --wait --timeout 3
$Tests++
} while ($Tests -lt 2)
$DHCPHealthMessages = @()
foreach ($ListedServer in $ListedDHCPServers) {
if ($ListedServer -ne $AllowedDHCPServer) {
# Выполнение команды ping для гарантии наличия IP в ARP-таблице
ping $ListedServer -n 1 | Out-Null
# Получение MAC-адреса из ARP-таблицы
$arpResult = [String]::Join(' ', (arp -a $ListedServer ))
$MACAddress = if ($arpResult -match "(\w{2}-\w{2}-\w{2}-\w{2}-\w{2}-\w{2})") {$matches[0]} else {"MAC адрес не найден"}
$DHCPHealthMessages += "Обнаружен неавторизованный DHCP-сервер. IP-адрес неавторизованного сервера: $ListedServer, MAC адрес: $MACAddress"
}
}
if ($DHCPHealthMessages.Count -gt 0) {
$DHCPHealthMessage = $DHCPHealthMessages -join "`n"
Send-TelegramMessage -MessageText $DHCPHealthMessage -ChatIDs $ChatIDs
}
Start-Sleep -Seconds ($NMinutes * 60) # Пауза перед следующей итерацией цикла
}
#network #dhcp
Для мониторинга СУБД PostgreSQL существует много вариантов настройки. Собственно, как и для всего остального. Тема мониторинга очень хорошо развита в IT. Есть из чего выбирать, чему отдать предпочтение.
Одним из наиболее простых и быстрых для внедрения инструментов именно для psql является Pgwatch2. Это известная штука, для которой много инструкций и руководств. Есть обзоры на youtube. Отдельно отмечу, что если вы используете систему мониторинга Zabbix, то искать что-то ещё, большого смысла нет. У неё есть хороший встроенный шаблон, который собирает много различных метрик. В общем случае этого мониторинга будет за глаза.
Если вы не знаете Zabbix, у вас его нет и ставить не планируете, то закрыть вопрос с мониторингом PostgreSQL можно с помощью Pgwatch2. Этот продукт состоит из следующих компонентов:
▪ Хранилище метрик. В его качестве может выступать сама PostgreSQL, в том числе с расширением TimescaleDB. Также метрики можно хранить в InfluxDB. Либо их можно отправить в Prometheus, а он положит куда-то у себя.
▪ Сборщик метрик, написанный на GO.
▪ Веб интерфейс для управления, написанный на Python
▪ Grafana для просмотра дашбордов с метриками.
Всё это есть в готовом виде, упакованное в Docker. Если использовать для хранения метрик PostgreSQL, достаточно создать базу для хранения и пользователя для доступа к метрикам. Далее указать эти данные и запустить контейнеры. Процесс подробно описан в документации.
Посмотреть, как выглядит итоговый мониторинг, можно в публичном DEMO. Там из коробки настроено много дашбордов, не забудьте их посмотреть. Информацию по конкретной базе удобно смотреть в дашборде DB overview.
⇨ Исходники / Документация / Demo / Видеобозор (на русском)
#postgresql #monitoring
Одним из наиболее простых и быстрых для внедрения инструментов именно для psql является Pgwatch2. Это известная штука, для которой много инструкций и руководств. Есть обзоры на youtube. Отдельно отмечу, что если вы используете систему мониторинга Zabbix, то искать что-то ещё, большого смысла нет. У неё есть хороший встроенный шаблон, который собирает много различных метрик. В общем случае этого мониторинга будет за глаза.
Если вы не знаете Zabbix, у вас его нет и ставить не планируете, то закрыть вопрос с мониторингом PostgreSQL можно с помощью Pgwatch2. Этот продукт состоит из следующих компонентов:
▪ Хранилище метрик. В его качестве может выступать сама PostgreSQL, в том числе с расширением TimescaleDB. Также метрики можно хранить в InfluxDB. Либо их можно отправить в Prometheus, а он положит куда-то у себя.
▪ Сборщик метрик, написанный на GO.
▪ Веб интерфейс для управления, написанный на Python
▪ Grafana для просмотра дашбордов с метриками.
Всё это есть в готовом виде, упакованное в Docker. Если использовать для хранения метрик PostgreSQL, достаточно создать базу для хранения и пользователя для доступа к метрикам. Далее указать эти данные и запустить контейнеры. Процесс подробно описан в документации.
Посмотреть, как выглядит итоговый мониторинг, можно в публичном DEMO. Там из коробки настроено много дашбордов, не забудьте их посмотреть. Информацию по конкретной базе удобно смотреть в дашборде DB overview.
⇨ Исходники / Документация / Demo / Видеобозор (на русском)
#postgresql #monitoring
Заметка немного не по теме канала, но мне она показалась интересной, поэтому решил поделиться. В том числе для расширения кругозора. На днях посмотрел видео:
▶️ Hacking - O.MG Cable. 😈 Опасный кабель
Забайтился на заголовок, добавил ролик к просмотру и в итоге посмотрел. Речь там идёт про обычный usb провод с type-c на конце. В провод зашит небольшой чип c wifi модулем. Через этот чип и модуль можно эмулировать нажатия клавиш на компе и выполнять команды.
В целом, я всегда знал, что usb порты это потенциально опасные штуки и втыкать туда что попало нельзя. Но я не представлял, что устройства для скрытной деятельности настолько простые. Я думал, что это какие-то спецсредства, недоступные обычным людям или админам. Для которых нужно специальное ПО, которое пройдёт мимо антивирусов, запустится на компе и будет что-то делать.
А оказывается, можно купить вот такой простой проводочек за 100 баксов, а на aliexpress наверное и дешевле, и прикалываться над коллегами в офисе. На видео наглядно на конкретных примерах показано, как это работает. Очевидно, что всё то же самое можно делать и более скрытно.
Первое, что мне пришло в голову, когда увидел провод – это отличный подарок для какого-нибудь айтишника. Необычно и функционально. Не знаю только, насколько реально его купить в РФ. Сам автор канала получил провод на работе.
#security #железо
▶️ Hacking - O.MG Cable. 😈 Опасный кабель
Забайтился на заголовок, добавил ролик к просмотру и в итоге посмотрел. Речь там идёт про обычный usb провод с type-c на конце. В провод зашит небольшой чип c wifi модулем. Через этот чип и модуль можно эмулировать нажатия клавиш на компе и выполнять команды.
В целом, я всегда знал, что usb порты это потенциально опасные штуки и втыкать туда что попало нельзя. Но я не представлял, что устройства для скрытной деятельности настолько простые. Я думал, что это какие-то спецсредства, недоступные обычным людям или админам. Для которых нужно специальное ПО, которое пройдёт мимо антивирусов, запустится на компе и будет что-то делать.
А оказывается, можно купить вот такой простой проводочек за 100 баксов, а на aliexpress наверное и дешевле, и прикалываться над коллегами в офисе. На видео наглядно на конкретных примерах показано, как это работает. Очевидно, что всё то же самое можно делать и более скрытно.
Первое, что мне пришло в голову, когда увидел провод – это отличный подарок для какого-нибудь айтишника. Необычно и функционально. Не знаю только, насколько реально его купить в РФ. Сам автор канала получил провод на работе.
#security #железо
YouTube
Hacking - O.MG Cable. 😈 Опасный кабель
Кабель USB Type A на Type C. Кабель для управления удаленным компьютером.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Буду очень благодарен за поддержку в виде чашечки ☕️:
https://www.buymeacoffee.com/RomNero
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
По предложениям…
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Буду очень благодарен за поддержку в виде чашечки ☕️:
https://www.buymeacoffee.com/RomNero
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
По предложениям…
Если вам необходимо кому-то передать свой bash скрипт, но при этом вы не хотите, чтобы этот кто-то видел его содержимое, то есть простое решение. С помощью утилиты shc его можно транслировать в язык C и скомпилировать. На выходе будет обычный бинарник, который будет успешно работать практически на любой ОС Linux.
Это может быть актуально, если вы делаете кому-то что-то на заказ и надо продемонстрировать работоспособность решения. Если сразу отдать скрипт, то недобросовестные заказчики могут не заплатить, так как всё решение это и есть текст скрипта. Возможно, вы просто захотите от кого-то скрыть чувствительные данные или идею реализации той или иной функциональности.
Shc живёт в базовых репозиториях Debian или Ubuntu, возможно и в других дистрибутивах. Для сборки также понадобится пакет gcc.
Пользоваться ей очень просто. Покажу на примере небольшого скрипта с вводом переменной в консоли.
Запускаем:
Теперь компилируем его в бинарник:
На выходе получаем два файла:
- script.sh.x - бинарник
- script.sh.x.c - исходный код
Запускаем бинарь:
Отработал точно так же, как и bash скрипт. С помощью shc можно указать дату, после которой скрипт запускаться не будет. Выглядит это примерно так:
Я подозреваю, что прятать какие-то важные пароли таким образом опасно. Наверняка есть способ, чтобы его вытащить оттуда. Мне даже кажется, что это и не слишком сложно. В памяти то всё равно содержимое будет в каком-то виде отображаться. Можно сдампить память в момент запуска и посмотреть.
Быстро поискал и нашёл готовое решение по расшифровке таких файлов:
⇨ https://github.com/yanncam/UnSHc
Так что имейте ввиду, что это в основном защита от дурака.
#bash #script
Это может быть актуально, если вы делаете кому-то что-то на заказ и надо продемонстрировать работоспособность решения. Если сразу отдать скрипт, то недобросовестные заказчики могут не заплатить, так как всё решение это и есть текст скрипта. Возможно, вы просто захотите от кого-то скрыть чувствительные данные или идею реализации той или иной функциональности.
Shc живёт в базовых репозиториях Debian или Ubuntu, возможно и в других дистрибутивах. Для сборки также понадобится пакет gcc.
# apt install shc gcc
Пользоваться ей очень просто. Покажу на примере небольшого скрипта с вводом переменной в консоли.
#!/bin/bash
v=$1
echo "Simple BASH script. Entered VARIABLE: $v"
Запускаем:
# ./script.sh 111
Simple BASH script. Entered VARIABLE: 111
Теперь компилируем его в бинарник:
# shc -f -r script.sh
На выходе получаем два файла:
- script.sh.x - бинарник
- script.sh.x.c - исходный код
Запускаем бинарь:
# ./script.sh.x 123
Simple BASH script. Entered VARIABLE: 123
Отработал точно так же, как и bash скрипт. С помощью shc можно указать дату, после которой скрипт запускаться не будет. Выглядит это примерно так:
# shc -e 31/12/2023 -m "Извини, но ты опоздал!" -f -r script.sh
# ./script.sh.x
./script.sh.x: has expired!
Извини, но ты опоздал!
Я подозреваю, что прятать какие-то важные пароли таким образом опасно. Наверняка есть способ, чтобы его вытащить оттуда. Мне даже кажется, что это и не слишком сложно. В памяти то всё равно содержимое будет в каком-то виде отображаться. Можно сдампить память в момент запуска и посмотреть.
Быстро поискал и нашёл готовое решение по расшифровке таких файлов:
⇨ https://github.com/yanncam/UnSHc
Так что имейте ввиду, что это в основном защита от дурака.
#bash #script
Сколько лет использую OpenVPN, а только недавно случайно узнал, что он умеет в маршрутах использовать не только ip адреса, но и fqdn, то есть доменные имена. Для этого есть параметр allow-pull-fqdn.
Увидел упоминание этого параметра случайно. Решил сразу попробовать, как он работает. И так, и сяк его на сервере применял, не работает. Оказалось, что это параметр клиента и автоматически передать его через push нельзя. То есть надо явно в конфиг клиента прописать:
И после этого ему можно пушить маршруты с сервера в таком виде:
При подключении к openvpn серверу клиент получит маршруты и если там будет указан домен, автоматически отрезолвит этот домен в IP адрес и добавит его в таблицу маршрутизации. Так что никакой магии тут нет, openvpn в реальности не умеет оперировать доменами в маршрутах. Он просто чуть упрощает задачу, делая автоматически резолв. Тем не менее, даже в таком виде это довольно удобно. Буду применять.
Для тех, кто не знаком с OpenVPN, поясню подробнее, что это такое. Вы можете на сервере в настройках клиента, каждому в отдельности настраивать маршруты, по которым он будет ходить через vpn сервер. Это очень удобная возможность, так как не надо менять конфигурацию клиента. Всё управление маршрутами происходит централизованно на сервере. А с помощью описанного параметра, вы любому клиенту можете указать, что на такой-то сайт ходи через vpn сервер. Самому клиенту при этом ничего настраивать не надо. Он просто переподключится и получит обновлённые маршруты. У WireGuard такой возможности нет. Ему надо каждый раз конфиг обновлять, когда вносятся изменения в маршрутизацию.
#openvpn
Увидел упоминание этого параметра случайно. Решил сразу попробовать, как он работает. И так, и сяк его на сервере применял, не работает. Оказалось, что это параметр клиента и автоматически передать его через push нельзя. То есть надо явно в конфиг клиента прописать:
allow-pull-fqdn
И после этого ему можно пушить маршруты с сервера в таком виде:
push "route whoer.net 255.255.255.255"
При подключении к openvpn серверу клиент получит маршруты и если там будет указан домен, автоматически отрезолвит этот домен в IP адрес и добавит его в таблицу маршрутизации. Так что никакой магии тут нет, openvpn в реальности не умеет оперировать доменами в маршрутах. Он просто чуть упрощает задачу, делая автоматически резолв. Тем не менее, даже в таком виде это довольно удобно. Буду применять.
Для тех, кто не знаком с OpenVPN, поясню подробнее, что это такое. Вы можете на сервере в настройках клиента, каждому в отдельности настраивать маршруты, по которым он будет ходить через vpn сервер. Это очень удобная возможность, так как не надо менять конфигурацию клиента. Всё управление маршрутами происходит централизованно на сервере. А с помощью описанного параметра, вы любому клиенту можете указать, что на такой-то сайт ходи через vpn сервер. Самому клиенту при этом ничего настраивать не надо. Он просто переподключится и получит обновлённые маршруты. У WireGuard такой возможности нет. Ему надо каждый раз конфиг обновлять, когда вносятся изменения в маршрутизацию.
#openvpn
Я уже много раз упоминал про использование простейшего http сервера на базе python:
Я его постоянно использую, когда надо быстро откуда-то забрать файлы без лишних телодвижений. Просто перехожу в нужную директорию, запускаю веб сервер, скачиваю файлы, открыв их по ip адресу сервера и завершаю работу веб сервера.
Мне понадобилось для проверки одного приложения запустить https сервер, так как по http оно не работает. Было лень настраивать для этого Nginx. Подумал, что наверное его так же можно быстро поднять с помощью python. Быстро нашёл решение.
Генерируем самоподписный ключ и сертификат в один файл:
Создаём файл
Запускаем веб сервер:
Идём по адресу https://172.20.0.210:8000 и видим содержимое директории или какой-то сайт, если в ней лежит index.html.
В принципе, можно сохранить этот файл и использовать для передачи файлов, если вам важно передавать по https. Я люблю такие простые и быстрые решения. Так что обязательно сохраню и буду использовать.
#webserver #python
# python3 -m http.server 8000
Я его постоянно использую, когда надо быстро откуда-то забрать файлы без лишних телодвижений. Просто перехожу в нужную директорию, запускаю веб сервер, скачиваю файлы, открыв их по ip адресу сервера и завершаю работу веб сервера.
Мне понадобилось для проверки одного приложения запустить https сервер, так как по http оно не работает. Было лень настраивать для этого Nginx. Подумал, что наверное его так же можно быстро поднять с помощью python. Быстро нашёл решение.
Генерируем самоподписный ключ и сертификат в один файл:
# openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes
Создаём файл
webserver.py
следующего содержания:import http.server, ssl
server_address = ('172.20.0.210', 8000)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,server_side=True,certfile='localhost.pem',ssl_version=ssl.PROTOCOL_TLSv1_2)
httpd.serve_forever()
Запускаем веб сервер:
# python3 webserver.py
Идём по адресу https://172.20.0.210:8000 и видим содержимое директории или какой-то сайт, если в ней лежит index.html.
В принципе, можно сохранить этот файл и использовать для передачи файлов, если вам важно передавать по https. Я люблю такие простые и быстрые решения. Так что обязательно сохраню и буду использовать.
#webserver #python
Расскажу про необычный, но на мой взгляд полезный сервис. С его помощью можно закрыть паролем переход по какому-то url, который по каким-то причинам нельзя или не хочется светить в публичном пространстве. Речь пойдёт про простой open source проект link-lock.
Link-lock шифрует сам url, используя при этом возможности браузера. На сервере ничего не хранится. Расшифровка тоже происходит в браузере клиента. После расшифровки урла, происходит редирект на закрытую ссылку.
Посмотреть, как это работает, можно на странице публичного сервиса, поднятого автором:
⇨ https://jstrieb.github.io/link-lock/
Он представляет из себя статичный сайт с javascript, так что вы можете поднять его у себя. Достаточно склонировать его к себе и положить в директорию с веб сервером. Единственный момент - он все ссылки создаёт через домен автора jstrieb.github.io. Чтобы использовать свой, просто замените везде в исходниках это имя на своё. Я это проделал, всё получилось.
Подобный сервис может позволить хранить список ссылок в публичных местах или компьютерах, доступ к которым невозможен без знания пароля. Параноики могут шифровать свои ссылки в каких-то облачных сервисах типа evernote или notion. Можно по почте отправлять какие-то ссылки, а пароль передавать другим путём. Таким образом в почте не будет отсвечивать эта ссылка. Например, так можно передавать ссылку на загрузку конфигурации VPN, не светя в переписки адрес веб сервера, на котором живёт веб интерфейс.
⇨ Исходники
#security
Link-lock шифрует сам url, используя при этом возможности браузера. На сервере ничего не хранится. Расшифровка тоже происходит в браузере клиента. После расшифровки урла, происходит редирект на закрытую ссылку.
Посмотреть, как это работает, можно на странице публичного сервиса, поднятого автором:
⇨ https://jstrieb.github.io/link-lock/
Он представляет из себя статичный сайт с javascript, так что вы можете поднять его у себя. Достаточно склонировать его к себе и положить в директорию с веб сервером. Единственный момент - он все ссылки создаёт через домен автора jstrieb.github.io. Чтобы использовать свой, просто замените везде в исходниках это имя на своё. Я это проделал, всё получилось.
Подобный сервис может позволить хранить список ссылок в публичных местах или компьютерах, доступ к которым невозможен без знания пароля. Параноики могут шифровать свои ссылки в каких-то облачных сервисах типа evernote или notion. Можно по почте отправлять какие-то ссылки, а пароль передавать другим путём. Таким образом в почте не будет отсвечивать эта ссылка. Например, так можно передавать ссылку на загрузку конфигурации VPN, не светя в переписки адрес веб сервера, на котором живёт веб интерфейс.
⇨ Исходники
#security
Вчера заметка про простенький http сервер на python породила интересное обсуждение на тему передачи файлов. Конечно, способов существует уйма, и каждый использует то, что ему привычнее, удобнее, быстрее.
Лично у меня прижились следующие способы передачи.
🟢 Если надо перекинуть один файл между серверами, я использую scp:
Сразу привёл пример с нестандартным портом, там как тут используется заглавная
🟢 Если файлов много, использую rsync:
Тоже такой универсальный пример, где сразу и порт, и ключ указан, если аутентификация не по паролю.
🟢 А вот если надо скопировать что-то разово на мой рабочий ноут или какой-то виндовый комп, то я запускаю веб сервер на python и просто скачиваю. Для текстовых логов актуально, чтобы сразу забрать все, что нужны:
🔴 А вот простой трюк, когда надо перекинуть файл с одного сервера на другой, но при этом подключение между серверами не настроено, но я со своего ноута или jump сервера могу подключиться к обоим. Тогда можно сделать вот так:
#bash
Лично у меня прижились следующие способы передачи.
🟢 Если надо перекинуть один файл между серверами, я использую scp:
# scp -P 22777 user@10.1.4.4:/mnt/data/BackUp/onlyoffice.tar.gz /backup
Сразу привёл пример с нестандартным портом, там как тут используется заглавная
-P
. Я долго не мог запомнить это, используя маленькую -p
, как в ssh.🟢 Если файлов много, использую rsync:
# rsync -avz -e "ssh -p 1234 -i /root/.ssh/id_rsa" user@10.1.4.22:/data/mail /data
Тоже такой универсальный пример, где сразу и порт, и ключ указан, если аутентификация не по паролю.
🟢 А вот если надо скопировать что-то разово на мой рабочий ноут или какой-то виндовый комп, то я запускаю веб сервер на python и просто скачиваю. Для текстовых логов актуально, чтобы сразу забрать все, что нужны:
# cd /var/log
# python3 -m http.server 8000
🔴 А вот простой трюк, когда надо перекинуть файл с одного сервера на другой, но при этом подключение между серверами не настроено, но я со своего ноута или jump сервера могу подключиться к обоим. Тогда можно сделать вот так:
# ssh user01@10.1.4.4 'cat /home/user01/file.tar.gz' | ssh user02@10.1.5.10 'cat > /home/user02/file.tar.gz'
#bash
▶️ Есть довольно известный канал на youtube - TheNafig, который выпускает юмористические переозвучки популярных фильмов. Получается неплохо и подтверждение тому миллионные просмотры роликов. Есть в том числе и IT тематика, причём в большом количестве, что наводит на мысли о том, что автор сам айтишник или около того.
Ниже список, что так или иначе относится к IT. На первом месте моё самое любимое видео. Пересматривал много раз. И на канале когда-то публиковал. Всё остальное, как по мне, уже менее интересное, но это вкусовщина. Возможно у вас будут другие впечатления.
🔥 Техподдержка с Уолл-стрит
🟡 Если бы Гарри Поттер был программистом
🟢 Ты ж программист
🔴 Чем опасен интернет
⚫ Пираты компьютерных морей
🟣 Бойцовский компьютерный клуб
🔵 Жизнь без компьютера
🟠 Терминатор и компьютерные игры
Если кто-то всё посмотрит, или уже смотрел, напишите, что понравилось больше всего. Мне без вариантов, про техподдержку нравится больше всего. Это вообще один из лучших, если не лучший ролик, по этой теме, что я когда-либо видел, за исключением весёленького денька у сисадмина.
#юмор
Ниже список, что так или иначе относится к IT. На первом месте моё самое любимое видео. Пересматривал много раз. И на канале когда-то публиковал. Всё остальное, как по мне, уже менее интересное, но это вкусовщина. Возможно у вас будут другие впечатления.
🔥 Техподдержка с Уолл-стрит
Если кто-то всё посмотрит, или уже смотрел, напишите, что понравилось больше всего. Мне без вариантов, про техподдержку нравится больше всего. Это вообще один из лучших, если не лучший ролик, по этой теме, что я когда-либо видел, за исключением весёленького денька у сисадмина.
#юмор
YouTube
Техподдержка с Уолл-стрит (Переозвучка)
Трудовые будни техподдержки =) Непростой жизни айтишников посвящается.
ЗЫ Переозвучка отрывков из фильма "Волк с Уолл-стрит"
Группа в ВК: http://vk.com/nafignefig
ЗЫ Переозвучка отрывков из фильма "Волк с Уолл-стрит"
Группа в ВК: http://vk.com/nafignefig
Для тех, кто всё ещё ищет себя в IT или планирует перепрофилироваться в какое-то смежное направление, рекомендую обратить внимание на курс по нейросетям. Курс полностью бесплатный. Его автор – Созыкин Андрей. Известен он тем, что записал хороший курс по сетям, на который много положительных отзывов.
Я изучал его сайт и заметил курс Программирование нейросетей на Python. Если бы я сейчас выбирал направление, куда пойти, то скорее всего выбрал бы что-то связанное с AI. Во-первых, мне кажется, это очень интересным. Во-вторых, реально востребованным. В-третьих, это тоже IT, связанное в программированием и немного эксплуатацией. С админской базой заходить будет проще, чем с самого нуля. То есть если сисадмину захочется перепрофилироваться в интеллектуальный анализ данных, то для него это вполне реально. Особенно если он уже знает Python. Но даже если не знает, освоить его не трудно.
Курс объёмный, структурированный, с лекциями и практическими работами. Оформлен как полноценный университетский курс, что не удивительно, так как Андрей преподаёт в Московском физико-техническом институте.
У Андрея есть YouTube канал, где он недавно озвучил свои планы по его развитию на 2024 год. Он планирует:
◽Обновить курс по компьютерным сетям.
◽Сделать курс по DevOps.
◽Расширить свой небольшой курс по SQL.
Так что подписывайтесь.
Если кто-то из подписчиков вдруг занимается нейросетями, расскажите, каково это. Легко, сложно, интересно или нет? Как пришли к этому, где учились, что можете порекомендовать?
#обучение
Я изучал его сайт и заметил курс Программирование нейросетей на Python. Если бы я сейчас выбирал направление, куда пойти, то скорее всего выбрал бы что-то связанное с AI. Во-первых, мне кажется, это очень интересным. Во-вторых, реально востребованным. В-третьих, это тоже IT, связанное в программированием и немного эксплуатацией. С админской базой заходить будет проще, чем с самого нуля. То есть если сисадмину захочется перепрофилироваться в интеллектуальный анализ данных, то для него это вполне реально. Особенно если он уже знает Python. Но даже если не знает, освоить его не трудно.
Курс объёмный, структурированный, с лекциями и практическими работами. Оформлен как полноценный университетский курс, что не удивительно, так как Андрей преподаёт в Московском физико-техническом институте.
У Андрея есть YouTube канал, где он недавно озвучил свои планы по его развитию на 2024 год. Он планирует:
◽Обновить курс по компьютерным сетям.
◽Сделать курс по DevOps.
◽Расширить свой небольшой курс по SQL.
Так что подписывайтесь.
Если кто-то из подписчиков вдруг занимается нейросетями, расскажите, каково это. Легко, сложно, интересно или нет? Как пришли к этому, где учились, что можете порекомендовать?
#обучение
У известного онлайн редактора документов ONLYOFFICE Docs на днях случилось крупное обновление до версии 8.0. Я люблю этот продукт и активно использую как сам, так и ставлю для других людей. Его особенность в том, что бесплатная версия позволяет работать одновременно над 20-ю документами онлайн. Это комфортное ограничение, которое позволяет использовать продукт небольшим командам, где людей может быть сильно больше 20-ти. Ограничение только на онлайн редактирование. Если его превысить, документы будут открываться только на чтение. Онлайн документы Яндекса работают на этом же движке.
Посмотрел ролик про новую версию. Отметил следующие нововведения:
◽большое обновление для работы с формами в редакторе;
◽улучшенное API для работы с формами;
◽расширенные возможности таблиц, в том числе по построению диаграмм;
◽чат и онлайн комментарии для совместной работы с документами;
◽улучшенная работа с плагинами.
Если хотите сами посмотреть нововведения этой версии, то вот видео от разработчиков:
▶️ Introducing ONLYOFFICE Docs 8.0
В рассылке с обновлением авторы продукта предложили получить community version с сайта Univention App Center. Не знаю, с чем это связано. Возможно какое-то сотрудничество организовали. Этот app center представляет собой магазин приложений для другого продукта - Univention Corporate Server (UCS), про который я ранее писал отдельно. На странице Univention App Center Catalog также можно сразу загрузить образы виртуальных машин, где ONLYOFFICE Docs интегрированы в Nextcloud или ownCloud. Я не понял, как все эти продукты между собой связаны и почему они все оказались на сайте UCS.
Сам я всегда использовал этот редактор документов в составе бесплатной версии ONLYOFFICE Workspace Community, который проще всего установить через Docker. Для этого есть готовый скрипт, который всё делает за вас:
На вопрос установки через Docker ответьте утвердительно, а на запрос установки почтового сервера ответьте отказом. В общем случае не рекомендую ставить почтовый сервер в составе Workspace, так как в этом нет большого смысла. Лучше поднять его отдельно или использовать внешний сервер. А в Workspace можно подключать ящики по imap и отправлять по smtp. Там полноценный веб клиент есть. Но можете и встроенный попробовать, если сильно хочется и лень заморачиваться с отдельным сервером. Будет отдельный контейнер с postfix.
После установки идёте по IP адресу сервера и выполняете начальную настройку. Если в процессе тестирования поймёте, что продукт вам подходит, тогда уже можно более детально разобраться в установке: поменять все дефолтные учётки в скриптах, вынести отдельные директории на нужные диски и т.д. Также можно вручную установить через Docker Compose, аккуратно настроив все переменные.
❗️Продукт довольно жирный, так что устанавливать рекомендую на виртуалку с 4 vCPU и 8 Gb памяти. Установка очень простая. Буквально две команды, что я привёл выше, и можно идти, пользоваться. Никаких дополнительных настроек делать не надо, чтобы всё заработало.
ONLYOFFICE Workspace очень приятный продукт, в котором реализованы множество интеграций. Зайдите в раздел Настройки ⇨ Интеграция и оцените сами. Можно подключить облако Selectel, вход по учётке VK или Яндекс, уведомления в Telegram и т.д. Также загляните в раздел Настройки ⇨ Панель управления и оцените возможности. Там можно настроить https, бэкап и восстановление, брендирование, поиск, ldap, sso и многое другое.
Отдельно отмечу, что у этих же авторов есть полностью бесплатные Desktop и Mobile приложения для работы с офисными документами. Туда тоже все эти обновления приехали, так как они по сути обёртки над веб сервисом, написанном на javascript. Благодаря этому, редакторы доступны под все популярные ОС.
#onlyoffice #docs
Посмотрел ролик про новую версию. Отметил следующие нововведения:
◽большое обновление для работы с формами в редакторе;
◽улучшенное API для работы с формами;
◽расширенные возможности таблиц, в том числе по построению диаграмм;
◽чат и онлайн комментарии для совместной работы с документами;
◽улучшенная работа с плагинами.
Если хотите сами посмотреть нововведения этой версии, то вот видео от разработчиков:
▶️ Introducing ONLYOFFICE Docs 8.0
В рассылке с обновлением авторы продукта предложили получить community version с сайта Univention App Center. Не знаю, с чем это связано. Возможно какое-то сотрудничество организовали. Этот app center представляет собой магазин приложений для другого продукта - Univention Corporate Server (UCS), про который я ранее писал отдельно. На странице Univention App Center Catalog также можно сразу загрузить образы виртуальных машин, где ONLYOFFICE Docs интегрированы в Nextcloud или ownCloud. Я не понял, как все эти продукты между собой связаны и почему они все оказались на сайте UCS.
Сам я всегда использовал этот редактор документов в составе бесплатной версии ONLYOFFICE Workspace Community, который проще всего установить через Docker. Для этого есть готовый скрипт, который всё делает за вас:
# wget https://download.onlyoffice.com/install/workspace-install.sh
# bash workspace-install.sh
На вопрос установки через Docker ответьте утвердительно, а на запрос установки почтового сервера ответьте отказом. В общем случае не рекомендую ставить почтовый сервер в составе Workspace, так как в этом нет большого смысла. Лучше поднять его отдельно или использовать внешний сервер. А в Workspace можно подключать ящики по imap и отправлять по smtp. Там полноценный веб клиент есть. Но можете и встроенный попробовать, если сильно хочется и лень заморачиваться с отдельным сервером. Будет отдельный контейнер с postfix.
После установки идёте по IP адресу сервера и выполняете начальную настройку. Если в процессе тестирования поймёте, что продукт вам подходит, тогда уже можно более детально разобраться в установке: поменять все дефолтные учётки в скриптах, вынести отдельные директории на нужные диски и т.д. Также можно вручную установить через Docker Compose, аккуратно настроив все переменные.
❗️Продукт довольно жирный, так что устанавливать рекомендую на виртуалку с 4 vCPU и 8 Gb памяти. Установка очень простая. Буквально две команды, что я привёл выше, и можно идти, пользоваться. Никаких дополнительных настроек делать не надо, чтобы всё заработало.
ONLYOFFICE Workspace очень приятный продукт, в котором реализованы множество интеграций. Зайдите в раздел Настройки ⇨ Интеграция и оцените сами. Можно подключить облако Selectel, вход по учётке VK или Яндекс, уведомления в Telegram и т.д. Также загляните в раздел Настройки ⇨ Панель управления и оцените возможности. Там можно настроить https, бэкап и восстановление, брендирование, поиск, ldap, sso и многое другое.
Отдельно отмечу, что у этих же авторов есть полностью бесплатные Desktop и Mobile приложения для работы с офисными документами. Туда тоже все эти обновления приехали, так как они по сути обёртки над веб сервисом, написанном на javascript. Благодаря этому, редакторы доступны под все популярные ОС.
#onlyoffice #docs