Admin Guides | Сисадмин
11.4K subscribers
1.26K photos
20 videos
34 files
562 links
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Download Telegram
Динамическое управление swap без перезагрузки

Swap — это область на диске, которую система использует как дополнительную виртуальную память, когда оперативная память заканчивается.

Правильное управление swap помогает избежать “тормозов” и падений приложений при высокой нагрузке на память.

1️⃣Проверяем текущее состояние swap

swapon --show
free -h


Узнаём, какие swap-устройства или файлы активны.

2️⃣Добавляем swap-файл на лету

fallocate -l 2G /swapfile2
chmod 600 /swapfile2
mkswap /swapfile2
swapon /swapfile2


Swap-файл — простой способ добавить swap, не создавая раздел на диске. Такой swap доступен сразу после включения.

3️⃣Отключаем и удаляем swap

swapoff /swapfile2
rm /swapfile2


Так можно быстро освободить дисковое пространство или уменьшить swap.

4️⃣Меняем swappiness без перезагрузки

Параметр vm.swappiness регулирует, как активно ядро использует swap: от 0 (почти не использует) до 100 (активно использует).

sysctl vm.swappiness=10


Для постоянного изменения редактируем /etc/sysctl.conf.

5️⃣Автоматизация загрузки swap

Добавляем в /etc/fstab строку, чтобы swap-файл подключался при загрузке:

/swapfile2 none swap sw 0 0
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое Lazy Loading модулей ядра в Linux и зачем он нужен?

Ответ: Lazy Loading — это механизм, при котором модули ядра загружаются только тогда, когда они действительно нужны, а не заранее. Это снижает потребление памяти и ускоряет загрузку системы.

Например, модуль для работы с определённой файловой системой или сетевым протоколом может быть не загружен при старте, но автоматически подгрузится при монтировании соответствующего диска или при попытке использования нужного сетевого стека.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132
Мониторинг и отладка проблем с задержками дисковых операций через iostat, blktrace и perf

Почему важно следить за задержками на дисках?

Высокие задержки на диске вызывают «лаг» приложений, рост времени отклика и даже сбои сервисов.

Особенно критично для баз данных и систем с интенсивным вводом-выводом.

1️⃣iostat — базовый инструмент мониторинга

iostat -x 1


- Показывает загрузку устройств, время ожидания (await), скорость операций.
- Если await слишком высокое — проблема с диском или нагрузкой.

2️⃣blktrace — глубокий анализ блокирующих операций

Позволяет отследить операции чтения/записи на уровне блока:

sudo blktrace -d /dev/sda -o - | blkparse -i -


- Выводит детальные события, задержки и очереди.
- Помогает найти, что именно тормозит — очередь, железо, драйвер.

3️⃣perf и tracepoints для дисков

С помощью perf можно собирать статистику по block-layer:

sudo perf trace -e block:block_rq_issue,block:block_rq_complete -a


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

4️⃣Анализ и оптимизация
• Если очередь в blktrace растёт — нужно проверить параметры драйвера, scheduler (cfq, noop, deadline).
• Возможно стоит переключиться на более подходящий I/O scheduler:

cat /sys/block/sda/queue/scheduler
echo noop > /sys/block/sda/queue/scheduler


• Увеличить размер очереди или оптимизировать параметры RAID.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥92👍1
Как детально проверить загрузку ЦП в Linux

Для профессионального анализа загрузки процессора в Linux можно использовать продвинутые инструменты и методы.

Это поможет глубже понять, какие процессы или службы перегружают систему, и оптимизировать её производительность.

1️⃣Детальная проверка с top и iotop

top с фильтрацией

Запустите top и используйте команды:
• Нажмите P, чтобы отсортировать процессы по использованию ЦП.
• Нажмите I, чтобы скрыть неактивные процессы.
• Нажмите 1, чтобы отобразить загрузку по каждому ядру.

Добавление iotop для анализа ввода-вывода

Высокая загрузка процессора может быть связана с активными операциями ввода-вывода. Установите iotop:

sudo apt install iotop  


Запустите:

sudo iotop  


Это покажет, какие процессы активно работают с диском.

2️⃣ Использование pidstat

pidstat позволяет отслеживать загрузку процессора на уровне отдельных процессов. Это полезно для определения проблемных приложений.

Установите инструмент:

sudo apt install sysstat  


Чтобы узнать, какой процесс занимает процессор:

pidstat -u 1  


Параметр 1 задаёт интервал обновления в 1 секунду.

Для анализа системных вызовов используйте:

pidstat -w 1  


3️⃣ Анализ c perf

perf — мощный инструмент для профилирования производительности процессора.

Установите:

sudo apt install linux-tools-$(uname -r)  


Запустите краткий отчёт:

sudo perf stat -a  


Для глубокого анализа:

sudo perf record -a  


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

sudo perf report  


Это покажет статистику использования процессора и узкие места.
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍6
Как настроить Fail2Ban для защиты от атак в Linux

Fail2Ban — это инструмент для защиты серверов от брутфорс-атак, который блокирует IP-адреса после нескольких неудачных попыток входа.

В этом посте рассмотрим, как установить и настроить Fail2Ban.

1️⃣Установка Fail2Ban

Для установки используйте следующую команду:
• Debian/Ubuntu:

sudo apt install fail2ban


• CentOS/RHEL:

sudo yum install fail2ban


Запустите и включите службу:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban


2️⃣ Настройка Fail2Ban

Настройки Fail2Ban хранятся в файле /etc/fail2ban/jail.local. Создайте его, если его нет:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


Откройте файл для редактирования:

sudo nano /etc/fail2ban/jail.local


Настройте секцию для SSH:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600


maxretry — количество неудачных попыток.
bantime — время блокировки в секундах.
findtime — время, за которое нужно зафиксировать ошибки.

Перезапустите Fail2Ban:

sudo systemctl restart fail2ban


3️⃣ Проверка статуса

Для проверки статуса Fail2Ban:

sudo systemctl status fail2ban


Для проверки статуса SSH:

sudo fail2ban-client status sshd


4️⃣ Разблокировка IP-адреса

Для разблокировки IP-адреса используйте:

sudo fail2ban-client set sshd unbanip <IP-адрес>
Please open Telegram to view this post
VIEW IN TELEGRAM
👍148
PPPoE и IPv6 — несовместимы?

Классическое подключение к интернету через PPPoE и так не самое простое. 


Но как только появляется требование получить IPv6, ситуация усложняется: адрес не приходит, маршруты пустые, пинг до google.com по v6 — ноль реакции. Разбираемся, в чём дело.

Что происходит при PPPoE?
1️⃣Вы поднимаете pppoe0 (например, через pppd, rp-pppoe, NetworkManager, systemd-networkd) — и получаете IPv4-адрес.
2️⃣А где IPv6? Он не приходит в самом PPP-сессии.
3️⃣Вместо этого провайдер часто делегирует префикс через DHCPv6-PD (Prefix Delegation) уже после установления PPPoE.

Как получить IPv6 в Linux?

Способ 1 — через dhclient и DHCPv6-PD:

dhclient -6 -P ppp0


• -6 — использовать IPv6
• -P — запросить префикс (PD)
• Если всё настроено правильно, вы получите /56 или /64 префикс

Но dhclient работает не везде стабильно — многие переходят на dhcpcd или systemd-networkd.

Способ 2 — systemd-networkd (современно и удобно):

[Match]
Name=ppp0

[Network]
DHCP=ipv6
IPv6AcceptRA=true

[DHCPv6]
PrefixDelegation=yes


Сделает всё сам: RA, DHCPv6, установка маршрутов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥43
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое RCU (Read-Copy-Update) и зачем он используется в ядре Linux?

Ответ: RCU — это механизм синхронизации в ядре Linux, оптимизированный для сценариев, в которых часто происходят чтения и редко — изменения. Он позволяет множеству потоков безопасно читать общие данные без блокировок, обеспечивая при этом консистентность и высокую производительность.

