🎅 PowerShell: Спасаем пользователей от блокировки в Новый год
Декабрь. Пользователи уходят в отпуск на 2-3 недели. Сценарий фильма ужасов: у сотрудника истекает пароль 3 января. Он пытается подключиться к VPN/почте из дома, получает ошибку «Password Expired» и звонит вам в праздники.
Давайте найдем всех, у кого пароль протухнет в ближайшие 30 дней, и предупредим их.
Скрипт:
Запустите сегодня. Это спасет ваши новогодние каникулы.
#powershell #activedirectory #scripting #automation #newyear
Декабрь. Пользователи уходят в отпуск на 2-3 недели. Сценарий фильма ужасов: у сотрудника истекает пароль 3 января. Он пытается подключиться к VPN/почте из дома, получает ошибку «Password Expired» и звонит вам в праздники.
Давайте найдем всех, у кого пароль протухнет в ближайшие 30 дней, и предупредим их.
Скрипт:
$DaysToWarn = 30
$Users = Get-ADUser -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress
foreach ($User in $Users) {
$ExpiryDate = [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")
$DaysLeft = ($ExpiryDate - (Get-Date)).Days
if ($DaysLeft -ge 0 -and $DaysLeft -lt $DaysToWarn) {
Write-Host "⚠️ $($User.Name): Пароль истекает через $DaysLeft дн. ($ExpiryDate)" -ForegroundColor Yellow
# Тут можно раскомментировать отправку письма
# Send-MailMessage -To $User.EmailAddress -Subject "Смените пароль!" ...
}
}
Запустите сегодня. Это спасет ваши новогодние каникулы.
#powershell #activedirectory #scripting #automation #newyear
🛡 Fail2Ban устарел. Встречайте CrowdSec
Мы годами ставили fail2ban, чтобы банить ботов, брутфорсящих SSH. Он хороший, но он — одиночка. Он знает только то, что происходит на вашем сервере.
В 2025 году тренд — CrowdSec. Это "Waze для кибербезопасности".
В чем киллер-фича: Если IP-адрес атакует моего соседа (тоже пользователя CrowdSec), этот IP попадает в черный список. Через 5 минут мой сервер уже знает об этом IP и блокирует его превентивно.
Почему стоит перейти:
Коллективный разум: База репутации IP обновляется в реальном времени.
Универсальность: Парсит логи не только SSH, но и Nginx, Docker, Kubernetes, AWS CloudTrail.
Bouncers: Умеет банить не только через iptables, но и на уровне Cloudflare, Nginx или даже отправлять Captcha.
Установка:
Один в поле не воин. Объединяйте сервера в защиту.
#security #linux #opensource #crowdsec #fail2ban #tools
Мы годами ставили fail2ban, чтобы банить ботов, брутфорсящих SSH. Он хороший, но он — одиночка. Он знает только то, что происходит на вашем сервере.
В 2025 году тренд — CrowdSec. Это "Waze для кибербезопасности".
В чем киллер-фича: Если IP-адрес атакует моего соседа (тоже пользователя CrowdSec), этот IP попадает в черный список. Через 5 минут мой сервер уже знает об этом IP и блокирует его превентивно.
Почему стоит перейти:
Коллективный разум: База репутации IP обновляется в реальном времени.
Универсальность: Парсит логи не только SSH, но и Nginx, Docker, Kubernetes, AWS CloudTrail.
Bouncers: Умеет банить не только через iptables, но и на уровне Cloudflare, Nginx или даже отправлять Captcha.
Установка:
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec
Один в поле не воин. Объединяйте сервера в защиту.
#security #linux #opensource #crowdsec #fail2ban #tools
👍2
🕵️♂️ MTR: Трассировка на стероидах
Когда интернет «лагает», мы привыкли запускать ping или traceroute. Но первый не показывает, на какой ноде теряются пакеты, а второй — это разовый снимок, который часто врет из-за ICMP-фильтров.
Настоящий профи использует MTR (My Traceroute).
В чем магия: MTR объединяет возможности обеих команд, постоянно отправляя пакеты и обновляя статистику в реальном времени.
На что смотреть (Столбцы):
1. Loss%: Показывает потерю пакетов. Если Loss на 3-м прыжке, но на 4-м его нет — это просто провайдер игнорирует ICMP. Если Loss растет от прыжка к прыжку — это реальная проблема.
2. WRST (Worst): Худший отклик. Помогает поймать кратковременные всплески задержки (Jitter).
Команда дня (режим отчета для тикета провайдеру):
(-r — report, -w — wide. Выдает красивый текст, который можно смело слать в техподдержку)
#linux #network #mtr #troubleshooting #cli
Когда интернет «лагает», мы привыкли запускать ping или traceroute. Но первый не показывает, на какой ноде теряются пакеты, а второй — это разовый снимок, который часто врет из-за ICMP-фильтров.
Настоящий профи использует MTR (My Traceroute).
В чем магия: MTR объединяет возможности обеих команд, постоянно отправляя пакеты и обновляя статистику в реальном времени.
На что смотреть (Столбцы):
1. Loss%: Показывает потерю пакетов. Если Loss на 3-м прыжке, но на 4-м его нет — это просто провайдер игнорирует ICMP. Если Loss растет от прыжка к прыжку — это реальная проблема.
2. WRST (Worst): Худший отклик. Помогает поймать кратковременные всплески задержки (Jitter).
Команда дня (режим отчета для тикета провайдеру):
mtr -rw google.com
(-r — report, -w — wide. Выдает красивый текст, который можно смело слать в техподдержку)
#linux #network #mtr #troubleshooting #cli
🧹 PowerShell: Чистим старые профили пользователей
Знакомая ситуация: на терминальном сервере или ПК общего пользования за год накопилось 50 профилей уволенных или случайных людей. Диск C: кричит о помощи.
Не удаляйте папки вручную в C:\Users! Это сломает реестр. Делаем через WMI.
Скрипт (удалить профили старше 60 дней):
⚠️ Важно: Скрипт не тронет системные профили (Special). Но перед запуском убедитесь, что в списке нет вашего босса, который просто давно не заходил на этот сервер.
#windows #powershell #cleanup #sysadmin #automation
Знакомая ситуация: на терминальном сервере или ПК общего пользования за год накопилось 50 профилей уволенных или случайных людей. Диск C: кричит о помощи.
Не удаляйте папки вручную в C:\Users! Это сломает реестр. Делаем через WMI.
Скрипт (удалить профили старше 60 дней):
$Limit = (Get-Date).AddDays(-60)
# Получаем профили, которые не использовались более 60 дней
$Profiles = Get-CimInstance Win32_UserProfile |
Where-Object { $_.LastUseTime -lt $Limit -and $_.Special -eq $false }
foreach ($Profile in $Profiles) {
Write-Host "🗑 Удаляю профиль: $($Profile.LocalPath)" -ForegroundColor Yellow
$Profile | Remove-CimInstance
}
⚠️ Важно: Скрипт не тронет системные профили (Special). Но перед запуском убедитесь, что в списке нет вашего босса, который просто давно не заходил на этот сервер.
#windows #powershell #cleanup #sysadmin #automation
🌈 Linux: Хватит смотреть в серый tail -f
Логи в консоли — это поток боли для глаз. Давайте добавим красок, чтобы ошибки сами бросались в глаза. Используйте lnav (The Log File Navigator).
Почему это круто:
1. Авто-раскраска: Сама подсвечивает IP-адреса, даты, ошибки (красным) и предупреждения (желтым).
2. Слияние: Можно открыть 5 лог-файлов одновременно, и lnav перемешает их по времени в один поток. Идеально для отладки связки Nginx + PHP-FPM.
3. SQL-запросы: Можно писать SELECT * FROM log прямо в консоли.
Установка:
Просто введите lnav /var/log/nginx/access.log и почувствуйте себя в будущем.
#linux #logs #lnav #cli #productivity
Логи в консоли — это поток боли для глаз. Давайте добавим красок, чтобы ошибки сами бросались в глаза. Используйте lnav (The Log File Navigator).
Почему это круто:
1. Авто-раскраска: Сама подсвечивает IP-адреса, даты, ошибки (красным) и предупреждения (желтым).
2. Слияние: Можно открыть 5 лог-файлов одновременно, и lnav перемешает их по времени в один поток. Идеально для отладки связки Nginx + PHP-FPM.
3. SQL-запросы: Можно писать SELECT * FROM log прямо в консоли.
Установка:
sudo apt install lnav
Просто введите lnav /var/log/nginx/access.log и почувствуйте себя в будущем.
#linux #logs #lnav #cli #productivity
🔥3
🐘 PostgreSQL: Почему база растет, если я удаляю данные?
Классика: вы удалили миллион строк из таблицы, а место на диске не освободилось. Добро пожаловать в мир MVCC (Multi-Version Concurrency Control).
В Postgres при удалении (DELETE) строка не стирается физически. Она помечается как «мертвая» (dead tuple). Но место всё ещё занято.
❌ Ошибка джуна: Запустить VACUUM FULL. Это освободит место, НО заблокирует таблицу намертво (Access Exclusive Lock). Ваш прод встанет.
✅ Путь Архитектора:
Настройте Autovacuum. Он должен работать агрессивнее, чтобы «мертвецы» не накапливались.
Используйте pg_repack (или pg_squeeze). Это расширение позволяет пересобрать таблицу и вернуть место ОС без блокировок чтения/записи.
Шпаргалка по проверке "вздутия" (Bloat): Вам не нужны сложные скрипты, поставьте pg-bloat-check или используйте запрос:
Если bloat_ratio > 0.2 (20%) — пора звать автовакуум.
#postgresql #database #dba #performance #sql
Классика: вы удалили миллион строк из таблицы, а место на диске не освободилось. Добро пожаловать в мир MVCC (Multi-Version Concurrency Control).
В Postgres при удалении (DELETE) строка не стирается физически. Она помечается как «мертвая» (dead tuple). Но место всё ещё занято.
❌ Ошибка джуна: Запустить VACUUM FULL. Это освободит место, НО заблокирует таблицу намертво (Access Exclusive Lock). Ваш прод встанет.
✅ Путь Архитектора:
Настройте Autovacuum. Он должен работать агрессивнее, чтобы «мертвецы» не накапливались.
Используйте pg_repack (или pg_squeeze). Это расширение позволяет пересобрать таблицу и вернуть место ОС без блокировок чтения/записи.
Шпаргалка по проверке "вздутия" (Bloat): Вам не нужны сложные скрипты, поставьте pg-bloat-check или используйте запрос:
SELECT schemaname, relname, n_dead_tup, n_live_tup,
(n_dead_tup::float / n_live_tup::float) as bloat_ratio
FROM pg_stat_user_tables
WHERE n_dead_tup > 0;
Если bloat_ratio > 0.2 (20%) — пора звать автовакуум.
#postgresql #database #dba #performance #sql
🚀 Windows: Хватит гуглить инсталляторы. Используй Winget
В 2025 году открывать браузер, чтобы скачать Chrome, 7-Zip или VS Code — это моветон. В Windows уже встроен нативный пакетный менеджер, как apt или brew.
Встречайте Winget.
1. Установка софта одной командой:
2. Обновление ВСЕГО софта разом: Это киллер-фича. Она обновляет даже то, что вы ставили вручную 5 лет назад.
3. Экспорт софта для нового ПК: Готовите ноутбук новому сотруднику?
Слейте список со старого:
И накатите на новом:
Это превращает настройку Windows из "кликомании" в нормальный DevOps-процесс.
#windows #winget #cli #automation #productivity
В 2025 году открывать браузер, чтобы скачать Chrome, 7-Zip или VS Code — это моветон. В Windows уже встроен нативный пакетный менеджер, как apt или brew.
Встречайте Winget.
1. Установка софта одной командой:
winget install --id Microsoft.PowerToys
winget install --id 7zip.7zip
2. Обновление ВСЕГО софта разом: Это киллер-фича. Она обновляет даже то, что вы ставили вручную 5 лет назад.
winget upgrade --all
3. Экспорт софта для нового ПК: Готовите ноутбук новому сотруднику?
Слейте список со старого:
winget export -o packages.json
И накатите на новом:
winget import -i packages.json
Это превращает настройку Windows из "кликомании" в нормальный DevOps-процесс.
#windows #winget #cli #automation #productivity
👍3
🏎 Linux: iperf3 — когда "сеть тормозит"
Пользователь жалуется: "Файлы копируются медленно!". Сетевик говорит: "Линк гигабитный, порт зеленый, отстань".
Кто прав? Рассудит iperf3. Он меряет реальную пропускную способность TCP/UDP, а не физическую скорость порта.
Сценарий: Запускаем тест между сервером (где лежат файлы) и клиентом.
На сервере (режим Server):
На клиенте (режим Client):
Результат: Если порт 1 Gbit/s, а iperf показывает 940 Mbits/sec — сеть идеальна, проблема в дисках или протоколе SMB. Если показывает 100 Mbits/sec — ищите битый патч-корд, который свалился в 100Mb Half-Duplex.
#network #linux #troubleshooting #iperf #cli
Пользователь жалуется: "Файлы копируются медленно!". Сетевик говорит: "Линк гигабитный, порт зеленый, отстань".
Кто прав? Рассудит iperf3. Он меряет реальную пропускную способность TCP/UDP, а не физическую скорость порта.
Сценарий: Запускаем тест между сервером (где лежат файлы) и клиентом.
На сервере (режим Server):
iperf3 -s
На клиенте (режим Client):
# -c : ip сервера
# -P 4 : в 4 потока (чтобы нагрузить канал полностью)
# -R : Reverse mode (тест скачивания С сервера, а не заливки НА него)
iperf3 -c 192.168.1.10 -P 4 -R
Результат: Если порт 1 Gbit/s, а iperf показывает 940 Mbits/sec — сеть идеальна, проблема в дисках или протоколе SMB. Если показывает 100 Mbits/sec — ищите битый патч-корд, который свалился в 100Mb Half-Duplex.
#network #linux #troubleshooting #iperf #cli
🛡 Правило 3-2-1 устарело. Встречайте 3-2-1-1-0
Нас всех учили правилу бэкапов 3-2-1:
* 3 копии данных.
* 2 разных носителя.
* 1 копия офлайн (вне офиса).
В 2025 году, в эру программ-вымогателей (Ransomware), этого мало. Шифровальщики научились находить сетевые бэкапы и шифровать их тоже.
Новый стандарт — 3-2-1-1-0:
* 3 копии данных.
* 2 разных типа носителей.
* 1 копия вне офиса (Cloud/Remote).
* 1 копия Immutable (Неизменяемая) или Air-Gapped (Физически отключенная).
Immutable: Это флаг в S3 (AWS/MinIO) или Veeam Hardened Repository. Даже если хакер получит root-права, он не сможет удалить или зашифровать этот бэкап в течение заданного времени (например, 30 дней).
* 0 ошибок при проверке восстановления (SureBackup). Бэкап, который вы не тестово не развернули — это не бэкап, а надежда.
Проверьте свои репозитории. Если у вас нет Immutable-копии — вы беззащитны перед шифровальщиком.
#backup #security #ransomware #veeam #architecture #bestpractice
Нас всех учили правилу бэкапов 3-2-1:
* 3 копии данных.
* 2 разных носителя.
* 1 копия офлайн (вне офиса).
В 2025 году, в эру программ-вымогателей (Ransomware), этого мало. Шифровальщики научились находить сетевые бэкапы и шифровать их тоже.
Новый стандарт — 3-2-1-1-0:
* 3 копии данных.
* 2 разных типа носителей.
* 1 копия вне офиса (Cloud/Remote).
* 1 копия Immutable (Неизменяемая) или Air-Gapped (Физически отключенная).
Immutable: Это флаг в S3 (AWS/MinIO) или Veeam Hardened Repository. Даже если хакер получит root-права, он не сможет удалить или зашифровать этот бэкап в течение заданного времени (например, 30 дней).
* 0 ошибок при проверке восстановления (SureBackup). Бэкап, который вы не тестово не развернули — это не бэкап, а надежда.
Проверьте свои репозитории. Если у вас нет Immutable-копии — вы беззащитны перед шифровальщиком.
#backup #security #ransomware #veeam #architecture #bestpractice
🔥2
🛑 Active Directory: Защита от «Упс, я удалил OU»
Знакомая история: админ хотел удалить компьютер, промахнулся мышкой и удалил целое подразделение (Organizational Unit) вместе с юзерами и группами. Восстановление из корзины (AD Recycle Bin) — это стресс. Лучше предотвратить.
Включаем Protect object from accidental deletion массово.
PowerShell-скрипт для всех OU:
Задача: Запустите это сегодня. Это тот самый «ремень безопасности», который однажды спасет вам карьеру. P.S. Чтобы реально удалить OU потом, галочку придется снять вручную.
#activedirectory #windows #powershell #security #failsafe
Знакомая история: админ хотел удалить компьютер, промахнулся мышкой и удалил целое подразделение (Organizational Unit) вместе с юзерами и группами. Восстановление из корзины (AD Recycle Bin) — это стресс. Лучше предотвратить.
Включаем Protect object from accidental deletion массово.
PowerShell-скрипт для всех OU:
# Импортируем модуль
Import-Module ActiveDirectory
# Ищем все OU, где защита ВЫКЛЮЧЕНА, и включаем её
Get-ADOrganizationalUnit -Filter * -Properties ProtectedFromAccidentalDeletion |
Where-Object { $_.ProtectedFromAccidentalDeletion -eq $false } |
Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true -PassThru |
Select-Object Name, DistinguishedName
Задача: Запустите это сегодня. Это тот самый «ремень безопасности», который однажды спасет вам карьеру. P.S. Чтобы реально удалить OU потом, галочку придется снять вручную.
#activedirectory #windows #powershell #security #failsafe
📄 Linux: gron — делаем JSON читаемым
Все знают утилиту jq. Она мощная, но синтаксис запросов там — это отдельный язык программирования, который вечно забываешь. Когда нужно просто "грепнуть" JSON, используйте gron.
Он превращает иерархический JSON в плоский список (greppable output).
Было (JSON):
Стало (gron):
Кейс: Найти ID пользователя "guest".
Установка: sudo apt install gron или скачать бинарник с GitHub.
#linux #tools #json #cli #productivity #gron
Все знают утилиту jq. Она мощная, но синтаксис запросов там — это отдельный язык программирования, который вечно забываешь. Когда нужно просто "грепнуть" JSON, используйте gron.
Он превращает иерархический JSON в плоский список (greppable output).
Было (JSON):
{
"users": [
{ "name": "admin", "id": 1 },
{ "name": "guest", "id": 2 }
]
}
Стало (gron):
json.users[0].name = "admin";
json.users[0].id = 1;
json.users[1].name = "guest";
json.users[1].id = 2;
Кейс: Найти ID пользователя "guest".
gron users.json | grep "guest"
# Вывод: json.users[1].name = "guest";
# Ага, это индекс [1]!
Установка: sudo apt install gron или скачать бинарник с GitHub.
#linux #tools #json #cli #productivity #gron
👮♂️ Linux: Настраиваем sudo как Архитектор
Давать пользователю ALL=(ALL) ALL — это лень, граничащая с преступлением. Если разработчику нужно только перезапускать Nginx, дайте ему право только на это.
Редактируем файл (ТОЛЬКО через visudo!):
1. Создаем алиас команды (чтобы не писать пути):
2. Даем права конкретной группе:
Что мы сделали:
* %web_team — группа пользователей.
* (root) — от чьего имени запускаем.
* NOPASSWD — не спрашивать пароль (удобно для скриптов).
* RESTART_NGINX — разрешили только эти команды.
Теперь, если дев попытается сделать sudo rm -rf /, система вежливо его пошлет.
#linux #security #sudo #accesscontrol #bestpractice
Давать пользователю ALL=(ALL) ALL — это лень, граничащая с преступлением. Если разработчику нужно только перезапускать Nginx, дайте ему право только на это.
Редактируем файл (ТОЛЬКО через visudo!):
1. Создаем алиас команды (чтобы не писать пути):
Cmnd_Alias RESTART_NGINX = /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx
2. Даем права конкретной группе:
%web_team ALL=(root) NOPASSWD: RESTART_NGINX
Что мы сделали:
* %web_team — группа пользователей.
* (root) — от чьего имени запускаем.
* NOPASSWD — не спрашивать пароль (удобно для скриптов).
* RESTART_NGINX — разрешили только эти команды.
Теперь, если дев попытается сделать sudo rm -rf /, система вежливо его пошлет.
#linux #security #sudo #accesscontrol #bestpractice
👍2
🤔 Проблема X-Y: Почему пользователи врут (не специально)
Один из главных навыков Сеньора — умение распознать X-Y Problem. Это сэкономит вам часы отладки.
Ситуация: Пользователь (или Джун) приходит и спрашивает:
«Как мне получить последние 3 символа строки в Bash?» (Это проблема Y)
Вы тратите время, пишете sed или awk команду. А потом выясняется, что он хотел узнать расширение файла (Проблема X), и ваше решение ломается на файлах типа .tar.gz.
Суть: Пользователь столкнулся с проблемой X. Он придумал кривое решение Y, но не знает, как его реализовать. И спрашивает вас про Y, скрывая реальную задачу.
Решение: Всегда задавайте вопрос: «А какую конечную задачу ты пытаешься решить?». В 90% случаев окажется, что нужно не «парсить строку», а просто взять готовую утилиту или API.
Не чините костыли. Ищите причину.
#softskills #problemsovling #psychology #adminlife #management
Один из главных навыков Сеньора — умение распознать X-Y Problem. Это сэкономит вам часы отладки.
Ситуация: Пользователь (или Джун) приходит и спрашивает:
«Как мне получить последние 3 символа строки в Bash?» (Это проблема Y)
Вы тратите время, пишете sed или awk команду. А потом выясняется, что он хотел узнать расширение файла (Проблема X), и ваше решение ломается на файлах типа .tar.gz.
Суть: Пользователь столкнулся с проблемой X. Он придумал кривое решение Y, но не знает, как его реализовать. И спрашивает вас про Y, скрывая реальную задачу.
Решение: Всегда задавайте вопрос: «А какую конечную задачу ты пытаешься решить?». В 90% случаев окажется, что нужно не «парсить строку», а просто взять готовую утилиту или API.
Не чините костыли. Ищите причину.
#softskills #problemsovling #psychology #adminlife #management
🕵️♂️ Linux: Кто трогал этот файл? (auditd)
Иногда ls -l и last недостаточно. Вам нужно знать: кто, когда и какой процесс изменил критический конфиг /etc/passwd или удалил файл базы данных.
Включаем подсистему аудита ядра — auditd.
1. Ставим слежку за файлом:
2. Смотрим отчет: Кто трогал файл?
Вы увидите всё: PID процесса, UID пользователя и даже команду, которой это было сделано. Незаменимо при разборе инцидентов.
#linux #security #audit #forensics #securityhardening
Иногда ls -l и last недостаточно. Вам нужно знать: кто, когда и какой процесс изменил критический конфиг /etc/passwd или удалил файл базы данных.
Включаем подсистему аудита ядра — auditd.
1. Ставим слежку за файлом:
# -w : watch (следить за файлом)
# -p wa : permission write/attribute (запись или смена прав)
# -k passwd_change : ключ поиска (тег для логов)
auditctl -w /etc/passwd -p wa -k passwd_change
2. Смотрим отчет: Кто трогал файл?
ausearch -k passwd_change
Вы увидите всё: PID процесса, UID пользователя и даже команду, которой это было сделано. Незаменимо при разборе инцидентов.
#linux #security #audit #forensics #securityhardening
🏎 TCP BBR: Ускоряем интернет одной строкой
Вы знали, что Linux по умолчанию использует алгоритм контроля перегрузки сети CUBIC, разработанный в 2000-х? Он считает, что если пакет потерялся — канал забит, и резко снижает скорость. Но в 2025 году потеря пакетов не всегда означает перегрузку (привет, Wi-Fi и LTE).
Google придумал BBR (Bottleneck Bandwidth and RTT). Он не смотрит на потери пакетов. Он строит модель пропускной способности канала.
Результат: На серверах с высоким пингом или нестабильным каналом (VPN, трансграничный трафик) скорость скачивания вырастает в разы.
Как включить (Ядро 4.9+):
Проверяем доступность:
Включаем:
Проверяем:
Попробуйте включить это на своем VPN-сервере или прокси. Разница вас шокирует.
#linux #network #performance #bbr #kernel #optimization
Вы знали, что Linux по умолчанию использует алгоритм контроля перегрузки сети CUBIC, разработанный в 2000-х? Он считает, что если пакет потерялся — канал забит, и резко снижает скорость. Но в 2025 году потеря пакетов не всегда означает перегрузку (привет, Wi-Fi и LTE).
Google придумал BBR (Bottleneck Bandwidth and RTT). Он не смотрит на потери пакетов. Он строит модель пропускной способности канала.
Результат: На серверах с высоким пингом или нестабильным каналом (VPN, трансграничный трафик) скорость скачивания вырастает в разы.
Как включить (Ядро 4.9+):
Проверяем доступность:
modprobe tcp_bbr
Включаем:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
Проверяем:
sysctl net.ipv4.tcp_congestion_control
# Должно быть: bbr
Попробуйте включить это на своем VPN-сервере или прокси. Разница вас шокирует.
#linux #network #performance #bbr #kernel #optimization
🆘 REISUB: Как перезагрузить намертво зависший Linux?
Ситуация: Сервер завис. SSH не отвечает. Консоль не реагирует. Эникейщик тянется к кнопке Reset (Hard Reset). Это риск убить файловую систему.
Архитектор использует Magic SysRq Key. Это прямые команды ядру, которые работают, даже если система лежит.
Заклинание: R E I S U B (Запоминалка: Reboot Even If System Utterly Broken)
Если у вас есть доступ к физической клавиатуре (или KVM): Зажимаем Alt + SysRq (PrintScreen) и медленно вводим по очереди:
R (Raw) — перехват клавиатуры у X-сервера.
E (Term) — посылает SIGTERM всем процессам (попытка мягко завершить).
I (Kill) — посылает SIGKILL всем, кто не умер (жесткое убийство).
S (Sync) — самое важное! Сбрасывает кэш на диск (спасает данные).
U (Unmount) — перемонтирует диски в Read-Only.
B (Reboot) — перезагрузка.
Как проверить, включено ли: cat /proc/sys/kernel/sysrq (должно быть 1 или маска 176).
Сохрани. Однажды это спасет твою базу данных от коррупции.
#linux #kernel #troubleshooting #sysrq #recovery #hacks
Ситуация: Сервер завис. SSH не отвечает. Консоль не реагирует. Эникейщик тянется к кнопке Reset (Hard Reset). Это риск убить файловую систему.
Архитектор использует Magic SysRq Key. Это прямые команды ядру, которые работают, даже если система лежит.
Заклинание: R E I S U B (Запоминалка: Reboot Even If System Utterly Broken)
Если у вас есть доступ к физической клавиатуре (или KVM): Зажимаем Alt + SysRq (PrintScreen) и медленно вводим по очереди:
R (Raw) — перехват клавиатуры у X-сервера.
E (Term) — посылает SIGTERM всем процессам (попытка мягко завершить).
I (Kill) — посылает SIGKILL всем, кто не умер (жесткое убийство).
S (Sync) — самое важное! Сбрасывает кэш на диск (спасает данные).
U (Unmount) — перемонтирует диски в Read-Only.
B (Reboot) — перезагрузка.
Как проверить, включено ли: cat /proc/sys/kernel/sysrq (должно быть 1 или маска 176).
Сохрани. Однажды это спасет твою базу данных от коррупции.
#linux #kernel #troubleshooting #sysrq #recovery #hacks
👍3
📦 Windows Sandbox: Изолятор для подозрительного софта
Ситуация: Нужно запустить странный .exe или скрипт, который прислал юзер. ❌ Плохо: Запускать на своей машине («авось пронесет»). ❌ Долго: Разворачивать виртуалку в Hyper-V/VMware. ✅ Архитектор: Запускает Windows Sandbox.
Это встроенная в Pro/Enterprise версию легковесная виртуалка. Она грузится за 5 секунд, использует ваше текущее ядро Windows, но полностью изолирована. Главная фишка: Как только вы закрываете окно — всё содержимое уничтожается. Никаких следов.
Как включить (PowerShell):
Pro Tip: Можно создать конфиг .wsb, чтобы пробрасывать внутрь папки с хоста (Read-Only) или запускать скрипты при старте.
Идеально для тестов софта и открытия подозрительных вложений.
#windows #security #sandbox #testing #bestpractice
Ситуация: Нужно запустить странный .exe или скрипт, который прислал юзер. ❌ Плохо: Запускать на своей машине («авось пронесет»). ❌ Долго: Разворачивать виртуалку в Hyper-V/VMware. ✅ Архитектор: Запускает Windows Sandbox.
Это встроенная в Pro/Enterprise версию легковесная виртуалка. Она грузится за 5 секунд, использует ваше текущее ядро Windows, но полностью изолирована. Главная фишка: Как только вы закрываете окно — всё содержимое уничтожается. Никаких следов.
Как включить (PowerShell):
Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online
(Потребуется перезагрузка)
Pro Tip: Можно создать конфиг .wsb, чтобы пробрасывать внутрь папки с хоста (Read-Only) или запускать скрипты при старте.
Идеально для тестов софта и открытия подозрительных вложений.
#windows #security #sandbox #testing #bestpractice
🧠 eBPF: Почему все о нем говорят?
Если вы слышите слово eBPF из каждого утюга, но боитесь спросить, что это — объясняем за 30 секунд.
Раньше, чтобы добавить новую фичу в ядро Linux (или глубоко отладить его), нужно было писать модуль ядра (Kernel Module). Ошибка в модуле = Kernel Panic (синий экран смерти).
eBPF (Extended Berkeley Packet Filter) — это безопасная виртуальная машина прямо внутри ядра Linux. Она позволяет запускать ваши скрипты (песочницу) в пространстве ядра без риска обрушить систему и без пересборки ядра.
Что это дает админу в 2025:
Супер-мониторинг: Утилиты нового поколения (типа bcc-tools) видят каждый чих системы, не нагружая её.
Сетевая магия: Инструменты типа Cilium фильтруют пакеты быстрее, чем iptables, потому что делают это до того, как пакет попадет в сетевой стек.
Попробовать прямо сейчас: Поставьте bpfcc-tools (Ubuntu) или bcc-tools (CentOS). Запустите execsnoop. Вы увидите каждый новый процесс, запускаемый в системе в реальном времени.
#linux #kernel #ebpf #future #architecture #learning
Если вы слышите слово eBPF из каждого утюга, но боитесь спросить, что это — объясняем за 30 секунд.
Раньше, чтобы добавить новую фичу в ядро Linux (или глубоко отладить его), нужно было писать модуль ядра (Kernel Module). Ошибка в модуле = Kernel Panic (синий экран смерти).
eBPF (Extended Berkeley Packet Filter) — это безопасная виртуальная машина прямо внутри ядра Linux. Она позволяет запускать ваши скрипты (песочницу) в пространстве ядра без риска обрушить систему и без пересборки ядра.
Что это дает админу в 2025:
Супер-мониторинг: Утилиты нового поколения (типа bcc-tools) видят каждый чих системы, не нагружая её.
Сетевая магия: Инструменты типа Cilium фильтруют пакеты быстрее, чем iptables, потому что делают это до того, как пакет попадет в сетевой стек.
Попробовать прямо сейчас: Поставьте bpfcc-tools (Ubuntu) или bcc-tools (CentOS). Запустите execsnoop. Вы увидите каждый новый процесс, запускаемый в системе в реальном времени.
#linux #kernel #ebpf #future #architecture #learning
🟢 Caddy: Веб-сервер для тех, кто ценит время
Nginx прекрасен, но настройка HTTPS, получение сертификатов Let's Encrypt и ротация ключей — это рутина. Если вы поднимаете пет-проект или домашний сервер, взгляните на Caddy.
Это веб-сервер нового поколения, написанный на Go.
Киллер-фича: Автоматический HTTPS по умолчанию. Вы просто пишете домен в конфиге, и Caddy сам стучится в Let's Encrypt, получает сертификат, привязывает его и настраивает редирект с HTTP на HTTPS.
Конфиг (Caddyfile) для Reverse Proxy: Вместо 50 строк в Nginx, здесь всего 3:
Всё. HTTP/3 (QUIC) включен из коробки. Сертификат получен. Прокси работает. Идеально для выходных экспериментов.
#caddy #web #nginx #https #homelab #opensource
Nginx прекрасен, но настройка HTTPS, получение сертификатов Let's Encrypt и ротация ключей — это рутина. Если вы поднимаете пет-проект или домашний сервер, взгляните на Caddy.
Это веб-сервер нового поколения, написанный на Go.
Киллер-фича: Автоматический HTTPS по умолчанию. Вы просто пишете домен в конфиге, и Caddy сам стучится в Let's Encrypt, получает сертификат, привязывает его и настраивает редирект с HTTP на HTTPS.
Конфиг (Caddyfile) для Reverse Proxy: Вместо 50 строк в Nginx, здесь всего 3:
my-project.com {
reverse_proxy localhost:3000
}
Всё. HTTP/3 (QUIC) включен из коробки. Сертификат получен. Прокси работает. Идеально для выходных экспериментов.
#caddy #web #nginx #https #homelab #opensource
👍2