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

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

РКН: https://kurl.ru/nQejS
Download Telegram
Как не потерять доступ к серверу после правок сетевых настроек и systemd

Проверяем конфигурации до перезагрузки: systemd-analyze verify, netplan try, networkctl reconfigure


Многие сисадмины хотя бы раз попадали в ситуацию: отредактировал netplan или systemd unit, перезагрузил сервер — и всё, SSH больше не отвечает.

Виртуалка висит где-то в облаке без сети, приходится лезть через консоль или IPMI. А ведь этого легко избежать.

Проверка systemd-юнитов

Systemd строго относится к синтаксису. Даже одна опечатка в .service может привести к тому, что нужный сервис не стартует.

systemd-analyze verify /etc/systemd/system/your-service.service


Также полезна команда:

journalctl -xe -u your-service


чтобы понять, что пошло не так при старте.

Применение сетевых настроек без перезагрузки

Редактируешь netplan? Не обязательно сразу делать netplan apply. Есть безопасный способ:

sudo netplan try


Система применит новые настройки, но через 120 секунд откатит, если ты не подтвердишь. Идеально, если боишься потерять подключение.

Если используешь systemd-networkd, можно без риска “переприменить” текущие настройки:

sudo networkctl reconfigure


Это быстро и не трогает активные соединения. Работает с bridge, VLAN, bonding — как и Netplan.
13👍9
💬 Вопрос на собеседовании для DevOps-инженера

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


Вопрос: Как работает oom-killer в Linux и как с ним работать, чтобы минимизировать негативные последствия?

Ответ: oom-killer (Out-Of-Memory Killer) — это механизм ядра Linux, который срабатывает, когда системе не хватает оперативной памяти, и она не может выделить память ни одному из процессов. В такой ситуации oom-killer выбирает и завершает “наименее ценную” с точки зрения ядра задачу, чтобы освободить ресурсы.

Как с ним работать:

— Поведение можно контролировать с помощью параметра oom_score_adj. Чем выше значение (макс. 1000), тем выше вероятность, что процесс будет убит.
— Можно настроить cgroups и ограничить память для отдельных групп процессов, чтобы сбои не затрагивали всю систему.
— Желательно использовать swap-файл/раздел, чтобы отложить момент срабатывания OOM, но не полагаться на это как на основную защиту.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4👏2
Чистим /var/lib/docker без потерь

Папка /var/lib/docker со временем разрастается до страшных размеров. Там лежат:
• Контейнеры и их слепки
• Образы (в том числе устаревшие)
• Volumes (в т.ч. неиспользуемые, но привязанные к данным)
• Кеши слоев и сетевые оверлеи

Автоматическая очистка

docker system prune -a

Добавь --volumes, если хочешь подчистить жёстко.

Диагностика


Проверь, что ест диск:

sudo du -sh /var/lib/docker/*


Показать образы, не привязанные к контейнерам:

docker images -f dangling=true


Список остановленных контейнеров:

docker ps -a --filter status=exited


Volumes без контейнеров:

docker volume ls -f dangling=true


Альтернатива: Docker GC

Можно использовать docker-gc, crontab или встроенные политики очистки (в Kubernetes — через ttlSecondsAfterFinished в Jobs).
👍122🤩1
Отслеживаем внезапные изменения сетевой конфигурации в Linux

Иногда вы теряете доступ по SSH, DNS резко меняется, а ip route не узнаётся. Причин может быть много: DHCP, VPN, скрипты, NetworkManager или зловред.

Разберём, как это отследить, логировать и сразу получать уведомление — даже в Telegram.

1️⃣Слежение за изменениями IP, DNS и маршрутов

Создаём скрипт check_net.sh, который сравнивает текущие настройки с эталоном:

#!/bin/bash

DIR="/var/lib/netwatch"
mkdir -p "$DIR"

NOW="$DIR/now"
PREV="$DIR/prev"

ip addr > "$NOW".ip
ip route > "$NOW".route
cat /etc/resolv.conf > "$NOW".dns

# Если первая итерация — копируем как эталон
[ ! -f "$PREV.ip" ] && cp "$NOW".ip "$PREV.ip"
[ ! -f "$PREV.route" ] && cp "$NOW".route "$PREV.route"
[ ! -f "$PREV.dns" ] && cp "$NOW".dns "$PREV.dns"

# Проверяем различия
DIFF=$(diff -u "$PREV.ip" "$NOW.ip"; diff -u "$PREV.route" "$NOW.route"; diff -u "$PREV.dns" "$NOW.dns")

if [ -n "$DIFF" ]; then
echo "$DIFF" | tee "$DIR/alert.log"

# Отправка в Telegram
TOKEN="your_bot_token"
CHAT_ID="your_chat_id"
MSG="⚠️ Изменение сети на $(hostname):%0A$(echo "$DIFF" | tail -n 20 | sed 's/$/%0A/' | sed 's/+/%2B/g')"
curl -s "https://api.telegram.org/bot$TOKEN/sendMessage" --data-urlencode "chat_id=$CHAT_ID" --data-urlencode "text=$MSG"

# Обновляем эталон
cp "$NOW".ip "$PREV.ip"
cp "$NOW".route "$PREV.route"
cp "$NOW".dns "$PREV.dns"
fi


2️⃣Настраиваем таймер systemd (альтернатива cron)

Файл netwatch.timer:

[Unit]
Description=Net config watcher timer

[Timer]
OnBootSec=2min
OnUnitActiveSec=5min

[Install]
WantedBy=timers.target


Файл netwatch.service:

[Unit]
Description=Net config watcher

[Service]
ExecStart=/usr/local/bin/check_net.sh


Активируем:

systemctl daemon-reexec
systemctl enable --now netwatch.timer


3️⃣Дополнительно: auditd и лог изменений конфигов

auditctl -w /etc/network/interfaces -p wa
auditctl -w /etc/netplan -p wa
auditctl -w /etc/resolv.conf -p wa
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥63
«Ростелеком» снизил скорость интернета жителю Новосибирска за большой объём трафика

Житель Новосибирска сообщил, что «Ростелеком» снизил ему скорость интернета с 500 Мбит/с до 20 Мбит/с после того, как за 13 дней он скачал около 6 ТБ данных.


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

«Ростелеком» утверждает, что безлимитные тарифы для физических лиц не имеют жёстких ограничений по объёму трафика, однако при сильной нагрузке возможны временные замедления для проведения проверки.
👎29💊16👏6🤔53
GitOps для /etc: как сделать конфиги отслеживаемыми

Системные конфиги часто меняются вручную — и так же вручную теряются. 


Если хочется понимать, кто и когда правил /etc, есть проверенное решение:

etckeeper + Git = история изменений конфигов

etckeeper — утилита, которая автоматически сохраняет изменения в /etc в git-репозиторий.

Работает с apt, yum, dnf, pacman и другими пакетными менеджерами: каждый раз, когда вы устанавливаете или удаляете пакет, etckeeper делает git commit.

Установка:

sudo apt install etckeeper  # для Debian/Ubuntu
sudo etckeeper init
sudo etckeeper commit "Initial"


После этого можно спокойно делать:

cd /etc
git log # вся история изменений
git diff # сравнение версий


Защита от случайных изменений: pre-commit хуки

Добавь pre-commit хук, который будет проверять изменения перед коммитом: например, запрещать случайное удаление важных файлов (sshd_config, fstab, resolv.conf и т.п.) или напоминать о ручной проверке после merge.

Пример хука:

#!/bin/sh
if git diff --cached | grep -q "sshd_config"; then
echo "⚠️ Вы изменили sshd_config — проверьте доступность SSH!"
fi


Какие плюсы?

Всё /etc в git, можно откатиться к любой точке
Автоматически коммитит после apt upgrade и dpkg-reconfigure
Удобно проверять различия между серверами (git diff)
( Подходит для CI и GitOps-сценариев
9👍5
💬 Вопрос на собеседовании для сисадмина

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


Вопрос: Что такое kprobes в Linux и как их используют для динамической трассировки ядра?

Ответ: kprobes — это механизм динамического внедрения точек останова (проб) в ядро Linux без необходимости перезагрузки системы или модификации исходного кода ядра. Он позволяет выполнять пользовательский код при срабатывании определённых событий, например, вызова функций ядра.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👎5🔥1
Часть 2. GitOps для /etc: отслеживаем конфигурации через etckeeper и pre-commit хуки

Чтобы избежать потери конфигов даже при сбое системы — добавим резервное копирование git-репозитория /etc в безопасное место.

1️⃣Настроим удалённый репозиторий

Создаём bare-репозиторий на другом сервере или в GitLab/Gitea:

git init --bare /srv/backup/etc.git


На основном сервере:

cd /etc
git remote add backup ssh://user@backup-host/srv/backup/etc.git
git push backup master


2️⃣Добавим автоматический push после каждого commit

Можно прописать post-commit хук:

echo 'git push backup master' > /etc/.git/hooks/post-commit
chmod +x /etc/.git/hooks/post-commit


Теперь каждый раз, когда etckeeper фиксирует изменения, копия будет уходить на внешний сервер.

Проверка целостности и откат

Если кто-то случайно удалит или испортит конфиг — откат делается одной командой:

cd /etc
git checkout HEAD^ -- ssh/sshd_config


Также можно использовать:

git status       # покажет, что поменялось
git log -p FILE # покажет кто и когда правил конкретный файл
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍5
😁30👍5🔥2
Собственный mirror репозиториев APT или YUM в локальной сети

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

Это позволяет:

• ускорить установку пакетов и обновлений,
• исключить зависимость от внешних зеркал,
• обеспечить стабильность (все пакеты одной версии),
• работать в полностью оффлайн-среде.

Пример APT-репозитория (Ubuntu)

1️⃣Установим apt-mirror:

sudo apt install apt-mirror apache2


2️⃣ Настроим зеркалирование:

sudo nano /etc/apt/mirror.list


Пример:

set base_path    /var/spool/apt-mirror
deb https://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
clean


3️⃣ Синхронизируем:

sudo apt-mirror


4️⃣ Настроим доступ через apache2:

sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍6👎1
Собственный time-сервер (NTP) с хардварной синхронизацией

Когда в сети критично точное время (финансовые транзакции, логирование событий, биллинг, Kerberos) — не стоит полагаться только на внешние NTP-сервера.

Лучше настроить локальный time-сервер с аппаратным источником времени.

Как это сделать?

1️⃣Аппаратный источник
• GPS-приёмник с поддержкой PPS (например, u-blox NEO, Garmin GPS 18x LVC)
• Или дешевле — USB RTC-модули с хардварными часами (DS3231 и аналоги)

2️⃣ Система: Linux + chronyd или ntpd

Chrony проще и точнее работает с нестабильными источниками (вроде GPS):

sudo apt install chrony gpsd gpsd-clients


3️⃣ Пример конфигурации chrony.conf:

refclock SHM 0 refid GPS precision 1e-1
refclock SOCK /var/run/chrony.ttyS0.sock refid PPS lock GPS
allow 192.168.0.0/16
local stratum 10


• SHM — данные от gpsd
• PPS — сигнал точной секунды
• local stratum — объявляем себя сервером

4️⃣ Проверка:

chronyc sources -v


Должно появиться что-то вроде:

#* GPS        0   10     377    123     +0.000123  +0.000001  0.000
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96👎1
5🌚4🤷‍♂2
💬 Вопрос на собеседовании для DevOps-инженера

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


Вопрос: Как работает механизм fencing в распределённых системах, и почему он критически важен для отказоустойчивости?

Ответ: Fencing (также известный как STONITH — Shoot The Other Node In The Head) — это техника в отказоустойчивых кластерах, гарантирующая, что сбойный узел не будет выполнять никаких операций с общими ресурсами после того, как его сочли “мертвым”. Это необходимо для избежания split-brain-сценариев, при которых два узла считают себя активными и могут повредить общие данные, например, диск или базу.
Please open Telegram to view this post
VIEW IN TELEGRAM
4👎3🔥2
Восстановление root-пароля в Ubuntu

Забыли root-пароль в Ubuntu? Не паникуйте! Сбросить пароль можно за несколько минут. Мы рассмотрим два способа восстановления: через Recovery Mode и альтернативный метод через Grub.

Эти методы работают на обычных системах, а также в виртуальных машинах (VMware, VirtualBox).

Способ 1: Сброс пароля через Recovery Mode

Этот метод удобен, если у вас есть доступ к меню загрузки Grub.

Шаг 1: Вход в режим восстановления
1. Перезагрузите компьютер.
2. Если меню Grub не появляется автоматически, нажимайте Shift во время загрузки.
3. В меню выберите Advanced Options for Ubuntu.
4. Найдите вариант с (recovery mode) и выберите его.

После небольшой загрузки появится меню восстановления.

Шаг 2: Переход в командную строку root
1. В списке выберите Root (Drop to root shell prompt).
2. Нажмите Enter – вы попадете в терминал с root-доступом.

Шаг 3: Разрешение записи в корневой раздел

По умолчанию корневой раздел доступен только для чтения, поэтому перед изменением пароля нужно разрешить запись:

mount -rw -o remount /


Шаг 4: Сброс пароля
1. Посмотрите список пользователей:

ls /home


Здесь будут показаны все пользовательские папки – выберите нужного пользователя.

2. Сбросьте пароль:

passwd username


(вместо username подставьте имя пользователя).

3. Дважды введите новый пароль.

Шаг 5: Перезагрузка системы
1. Введите команду выхода:

exit


2. Вернетесь в меню восстановления – выберите Resume boot для загрузки системы.
3. После перезагрузки можно войти с новым паролем.

Способ 2: Сброс пароля через Grub

Этот метод подходит, если Recovery Mode недоступен или не работает.

Шаг 1: Изменение параметров в Grub
Перезагрузите компьютер и нажимайте Shift, пока не появится меню Grub.
Дальше выберите Ubuntu и нажмите E (редактировать параметры загрузки). И найдите строку, начинающуюся с linux, замените ro на rw и добавьте в конец:

init=/bin/bash


Нажмите Ctrl + X, чтобы загрузиться в систему.

Теперь вы окажетесь в командной строке bash без пароля.

Шаг 2: Смена пароля
Введите команду:

passwd username


Дважды введите новый пароль. И перезагрузите систему командой:

shutdown -r now


После перезагрузки вы сможете войти в систему с новым паролем.

Возможные ошибки и их решение

Ошибка “Authentication token manipulation error”

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

mount -rw -o remount /


Нет пункта “Recovery Mode” в Grub

Проблема: В меню загрузки отсутствует пункт Recovery Mode.
Решение:
• Выберите Ubuntu в Grub, нажмите E для редактирования параметров.
• В конце строки загрузки добавьте single.
• Нажмите Ctrl + X или F10, чтобы загрузиться в терминал суперпользователя.

Ошибка “end Kernel panic” при загрузке

Проблема: Ошибка загрузки ядра.
Решение: Удалите параметр splash boot при редактировании загрузки в Grub.

Ошибка “Failed to connect to bus” при перезагрузке

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

exec /sbin/init
Please open Telegram to view this post
VIEW IN TELEGRAM
👍167🤪1
Вышел Wireshark 4.4.8

В июле 2025 вышла стабильная версия Wireshark 4.4.8 — популярного open source сетевого анализатора. Обновление включает:

Исправления ошибок и уязвимостей
Улучшения графиков VoIP, TCP и интерфейсов
Обновления в поддержке протоколов: IPsec, DTLS, TETRA, KRB5, UDS и др.
Поддержку формата pcapng и улучшенную работу с UTF-8

Проект развивается с 2008 года и распространяется под GPLv2. Wireshark остаётся ключевым инструментом для специалистов по сетям и безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103
IPv6 через туннели: 6to4 и WireGuard

Как получить IPv6 на VPS, где его нет


Если ваш хостинг не даёт IPv6-адреса, это не повод отказываться от поддержки современного протокола.

Есть как минимум два способа получить IPv6-трафик — с помощью 6to4 или через VPN-туннель, например, WireGuard.

6to4 — автоматический туннельный механизм, где IPv6 инкапсулируется в IPv4. Подходит, если у вас есть публичный IP, и позволяет быстро поднять IPv6 без внешних сервисов. Минус — нестабильность и устаревание технологии.

WireGuard + маршрутизация — более современный способ. Настраиваете второй VPS с IPv6 (например, на Hetzner или Vultr), поднимаете между ними WireGuard и прокидываете IPv6-префикс через маршрут. Внутри сети можно даже делить подсети и выдавать адреса локальным контейнерам.

Подойдёт для:
тестирования IPv6-приложений;
обхода ограничений провайдера;
развёртывания публичных IPv6-сервисов.

⚡️Плюс - вы контролируете туннель и сами задаёте маршруты. Минус — нужна ещё одна VPS или доверенный endpoint.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2👎1
🤣113👍3👎1💊1
Быстрый аудит безопасности Linux-системы с помощью Lynis

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

Как это сделать?

1️⃣Установка
Для Debian/Ubuntu:

sudo apt install lynis


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

2️⃣ Запуск аудита
Запускаем сканирование с правами root:

sudo lynis audit system


3️⃣ Анализ отчёта
В конце проверки Lynis выведет список предупреждений и рекомендаций.
Логи сохраняются в /var/log/lynis.log.
Особое внимание уделяем секциям warnings и suggestions.

4️⃣ Основные проверки Lynis
• Настройки ядра и безопасности
• Конфигурация SSH, sudo и PAM
• Права доступа к критичным файлам
• Установленные пакеты и их обновления
• Журналы и брандмауэр
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥76👍3