Ключевая идея: при обновлении структуры данных не изменяется оригинал напрямую. Вместо этого создается копия, изменяется, а затем «публикуется» как новая версия. Старую версию продолжат читать те, кто начал до обновления. Когда все старые читатели завершат доступ, старая версия удаляется.
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3
Как раздавать делегированный IPv6-префикс по нескольким интерфейсам или VLAN’ам

Провайдер дал тебе, например, /56 через DHCPv6-PD. Это 256 подсетей по /64. А у тебя:
основной LAN (br0)
гостевая сеть (br1)
VPN-клиенты (wg0)
и maybe vlan10, vlan20…

Задача: разбить /56 на /64 и назначить каждой сети свою

Пример:
• Префикс от провайдера: 2001:db8:abcd::/56
• Тогда:
• br0 → 2001:db8:abcd:0001::/64
• br1 → 2001:db8:abcd:0002::/64
• wg0 → 2001:db8:abcd:0003::/64
• vlan10 → 2001:db8:abcd:0010::/64

Как назначить эти префиксы вручную

# br0
ip -6 addr add 2001:db8:abcd:1::1/64 dev br0
# br1
ip -6 addr add 2001:db8:abcd:2::1/64 dev br1
# wg0
ip -6 addr add 2001:db8:abcd:3::1/64 dev wg0


Теперь включаем RA (Router Advertisements)

Если используешь radvd — конфигурация будет выглядеть так:

interface br0 {
AdvSendAdvert on;
prefix 2001:db8:abcd:1::/64 {
AdvOnLink on;
AdvAutonomous on;
};
};

interface br1 {
AdvSendAdvert on;
prefix 2001:db8:abcd:2::/64 {
AdvOnLink on;
AdvAutonomous on;
};
};

interface wg0 {
AdvSendAdvert on;
prefix 2001:db8:abcd:3::/64 {
AdvOnLink on;
AdvAutonomous on;
};
};


Аналогично для vlanX, просто добавляешь ещё интерфейсы.

Альтернатива: автоматизация через dhcpv6 delegating-router (если systemd-networkd)

Можно использовать IPv6PrefixDelegation=yes, и тогда systemd сам может назначить /64 на каждый интерфейс, если ты пропишешь:

[Network]
IPv6SendRA=yes
IPv6PrefixDelegation=yes


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

IPv6 Firewall

Не забудь базовую защиту:

nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input iif lo accept
nft add rule inet filter input ip6 nexthdr icmpv6 accept
nft add rule inet filter input tcp dport 22 accept # SSH
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍1
Microsoft могла потерять до 400 млн пользователей Windows

За 3 года число активных устройств с Windows могло упасть с 1,4 до 1 млрд. Об этом пишет ZDNet, ссылаясь на слова топ-менеджера Microsoft Юсуфа Мехди.

Он указал, что Windows используют «более 1 млрд устройств» — хотя ещё в 2022 году компания говорила о 1,4 млрд. 


По мнению аналитиков, если бы цифра осталась такой же, её бы не стали занижать в официальной статье.

Причины ухода:
• Скорое окончание поддержки Windows 10 (октябрь 2025),
• Переход на macOS, Linux,
• Отказ от ПК в пользу смартфонов и планшетов.
11👍2💊2
Netplan vs NetworkManager vs ifupdown: кто рулит в 2025?

В Linux для настройки сети сегодня популярны три инструмента:

ifupdown — старый проверенный способ с конфигами в /etc/network/interfaces. Хорош для простых серверов, но не поддерживает современные фишки вроде Wi-Fi или сложных сетевых сценариев.

NetworkManager — идеален для десктопов и ноутбуков. Умеет управлять Wi-Fi, VPN, мобильными сетями, имеет GUI и CLI. На серверах бывает слишком “тяжёлым” и иногда конфликтует с другими инструментами.

