Admin Future
239 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
🪟 Windows Server: Почему тормозит RDP? Отключаем UDP.

Замечали, что иногда курсор в RDP-сессии двигается рывками, а текст печатается с задержкой? По умолчанию современный RDP (начиная с версии 8.0) пытается использовать протокол UDP для ускорения графики. Но на нестабильных каналах или при наличии определенных файерволов это дает обратный эффект.

Как «вылечить» и сделать сессию плавной: Нужно принудительно заставить RDP работать только через TCP.

1. Нажмите Win + R, введите gpedit.msc.

2. Путь: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Удаленная сессия.

3. Найдите: «Выбор протоколов передачи данных удаленного рабочего стола».

4. Установите: «Включено» и выберите «Только TCP».

После этого задержки (input lag) обычно пропадают.

#windows #server #rdp #sysadmin #troubleshooting #it
👍2
🌐 Networking: MTU и «загадочные» проблемы с загрузкой сайтов

Бывает так: пинг идет, SSH работает, но как только вы пытаетесь открыть тяжелый сайт или передать файл — соединение обрывается. В 99% случаев это проблема MTU (Maximum Transmission Unit). Пакет слишком велик для какого-то узла в цепочке, а ICMP-сообщения о фрагментации заблокированы (PMTUD failure).

Как найти идеальный MTU вручную: Используйте пинг с запретом фрагментации (-f в Windows, -M do в Linux):

Windows:

ping google.com -f -l 1472 Linux: ping google.com -M do -s 1472

Если пишет «Требуется фрагментация», уменьшайте число 1472 на 10, пока пинг не пройдет. К полученному числу прибавьте 28 байт (заголовки IP/ICMP) — это и будет ваш идеальный MTU.

#networking #tcpip #mtu #ping #troubleshooting #network
👍2
🧠 Skills: Триада системного администратора в 2026 году

Просто «уметь переустанавливать ОС» уже недостаточно. Чтобы не остаться на зарплате эникейщика, фокус в обучении должен сместиться с инструментов на принципы.

Что качать сейчас:

1. Infrastructure as Code (IaC): Перестаньте настраивать серверы руками. Если вы не знаете Terraform или Ansible (хотя бы базу), вы тратите свое время.

2. Observability: Умение не просто смотреть в top, а настраивать алертинг в Prometheus/Grafana так, чтобы знать о проблеме до того, как позвонит директор.

3. Soft Skills (умение договариваться): Технари часто это игнорируют. Но умение обосновать бюджет на новые диски или объяснить бизнесу, почему «бэкап — это не роскошь», ценится дороже, чем знание флагов компиляции ядра.

Инструменты меняются раз в 3 года, фундаментальные навыки управления системами — остаются.

#career #skills #devops #sysadmin #it #learning
👍41🔥1
🐧 Linux: Спасаем диск от Ghost Files (удаленные, но занятые файлы)

Бывает так: df -h говорит, что диск забит на 100%, но du -sh показывает, что папки занимают всего пару гигабайт. Куда делось место? Скорее всего, какой-то процесс (например, nginx или база данных) держит открытым файл, который вы уже удалили командой rm. В Linux файл не удалится физически, пока его держит процесс.

Как найти этих "призраков":

lsof +L1

Что делать: Вы увидите список файлов с пометкой (deleted). Вместо того чтобы убивать процесс (что критично для продакшена), можно просто "обнулить" дескриптор файла:

truncate -s 0 /proc/[PID]/fd/[FD_NUMBER]

Место освободится мгновенно без рестарта сервиса.

#linux #sysadmin #troubleshooting #storage #lsof #filesystems
👍2
🛡️ Security: SSH Fingerprinting — как не стать жертвой Man-in-the-Middle

Когда вы первый раз подключаетесь к серверу, SSH спрашивает: "Are you sure you want to continue connecting?". 99% админов просто пишут yes. Но если кто-то подменил IP или перехватил трафик, вы отдадите свои ключи или пароль злоумышленнику.