Netplan — современный YAML-конфиг, который служит фронтендом для systemd-networkd (на серверах) или NetworkManager (на десктопах). Обеспечивает удобный и унифицированный подход к настройке сетей: VLAN, bonding, bridges, DHCPv6 и статические адреса.

Как выбрать?
• Для серверов сейчас рекомендуют Netplan + systemd-networkd — быстро, надёжно, удобно для автоматизации.
• Если нужно максимально простое решение — ifupdown всё ещё жив и работает.
• Для рабочих станций и ноутбуков — NetworkManager остаётся стандартом.

Но важно помнить, что Netplan — это не самостоятельный сетевой менеджер, а инструмент генерации конфигураций для systemd-networkd или NetworkManager. 


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

Особенно это актуально при переходе между серверными и десктопными средами.

Такой подход обеспечивает гибкость и совместимость с разными типами оборудования и сценариями.
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍2🔥1
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Как работает ядро Linux для управления вводом/выводом и что такое I/O scheduler?

Ответ: I/O scheduler в Linux управляет порядком операций ввода/вывода, что важно для эффективного использования дисков и оптимизации работы с данными. Выбор нужного scheduler помогает улучшить производительность системы, особенно при высоких нагрузках.

Основные типы:
CFQ (Completely Fair Queuing): Равномерное распределение ресурсов для процессов.
Deadline: Обеспечивает выполнение операций в установленные сроки.
Noop: Минимальные операции, подходит для систем с кэшированием.

Чтобы проверить текущий scheduler:

cat /sys/block/sda/queue/scheduler
Please open Telegram to view this post
VIEW IN TELEGRAM
👌112
🔥6😁61
SSSD для интеграции Linux с Active Directory: настройка и тонкости

Интеграция Linux-серверов и рабочих станций в Active Directory (AD) — стандартная задача в смешанных инфраструктурах.

SSSD (System Security Services Daemon) — современный и гибкий способ обеспечить аутентификацию и получение информации из AD без установки громоздких клиентов вроде winbind.

Базовая схема настройки

1️⃣Подключаем Linux к AD

Если есть realmd, достаточно:

realm join example.com -U Administrator


Он автоматически настроит SSSD, Kerberos и разрешения.

Если без realmd — делаем вручную.

2️⃣ Настраиваем /etc/sssd/sssd.conf

Пример минимального конфига:

[sssd]
domains = example.com
config_file_version = 2
services = nss, pam

[domain/example.com]
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
ad_domain = example.com
krb5_realm = EXAMPLE.COM
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
fallback_homedir = /home/%u@%d
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False


3️⃣ Права на файл конфигурации

chmod 600 /etc/sssd/sssd.conf


4️⃣ Запускаем и добавляем в автозагрузку

systemctl enable --now sssd


5️⃣ Настраиваем PAM

Обновляем /etc/pam.d/common-auth и common-session для вызова pam_sss.so и автоматического создания домашней директории.

Пример для common-session:

session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145👎1
Слепое восстановление root-доступа: когда осталась только консоль или IPMI

Заблокировался root, слетел пароль, SSH не пускает, а у тебя только IPMI или прямой доступ к консоли?

Без паники — вот три проверенных сценария.

Способ 1: init=/bin/bash

Если можешь перезапустить сервер и попасть в GRUB:
1️⃣На экране GRUB выбери нужное ядро и нажми e для редактирования.
2️⃣Найди строку, начинающуюся с linux, и добавь в конец:

init=/bin/bash


3️⃣Нажми Ctrl + X или F10 — система загрузится в bash без пароля.
4️⃣Подмонтируй root в rw:

mount -o remount,rw /


5️⃣Сбрось пароль:

passwd


6️⃣Перезагрузи: exec /sbin/init или просто reboot -f

Способ 2: chroot из Live-ISO или rescue-системы

1️⃣Подключи ISO через IPMI, загрузись в LiveCD.
2️⃣Определи диск: lsblk, fdisk -l
3️⃣Подмонтируй систему:

mount /dev/sdaX /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt


4️⃣Сбрось пароль: passwd
5️⃣Перезагрузи.

Способ 3: Rescue mode от хостера (если есть)
1️⃣Активируй rescue в панели (Hetzner, OVH, etc.)
2️⃣Подключись по SSH к rescue-системе.
3️⃣Повтори chroot-метод выше.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥64
Samsung откладывает запуск завода чипов в Техасе

Samsung перенесла запуск полупроводникового завода в Техасе как минимум до 2026 года — из-за нехватки заказов на контрактное производство чипов.

Компания теряет позиции: из числа клиентов уже ушли Nvidia и Qualcomm.

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

Завод Samsung был спроектирован под 4-нм техпроцесс с FinFET, но к 2026 году рынок перейдёт на 2-нм технологии и GAA-транзисторы.

Дополнительное давление оказывает строительство флагманского комплекса TSMC в Аризоне стоимостью $100 млрд.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🥱2
Проблемы с файловыми системами

При использовании SSD для контейнерных решений важно правильно выбрать файловую систему:

ext4: Подходит для общего использования, но не всегда эффективна при большом числе операций записи, характерных для контейнеров.
XFS: Хорошо работает с большими файлами, но страдает при работе с мелкими.
btrfs: Имеет интересные функции, такие как дедупликация и сжатие, но может тормозить при интенсивной записи.

Docker и тома

По умолчанию Docker использует overlay2 для управления слоями контейнеров.

Это может привести к дополнительным нагрузкам на SSD, так как каждый слой добавляется поверх предыдущего, увеличивая количество операций записи. 


Также SSD чувствительны к блокировкам метаданных, что еще больше снижает производительность.

Причины потери производительности
Журналирование: SSD быстрее работают, но если Docker не оптимизирован для этого, это может привести к потере производительности.
Малые файлы: Контейнеры часто работают с малым количеством данных, что вызывает дополнительные нагрузки на файловую систему.

1️⃣Выбор файловой системы: Для SSD рекомендуется использовать XFS или btrfs, которые лучше справляются с мелкими файлами и высокой нагрузкой.
2️⃣Оптимизация Docker: Отключите избыточное журналирование и используйте bind mount для томов.
3️⃣Настройка SSD: Включите TRIM, чтобы SSD правильно освобождал место и поддерживал свою производительность.
4️⃣Использование ZFS: Если производительность критична, ZFS будет более эффективен в контейнерных окружениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
10👎1
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое KASLR и как он повышает безопасность ядра Linux?

Ответ: KASLR (Kernel Address Space Layout Randomization) — это механизм, который случайным образом размещает ядро и его компоненты в виртуальной памяти при загрузке системы. Цель — усложнить эксплуатацию уязвимостей, основанных на знании точных адресов функций и структур ядра.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123👎1😱1
Контроль устройств через USBGuard

Как запретить флешки и другие USB-девайсы на уровне ядра

В некоторых инфраструктурах флешки — это не просто риск, а реальный вектор атак.

Чтобы контролировать, какие USB-устройства разрешены, используем USBGuard — мощный инструмент, встроенный в ядро Linux.


Как это работает:
USBGuard создаёт политику разрешённых USB-устройств по их VID/PID и serial number. Всё, что не разрешено — автоматически блокируется.

Быстрый старт:

sudo apt install usbguard
sudo usbguard generate-policy > /etc/usbguard/rules.conf
sudo systemctl enable --now usbguard


По умолчанию все текущие устройства будут разрешены. После запуска новые — блокируются.

Пример строки правила:

allow id 0781:5567 serial "4C530001181223103294" name "Cruzer Blade"


Чтобы запретить всё, кроме нужного:
1️⃣Генерируй политику.
2️⃣Удали строки allow with-interface или allow via.
3️⃣Переведи USBGuard в режим enforce.

Интеграция с systemd:

sudo systemctl status usbguard
sudo journalctl -u usbguard
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍2👎1