Как проверить отпечаток сервера (Fingerprint) по-умному: Перед подключением запросите отпечаток ключа на самом сервере (через консоль ДЦ или KVM):

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Как проверить его локально: Если вы уже подключались и хотите убедиться, что ключ не изменился втихую:

ssh-keygen -l -f ~/.ssh/known_hosts -F [IP_ADDRESS]

Если отпечатки не совпадают — кабель вон из розетки, вас пытаются взломать.

#security #ssh #mitm #linux #infosec #hardening
🚀 Networking: Забытый протокол BFD — детекция падения линка за миллисекунды

Стандартные таймеры в протоколах маршрутизации (OSPF, BGP) довольно медленные. Если упадет промежуточный коммутатор, ваш роутер может ждать до 30-90 секунд, прежде чем поймет, что связи нет, и переключит трафик на резерв.

Решение: BFD (Bidirectional Forwarding Detection). Это легкий протокол, который работает в паре с OSPF/BGP и проверяет связность каждые 50-100 миллисекунд.

Пример настройки (Cisco/Quagga стиль):

interface GigabitEthernet0/1 bfd interval 100 min_rx 100 multiplier 3

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

#networking #bfd #cisco #bgp #highavailability #ospf #network
🐧 Linux: Load Average врёт. Смотри на PSI (Pressure Stall Information)

Админы десятилетиями смотрели на load average.
Но что значит LA 4.0 на 4-ядерном CPU?
Это процессы, которые считают?
Или те, которые ждут диск?
Или ждут память?

Load Average смешивает всё в кучу.

В современных ядрах (Linux 4.20+) есть PSI — метрика, которая показывает реальную боль системы.
Она говорит: «Процессы тупили 15% времени, потому что ждали, пока диск прочитает данные».

Куда смотреть:

/proc/pressure/cpu
/proc/pressure/io
/proc/pressure/memory

Как читать:

cat /proc/pressure/io

Вывод: some avg10=0.00 avg60=0.00 avg300=0.00 total=0 Если avg10 (среднее за 10 сек) равно 20.00, значит, 20% времени ваши задачи просто висели и ждали ввода-вывода. Это точный диагноз тормозов, в отличие от размытого Load Avg.

#linux #performance #psi #kernel #monitoring #troubleshooting #sysadmin
2
🪟 Windows: Pktmon — встроенный «Wireshark», о котором молчит Microsoft

Вам нужно срочно отследить сетевые пакеты на сервере, но ставить Wireshark запрещено политиками безопасности? Начиная с Windows 10/Server 2019, в системе уже есть мощный сниффер — Pktmon.

Он работает на уровне драйверов и видит трафик даже внутри виртуального свитча Hyper-V и контейнеров, где обычный Wireshark слеп.

Как пользоваться:

1. Добавить фильтр (например, порт 443): pktmon filter add -p 443
2. Запустить захват: pktmon start --etw -p 0 -c 0 (пишет в реальном времени)
3. Остановить: pktmon stop
4. Конвертировать лог в понятный формат (txt или pcapng): pktmon etl2pcap pktmon.etl

Теперь полученный файл можно открыть в Wireshark на своей машине. Никакого стороннего софта на проде!

#windows #networking #pktmon #sniffer #security #troubleshooting #powershell
🧠 Skills: Метод USE — священный грааль диагностики

Когда сервер «ложится», паника заставляет админа тыкать во все команды подряд: top , free , ping . Остановитесь. Брендан Грегг (гуру производительности) придумал метод USE, который работает для любой системы, будь то Linux, Windows, SQL или микроволновка.

Для каждого ресурса (CPU, Диск, Память, Сеть) вы должны проверить три параметра:

1. Utilization (Утилизация): Насколько ресурс занят? (в 😵
* Пример: Диск занят на 90%.
2. Saturation (Насыщение): Есть ли очередь из тех, кто не может получить ресурс?
* Пример: Очередь диска (await) выросла.
3. Errors (Ошибки): Есть ли аппаратные или логические сбои?
* Пример: I/O errors в логах контроллера.

Если вы будете идти по этому чеклисту, вы найдете проблему за 2 минуты, а не за 2 часа хаотичного поиска.

#skills #troubleshooting #brendangregg #performance #methodology #admin #career
🐚 Bash: Шаблон «Пуленепробиваемого» скрипта

90% админских скриптов падают молча.
Например, cd /wrong/path не сработал, а следующая команда rm -rf * удалила всё в корне (утрирую, но суть ясна). В 2026 году мы используем Bash Strict Mode и Traps.

Код для начала любого скрипта:

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

# Функция очистки при выходе (даже аварийном)
cleanup() {
echo "🧹 Убираем мусор..."
rm -f /tmp/temp_*.txt
}

# Trap ловит сигналы выхода (EXIT, ошибка, Ctrl+C)
trap cleanup EXIT

echo "🚀 Начинаем работу..."
# Ваш код

Разбор магии:

1. set -e: Скрипт умрет сразу, если любая команда вернет ошибку.
2. set -u: Запрещает использовать пустые переменные (спасает от rm -rf /$UNDEFINED_VAR).
3. set -o pipefail: Ловит ошибки даже в середине конвейера (grep | awk).
4. trap: Гарантированно выполнит функцию cleanup, даже если скрипт упадет с ошибкой.

Это база. Не пишите в прод без этого хедера.

#linux #bash #scripting #devops #bestpractices #automation
PowerShell: Настоящая многопоточность с -Parallel

В старых версиях PowerShell (5.1) мы страдали с Start-Job (медленно) или Runspaces (сложно).
В PowerShell 7+ (который к 2026 году должен стоять везде) циклы ускоряются в 10-50 раз одной опцией.

Задача: Пингaнуть 100 серверов или проверить службу.
Обычный foreach будет делать это последовательно 5 минут.

Решение 2026 года:

$servers = 1..100 | ForEach-Object { "Server-$_" }

# Запускаем в 10 потоков одновременно
$results = $servers | ForEach-Object -Parallel {
# Внутри этого блока - отдельный поток
$s = $_
$check = Test-NetConnection -ComputerName $s -Port 443 -WarningAction SilentlyContinue

# Возвращаем объект (а не текст!)
[PSCustomObject]@{
Server = $s
Port443 = $check.TcpTestSucceeded
Time = (Get-Date).ToString("HH:mm:ss")
}
} -ThrottleLimit 10

# Красивый вывод
$results | Format-Table -AutoSize

Фишка: Параметр -ThrottleLimit регулирует нагрузку на вашу машину.
Это самый простой способ ускорить рутину админа.

#windows #powershell #scripting #performance #automation #sysadmin
🧠 Skill: JSON — универсальный клей админа

Раньше мы грепали текст (grep | awk).
В 2026 году, когда вокруг Docker, Kubernetes и REST API, вывод почти всегда можно получить в JSON.
Парсить JSON как текст — это путь к ошибкам.

Учимся работать с объектами, а не строками:

🐧 Linux (jq): Не делайте grep "status", делайте:

curl -s https://api.site.com/health | jq '.services[] | select(.status=="down") | .name'

(Выведет имена только упавших сервисов).

🪟 PowerShell: Здесь JSON становится родным объектом .NET автоматически:

$data = curl https://api.site.com/health | ConvertFrom-Json $data.services | Where-Object { $_.status -eq 'down' } | Select-Object name

Совет: Если консольная утилита имеет флаг --json (как kubectl, aws cli, docker), всегда используйте его для скриптов. Это делает вашу автоматизацию неубиваемой при смене форматирования вывода разработчиками.

#skills #json #jq #powershell #bash #devops #api
👍2🔥2👏1
🐧 Bash: Умная очистка логов без риска убить систему

Частая ошибка админа — удалять логи командой rm. Если сервис продолжает писать в файл, место на диске не освободится (файл останется "призраком"), пока сервис не рестартанут. 👻 Правильный путь — обнуление через перенаправление.

Скрипт-однострочник для безопасной очистки:

#!/bin/bash
# Находим все логи больше 500Мб в /var/log и обнуляем их содержимое
find /var/log -type f -name "*.log" -size +500M -exec sh -c '> "{}"' \;

echo " Тяжелые логи обнулены, дескрипторы сохранены!"

Почему это OK:

1. > "{}" — очищает содержимое файла, но оставляет сам файл на месте.
2. Сервис (nginx, mysql) не теряет связь с файлом и продолжает писать в него без рестарта.
3. Система мгновенно видит свободное место. 📦

#linux #bash #sysadmin #automation #storage #server_cleanup 🛠️
1
🧠 Skill: MTR — "Швейцарский нож" сетевой диагностики

Забудь про обычный ping или traceroute.
Когда клиент говорит "интернет тормозит", тебе нужен MTR (My Traceroute).
Он объединяет пинг и трассировку, показывая потери пакетов на каждом прыжке (hop) в динамике. 📈

Как читать вывод mtr:

Запусти:

mtr -rw google.com

Смотри на колонку Loss %:

* Если потери только на 1-2 прыжке — проблема в локалке или у провайдера.
* Если потери только в середине и дальше пропадают — это ICMP rate limiting (не страшно).
* Если потери начались на 5-м прыжке и идут до самого конца — ты нашел проблемный узел. 🎯
* Команда для Linux: sudo apt install mtr -y && mtr 8.8.8.8 Для Windows: Рекомендую форк WinMTR-Redux.

Умение читать графики MTR — это навык, который отделяет админа-новичка от сетевого инженера. 👨‍💻

#networking #mtr #troubleshooting #skills #sysadmin #devops 🌐
2🔥2👍1
🐧 Bash: Параллельный запуск задач без боли и GNU Parallel

Многие админы не знают, что для параллельного выполнения задач в скриптах не обязательно ставить тяжелые утилиты. В Bash есть встроенный механизм управления фоновыми процессами через wait. Это маст-хэв, когда нужно, например, одновременно проверить доступность 50 хостов или сжать 20 папок с логами. 📦

Пример «умного» скрипта:

#!/bin/bash

targets=("192.168.1.1" "192.168.1.2" "192.168.1.3") # и так далее

for ip in "${targets[@]}"; do
(
if ping -c 1 -W 1 "$ip" > /dev/null; then
echo " $ip доступен"
else
echo " $ip лежит"
fi
) & # Запуск в фоне
done

wait # Ждем завершения всех фоновых задач
echo "🎯 Все проверки завершены!"

Почему это OK:

1. Скорость: Скрипт выполняется за время самого долгого пинга, а не по очереди.
2. Простота: Никаких лишних зависимостей.
3. Контроль: Команда wait гарантирует, что скрипт не пойдет дальше, пока все «хвосты» не закроются.

#linux #bash #automation #sysadmin #performance #scripting 🛠️
PowerShell: Ищем «тяжелые» файлы быстрее, чем проводник

Когда на диске Windows Server внезапно заканчивается место, стандартный поиск Windows — это мучение. 🐌 Через PowerShell можно выудить список самых больших файлов за считанные секунды и сразу отсортировать их.

Полезный скрипт для поиска ТОП-10 тяжеловесов:

# Ищем файлы больше 500Мб в папке C:\Shares
$path = "C:\Shares"
Get-ChildItem -Path $path -Recurse -File -ErrorAction SilentlyContinue |
Sort-Object Length -Descending |
Select-Object Name, @{Name="Size(GB)";Expression={$_.Length / 1GB}}, Directory |
Select-Object -First 10 |
Format-Table -AutoSize

Write-Host "📊 Сканирование завершено. Время чистить диски!" -ForegroundColor Cyan

Фишка: Параметр -ErrorAction SilentlyContinue позволяет скрипту не спотыкаться на системных папках, куда у админа нет доступа, и продолжать поиск. Вывод в гигабайтах сразу дает понять масштаб бедствия. 📈

#windows #powershell #sysadmin #storage #cleanup #automation 🧹
1👍1🔥1👏1
🌐 Networking: DNS-over-HTTPS (DoH) в Linux — приватность уровня 2026

В 2026 году обычный DNS-трафик (порт 53) — это открытая книга для любого, кто сидит на транзите. Если хочешь скрыть свои запросы от посторонних глаз и защититься от подмены DNS, пора переходить на DoH. В современных дистрибутивах (Ubuntu 24.04+/Debian 13+) это настраивается через systemd-resolved. 🔐

Как включить за 1 минуту:

Отредактируй конфиг: sudo nano /etc/systemd/resolved.conf

Добавь или измени строки:

[Resolve]
DNS=1.1.1.1#cloudflare-dns.com
DNSOverHTTPS=yes

Перезапусти службу: sudo systemctl restart systemd-resolved

Как проверить: resolvectl status — в строке "Protocols" должно появиться +DoH.

Теперь твои DNS-запросы зашифрованы внутри обычного HTTPS-трафика. Провайдер видит, что ты куда-то ходишь, но не знает, на какие именно домены. 🕵️‍♂️

#networking #security #linux #doh #privacy #sysadmin #dns 🛡️
🔥1
🐧 Bash: Проверка SSL-сертификатов до того, как они «протухнут»

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

Полезный скрипт для списка доменов:

#!/bin/bash
# Список доменов для проверки
DOMAINS=("google.com" "github.com" "my-company.ru")

echo " Проверка сертификатов..."
for domain in "${DOMAINS[@]}"; do
expiration_date=$(echo | openssl s_client -servername "$domain" -connect "$domain":443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)

# Переводим в формат timestamp для сравнения
exp_epoch=$(date -d "$expiration_date" +%s)
now_epoch=$(date +%s)
days_left=$(( ($exp_epoch - $now_epoch) / 86400 ))

if [ $days_left -lt 7 ]; then
echo "🚨 $domain: ОСТАЛОСЬ ВСЕГО $days_left ДНЕЙ!"
else
echo " $domain: еще $days_left дней"
fi
done

Почему это маст-хэв: Этот скрипт можно легко обернуть в телеграм-бота, чтобы получать алерты, если до истечения осталось меньше 10 дней. Безопасность — это когда всё работает тихо. 🤫

#linux #bash #ssl #security #automation #sysadmin #devops 🔐
PowerShell: Как узнать, кто удалил файл на сетевом диске?

«Я ничего не трогал, оно само исчезло!» — классика. 🤡 Если в Active Directory включен аудит доступа к объектам, PowerShell поможет быстро найти виновника без долгого копания в Event Viewer.

Скрипт для поиска события удаления (Event ID 4660):

# Укажите время, за которое ищем логи (последние 24 часа)
$TimeFilter = (Get-Date).AddDays(-1)

$Events = Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4660
StartTime = $TimeFilter
} -ErrorAction SilentlyContinue

foreach ($Event in $Events) {
[xml]$EventXml = $Event.ToXml()
$User = $EventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'SubjectUserName' } | Select-Object -ExpandProperty '#text'
$Time = $Event.TimeCreated

Write-Host "🗑️ Файл был удален пользователем: $User в $Time" -ForegroundColor Red
}

Нюанс: Чтобы это работало, на нужной папке в свойствах безопасности (вкладка «Аудит») должен быть включен аудит на удаление.

#windows #powershell #security #audit #active_directory #sysadmin 📂
🧠 Skill: Протокол SSH Multiplexing — ускоряем работу в 10 раз

Если ты часто прыгаешь по одним и тем же серверам, то знаешь, как бесит ждать 2-3 секунды, пока SSH установит соединение. В 2026 году админы используют Multiplexing, чтобы переиспользовать уже открытое TCP-соединение для новых сессий. 🚀

Как настроить в своем ~/.ssh/config:

Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 10m

Что это дает:
1. Первое подключение: Обычное (ввод пароля/ключа).
2. Второе и последующие: Мгновенное открытие консоли (0.1 сек).
3. ControlPersist 10m: Соединение будет висеть в фоне 10 минут после закрытия последней сессии, чтобы ты мог вернуться мгновенно.

Это критически ускоряет работу Ansible и твоих собственных Bash-скриптов, которые ходят по серверам. 🏎️

#skills #ssh #linux #performance #sysadmin #productivity #automation 🌐