NetworkAdmin.ru
前往频道在 Telegram
Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru
显示更多4 722
订阅者
+124 小时
+207 天
+630 天
帖子存档
4 723
🪄 Почему просто пробросить порт иногда не работает
Классическая задача: есть сервер за NAT, нужно открыть наружу его сервис. Делаем DNAT:
iptables -t nat -A PREROUTING \
-p tcp --dport 8443 \
-j DNAT --to-destination 10.20.0.15:443
И кажется, что все готово. Но клиент подключиться не может. Проблема в том, что NAT в linux тесно связан с conntrack - механизмом отслеживания состояний соединений.
Ядро запоминает:
клиент → внешний IP:8443
↓ DNAT
10.20.0.15:443
И ожидает, что обратный трафик пройдет через тот же NAT-хост.
Если бэкенд отвечает клиенту через другой gateway, получаем асимметричную маршрутизацию:
Client → NAT → Backend
Client ←────── Backend
Клиент отправлял запрос одному адресу, а ответ пришел другим путем. TCP-сессия ломается.
Поэтому вместе с DNAT часто требуется SNAT/MASQUERADE:
iptables -t nat -A POSTROUTING \
-d 10.20.0.15 \
-p tcp --dport 443 \
-j MASQUERADE
Теперь бэкенд отвечает NAT-серверу, а тот корректно выполняет обратную трансляцию.
▪️ Посмотреть состояния conntrack:
conntrack -L
▪️ Отфильтровать нужный порт:
conntrack -L -p tcp --dport 443
▪️ Статистика:
conntrack -S
▪️ Еще одна распространенная проблема - таблица conntrack переполнена. Проверяем:
sysctl net.netfilter.nf_conntrack_max
cat /proc/sys/net/netfilter/nf_conntrack_count
Если значения почти одинаковые, новые соединения могут начать отбрасываться. В логах при этом можно увидеть:
nf_conntrack: table full, dropping packet
Диагностику проброса порта удобно начинать с tcpdump:
tcpdump -i any -nn port 8443 or port 443
Если SYN приходит на внешний интерфейс, но не уходит к бэкенду - смотрим NAT/firewall. Если уходит, но ответа нет - проверяем бэкенд и его маршрутизацию. Если SYN-ACK возвращается, но клиент его не получает - смотрим обратный NAT и conntrack.
#network #conntrack
🧑💻 NetworkAdmin4 723
✍️ DNS-диагностика без гадания и браузера
Когда сайт не открывается, очень легко сразу обвинить nginx, firewall или приложение. Но проблема может быть банально в DNS. Для нормальной диагностики удобнее всего использовать
dig.
▪️ Базовый запрос:
dig networkadmin.ru
В ответе нас обычно интересует секция:
ANSWER SECTION
Именно там видно, в какой IP резолвится имя.
▪️ Посмотреть только результат без лишнего вывода:
dig +short networkadmin.ru
▪️ Проверить конкретный DNS-сервер:
dig @8.8.8.8 networkadmin.ru
Например, можно сравнить внутренний и публичный DNS:
dig @10.20.0.10 app.networkadmin.ru
dig @1.1.1.1 app.networkadmin.ru
Если ответы разные - возможно, используется split DNS.
▪️ Проверить конкретный тип записи:
dig A networkadmin.ru
dig AAAA networkadmin.ru
dig MX networkadmin.ru
dig TXT networkadmin.ru
dig NS networkadmin.ru
Полезно при диагностике почты, IPv6, SPF/DKIM и делегирования домена.
▪️ Посмотреть цепочку DNS-разрешения от корневых серверов:
dig +trace networkadmin.ru
Это помогает понять, на каком уровне ломается делегирование.
▪️ Еще один важный параметр - TTL:
dig networkadmin.ru
Число перед типом записи в ANSWER SECTION- показывает, сколько секунд ответ еще может храниться в кеше.
Для reverse DNS:
dig -x 203.0.113.15
▪️ Проверить, какой DNS реально использует linux:
cat /etc/resolv.conf
А при systemd-resolved:
resolvectl status
#dns #dig
🧑💻 NetworkAdmin4 723
✨ Systemd-команды, которые быстро дают информацию о системе
У systemd есть несколько команд, которыми удобно пользоваться почти на любом современном linux-дистрибутиве. Плюс в том, что интерфейс везде примерно одинаковый: ubuntu, debian, rocky и другие системы.
1️⃣ hostnamectl - что это вообще за сервер
Одна из самых полезных команд:
hostnamectl
Например, на ubuntu server вывод может выглядеть так:
Static hostname: app-prod-02
Icon name: computer-vm
Chassis: vm
Machine ID: 97e42f42c9da49e39a8c0fcb45a2d772
Boot ID: 8aa12e8be6874464a2ec83c070bdcc76
Virtualization: kvm
Operating System: Ubuntu 24.04.2 LTS
Kernel: Linux 6.8.0-60-generic
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC
Сразу видно: hostname дистрибутив версию ядра архитектуру виртуализацию производителя виртуального железаТо есть одной командой можно быстро понять, куда вообще подключился: VM это, железо или другая среда. Во многих случаях hostnamectl заменяет несколько отдельных команд:
uname -a
cat /etc/os-release
lsb_release -a
2️⃣ timedatectl - время, timezone и синхронизация
timedatectl
Пример:
Local time: Mon 2026-09-17 11:38:42 CEST
Universal time: Mon 2026-09-17 09:38:42 UTC
RTC time: Mon 2026-09-17 09:38:42
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Полезно, когда нужно сразу проверить: локальное время UTC timezone работает ли синхронизация в каком режиме RTCЕсли нужно просто посмотреть текущую дату и время:
date
Но для диагностики NTP удобнее именно timedatectl.
3️⃣ loginctl - кто подключен и что делает
Без параметров:
loginctl
показывает активные пользовательские сессии.
Например:
SESSION UID USER SEAT LEADER CLASS TTY IDLE
3 1001 admin - 1842 user pts/0 no
А подробности можно получить так:
loginctl session-status 3
Пример:
3 - admin (1001)
Since: Mon 2026-09-17 11:20:15 CEST; 18min ago
Leader: 1842 (sshd)
Remote: 10.40.12.27
Service: sshd; type tty; class user
State: active
Unit: session-3.scope
├─1842 "sshd: admin@pts/0"
├─1850 -bash
└─2141 loginctl session-status 3
Здесь уже видно: когда подключился пользователь откуда пришел SSH PID сессии какие процессы внутри нее запущеныДля быстрой проверки пользователей я чаще использовал бы:
w
who
id
Но loginctl полезен, когда нужны именно детали systemd-сессии.
4️⃣ journalctl - системные логи
Одна из основных команд:
journalctl
Чаще всего полезны варианты:
journalctl -b
journalctl -u nginx
journalctl -p err
journalctl -f
То есть: логи текущей загрузки логи конкретного сервиса только ошибки просмотр в реальном времени5️⃣ localectl - locale и раскладка
localectl
Покажет системную locale и настройки клавиатуры.
Например:
System Locale: LANG=en_US.UTF-8
VC Keymap: (unset)
X11 Layout: us
Для обычной проверки переменных окружения часто достаточно:
locale
Но localectl удобен именно как systemd-интерфейс для системных настроек locale.
#linux #systemd
🧑💻 NetworkAdmin4 723
CENTI CONF: DevOps Day — митап по разработке и инженерным решениям ⚡️
6 ноября Centicore Group собирает инженеров и технических специалистов, чтобы поговорить о том, что реально болит в инфраструктуре: от Kubernetes и AI-инструментов до архитектурного контроля.
🗓 Когда: 6 ноября 2026, начало в 18:00 (мск)
📍 Где: Москва, Хлебозавод, Гостиная №9 + онлайн-формат
Что будет:
🧑💻 Разбор реальных задач
Инженерные кейсы, рабочие подходы и решения для своих проектов.
☸️ Kubernetes
Как организовать тестирование на k8s, где чаще ошибаются и каких антипаттернов избегать.
🤖 AI и LLM
Где coding agents ускоряют разработку, как не утонуть в техдолге и что нужно для локального запуска LLM.
🏗 Архитектура
Как сделать так, чтобы архитектурные правила работали не только в документации, но и проверялись автоматически.
👥 Нетворкинг и доступ к записям выступлений после митапа.
Регистрация на митап тут: https://tglink.io/4d4a3d99ef4800?erid=2W5zFH68SEd, увидимся 🤝
4 723
🖥 Get-ADUser: полезные примеры для работы с пользователями Active Directory
Get-ADUser - один из самых часто используемых PowerShell-командлетов при работе с active directory. С его помощью можно получать информацию о пользователях:
логин и имя email отдел и должность компанию состояние учетной записи дату истечения пароля дополнительные AD-атрибутыДля работы нужен модуль:
ActiveDirectory
На контроллерах домена он обычно уже установлен. На рабочих станциях и рядовых серверах его можно добавить через RSAT.
▪️ Проверить наличие модуля:
Get-Module -ListAvailable ActiveDirectory
▪️ Вывести всех пользователей домена:
Get-ADUser -Filter *
Но по умолчанию Get-ADUser возвращает только базовый набор свойств.
▪️ Если нужны дополнительные атрибуты, используем -Properties. Например, посмотреть все свойства пользователя:
Get-ADUser -Identity "petrov" -Properties *
Вывести только нужные поля:
Get-ADUser -Identity "petrov" `
-Properties Company,Department,Title,Mail |
Select-Object Name,Company,Department,Title,Mail
▪️ Один из самых полезных вариантов - фильтрация пользователей. Например, найти активные учетные записи без заполненного email:
Get-ADUser -Filter {
Enabled -eq $true -and Mail -notlike "*"
} -Properties Mail |
Select-Object Name,SamAccountName,Mail
Найти пользователей с истекшим паролем:
Get-ADUser -Filter {
Enabled -eq $true
} -Properties PasswordExpired |
Where-Object PasswordExpired |
Select-Object Name,SamAccountName,PasswordExpired
Найти пользователей определенного отдела:
Get-ADUser -Filter {
Department -eq "IT"
} -Properties Department,Title |
Select-Object Name,Department,Title
▪️ Можно сразу выгрузить результат в CSV:
Get-ADUser -Filter * `
-Properties Mail,Department,Title |
Select-Object Name,SamAccountName,Mail,Department,Title |
Export-Csv C:\Temp\ad-users.csv -NoTypeInformation -Encoding UTF8
#powershell #activedirectory
🧑💻 NetworkAdmin4 723
👁🗨 Хочешь разбираться в информационной безопасности, а не просто копировать чужие команды?
• netskings — авторский канал про кибербезопасность, компьютерные сети и OSINT.
• Разборы TCP/IP, VLAN и STP, антивирусов, криптографии, инструментов разведки и пентеста с основ, понятным языком и без лишней воды.
👉 Подписаться на netskings
4 723
🥱
Как быстро разобраться с дисками и маунтами
Когда на сервере несколько дисков, LVM, отдельные разделы и сетевые маунты, быстро понять "что куда примонтировано" бывает не так просто. Для базовой диагностики хватает трех команд:
1️⃣ lsblk - структура дисков
lsblk
Покажет диски, разделы, LVM и точки монтирования.
Более полезный вариант:
lsblk -f
Здесь дополнительно видны:
файловая система;
UUID;
label;
mount point
Например:
sda
├─sda1 ext4 /boot
└─sda2 LVM2_member
├─vg-root ext4 /
└─vg-data xfs /data
Если нужно увидеть размеры и тип устройств:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
2️⃣ blkid - UUID и тип файловой системы
blkid
Полезно, когда нужно проверить запись в /etc/fstab.
Например:
/dev/sdb1: UUID="a1b2-c3d4" TYPE="ext4"
После этого можно использовать UUID вместо /dev/sdb1:
UUID=a1b2-c3d4 /backup ext4 defaults 0 2
Это надежнее, потому что имя устройства после перезагрузки теоретически может измениться.
3️⃣ findmnt - что реально примонтировано
findmnt
Показывает дерево текущих маунтов.
Для конкретного каталога:
findmnt /data
Очень удобно, когда непонятно, на какой файловой системе лежит путь:
findmnt -T /var/lib/myapp/data/file.db
Команда покажет mount point, устройство и тип файловой системы, которые реально обслуживают этот файл.
Посмотреть только ext4:
findmnt -t ext4
Проверить /etc/fstab:
findmnt --verify
У каждой команды своя задача:
lsblk - какие блочные устройства есть и как они связаны
blkid - UUID, LABEL и тип файловой системы
findmnt - что и куда реально примонтировано
#storage #filesystem
🧑💻 NetworkAdmin4 723
🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему
Иногда TCP-соединение выглядит живым, хотя в реальности удаленная сторона уже давно недоступна.
Например: клиент выключился; оборвался VPN; пропал маршрут; firewall удалил state; NAT-сессия протухла; сервер завис без корректного закрытия соединения.Если по соединению нет трафика, приложение может еще долго считать его активным. Для таких случаев в TCP есть механизм keepalive. ▪️ Проверить текущие настройки linux:
sysctl net.ipv4.tcp_keepalive_time
sysctl net.ipv4.tcp_keepalive_intvl
sysctl net.ipv4.tcp_keepalive_probes
Типичная логика такая:
tcp_keepalive_time - сколько ждать простоя до первой проверки
tcp_keepalive_intvl - интервал между проверками
tcp_keepalive_probes - сколько неудачных попыток сделать
Например:
sysctl -w net.ipv4.tcp_keepalive_time=300
sysctl -w net.ipv4.tcp_keepalive_intvl=30
sysctl -w net.ipv4.tcp_keepalive_probes=5
В этом случае после 5 минут простоя ядро начнет проверять соединение, а при отсутствии ответа будет делать повторные попытки.
▪️ Для постоянной настройки:
cat > /etc/sysctl.d/99-tcp-keepalive.conf <<'EOF'
net.ipv4.tcp_keepalive_time=300
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_keepalive_probes=5
EOF
sysctl --system
▪️ Посмотреть активные TCP-соединения:
ss -nto
▪️ Подробнее по конкретному соединению:
ss -ti
Но есть важный нюанс: системные значения работают только для сокетов, где приложение вообще включило SO_KEEPALIVE. То есть одной настройки sysctl иногда недостаточно. Например, nginx, PostgreSQL, HAProxy, SSH и различные runtime могут иметь собственные keepalive-параметры.
▪️ У SSH есть похожий механизм на уровне приложения:
ServerAliveInterval 30
ServerAliveCountMax 3
Это уже не TCP keepalive, но задача похожая - быстрее понять, что удаленная сторона больше не отвечает.
#tcp #keepalive
🧑💻 NetworkAdmin4 723
🤩 Как расшифровать код ошибки Windows через certutil
При установке обновлений Windows рано или поздно встречаются ошибки вида:
0x80070422
По одному шестнадцатеричному коду не всегда понятно, что именно произошло. Но в Windows есть встроенная утилита, которая умеет переводить многие системные коды ошибок в нормальное текстовое описание - certutil.exe. Например:
certutil -error 0x80070422
В ответ получим примерно следующее:
ERROR_SERVICE_DISABLED
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.
То есть вместо непонятного:
0x80070422
мы сразу получаем подсказку: служба отключена и не может быть запущена.
Дальше уже можно искать проблему предметно. Например, проверить службы Windows Update:
Get-Service wuauserv,bits,cryptsvc
И посмотреть их состояние:
Get-Service wuauserv | Select-Object Name,Status,StartType
certutil -error полезен не только для Windows Update. Команда помогает расшифровывать различные HRESULT, Win32 и системные коды ошибок, которые встречаются в:
Event Viewer PowerShell установщиках службах Windows DISM сетевых компонентах сертификатах и криптографииНапример:
certutil -error 0x80070005
вернет:
E_ACCESSDENIED
Access is denied.
А это уже намного полезнее для диагностики, чем просто код.
#windows #troubleshooting
🧑💻 NetworkAdmin4 723
💻 Как жестко перезагрузить linux, когда обычный reboot уже не помогает
Иногда сервер зависает настолько неприятно, что обычные команды:
reboot
shutdown -r now
systemctl reboot
либо не отрабатывают, либо висят вместе со всей системой. В таких случаях у Linux есть более низкоуровневый механизм - Magic SysRq.
▪️ Одна из самых известных команд:
echo b > /proc/sysrq-trigger
Она отправляет команду на перезагрузку напрямую ядру. По эффекту это примерно как нажать аппаратный Reset.
⚠️ Важно понимать: это нештатная перезагрузка.
▪️ Команда:
• не завершает процессы корректно;
• не размонтирует файловые системы;
• не делает sync;
• не ждет systemd;
• практически сразу перезапускает машину.
Именно поэтому она может помочь там, где обычный reboot уже не работает.
Если shell уже открыт, запись в /proc/sysrq-trigger может сработать даже в довольно поврежденной системе.
▪️ Проверить состояние SysRq:
cat /proc/sys/kernel/sysrq
0 - SysRq отключен
1 - разрешены все функции
>1 - разрешена только часть функций по битовой маске
▪️ Полный список доступных команд можно запросить так:
echo h > /proc/sysrq-trigger
Подсказка обычно попадет в kernel log:
journalctl -k
или:
dmesg
▪️ Кроме b, есть и другие полезные команды. Например:
echo s > /proc/sysrq-trigger
пытается синхронизировать файловые системы.
echo u > /proc/sysrq-trigger
пытается перемонтировать файловые системы в read-only.
И только потом:
echo b > /proc/sysrq-trigger
Есть даже известная последовательность: REISUB, где поэтапно пытаются вернуть управление клавиатурой, завершить процессы, синхронизировать диски, перемонтировать FS в read-only и только затем перезагрузиться.
#linux #reboot
🧑💻 NetworkAdmin4 723
🌚 watch: простая динамическая диагностика в терминале
Иногда не нужен отдельный мониторинг, графики и дашборд. Нужно просто увидеть, как меняется состояние системы прямо сейчас. Для этого в линукс есть простая команда
watch. Она периодически запускает другую команду и обновляет вывод в терминале.
Например, смотреть свободное место:
watch df -h
По умолчанию команда выполняется каждые 2 секунды.
▪️ Изменить интервал:
watch -n 1 df -h
Теперь обновление идет раз в секунду.
▪️ Полезный режим - подсветка изменений:
watch -d free -h
watch выделит строки и значения, которые изменились между обновлениями.
▪️ Где это удобно:
cмотреть рост файловой системы
watch -n 1 'du -sh /var/log'
следить за памятью
watch -n 1 free -h
наблюдать TCP-соединения
watch -n 1 'ss -s'
проверять очередь systemd-задач
watch -n 1 'systemctl --failed'
следить за конкретным процессом
watch -n 1 'ps -p 1234 -o pid,%cpu,%mem,etime,cmd'
смотреть состояние RAID
watch -n 1 cat /proc/mdstat
наблюдать число файлов в каталоге
watch -n 1 'find /data/incoming -type f | wc -l'
▪️ Иногда удобно скрыть заголовок watch:
watch -t 'ss -s'
▪️ А если команда использует pipe, redirect или несколько операций, лучше брать ее в кавычки:
watch -n 1 'ps aux | sort -rk 3 | head'
#linux #watch
🧑💻 NetworkAdmin4 723
👌 Firewall default deny: как внедрять без внезапного отрезания доступа
Идея простая: разрешаем только то, что действительно нужно, все остальное блокируем. На бумаге это выглядит идеально. На практике одна неправильная команда - и SSH-сессия заканчивается вместе с доступом к серверу.
Поэтому default deny лучше внедрять не одной командой, а поэтапно.
▪️ Для
nftables базовая политика может выглядеть так:
table inet filter {
chain input {
type filter hook input priority 0;
policy drop;
iif lo accept
ct state established,related accept
tcp dport 22 ip saddr 10.20.0.0/16 accept
tcp dport { 80, 443 } accept
}
}
Критически важные строки:
iif lo accept
ct state established,related accept
Первая не ломает localhost-взаимодействия сервисов.
Вторая разрешает пакеты уже установленных соединений.
▪️ Перед включением policy drop сначала выпишите все, что сервер реально принимает:
ss -lntup
Проверьте текущие соединения:
ss -nt
И не забудьте про инфраструктурный трафик:
SSH / RDP мониторинг бэкап DNS NTP балансировщики кластеры▪️ Хороший порядок внедрения: 1. Создать явные allow-правила. 2. Проверить доступ из отдельной сессии. 3. Сохранить текущую SSH-сессию открытой. 4. Иметь доступ через console/IPMI/iDRAC/VM console. 5. Только после этого включать
drop.
▪️ Перед применением конфигурации:
nft -c -f /etc/nftables.conf
Ключ -c проверит синтаксис, не применяя правила.
▪️ Еще полезнее - заранее сделать автооткат. Например:
echo "nft flush ruleset" | at now + 5 minutes
Применили firewall, проверили доступ - отменили задание:
atq
atrm <job_id>
Если сами себя отрезали, через несколько минут правила сбросятся.
#firewall #nftables
🧑💻 NetworkAdmin4 723
Звезда родилась. И у нее уже есть что рассказать.
24 сентября — День “ТризТех” — первое в России мероприятие, посвященное сетевой безопасности, где вендоры, регуляторы и крупнейшие заказчики обсудят текущее состояние, проблемы и перспективы рынка.
В программе — разговор о и том, что происходит с сетевой безопасностью в России прямо сейчас, подходы к сравнению решений и реальный опыт внедрений. А для тех, кому важна инженерия, — управление сложными структурами, домены доступа, командная строка, архитектура и производительность в реальных условиях.
И конечно, цифры и результаты ТризТеха с начала года, стратегия и планы, а также продуктовые анонсы компании.
Это не очередная презентация продукта. Это первый большой выход ТризТеха в новом статусе и возможность узнать планы компании раньше большинства.
📅 24 сентября | 10:30–17:00 | онлайн
➡️ Регистрируйтесь на трансляцию Дня ТризТеха и проходите за эксклюзивом.
4 723
Звезда родилась. И у нее уже есть что рассказать.
24 сентября — День “ТризТех” — первое в России мероприятие, посвященное сетевой безопасности, где вендоры, регуляторы и крупнейшие заказчики обсудят текущее состояние, проблемы и перспективы рынка.
В программе — разговор о и том, что происходит с сетевой безопасностью в России прямо сейчас, подходы к сравнению решений и реальный опыт внедрений. А для тех, кому важна инженерия, — управление сложными структурами, домены доступа, командная строка, архитектура и производительность в реальных условиях.
И конечно, цифры и результаты ТризТеха с начала года, стратегия и планы, а также продуктовые анонсы компании.
Это не очередная презентация продукта. Это первый большой выход ТризТеха в новом статусе и возможность узнать планы компании раньше большинства.
📅 24 сентября | 10:30–17:00 | онлайн
➡️ Регистрируйтесь на трансляцию Дня ТризТеха и проходите за эксклюзивом.
4 723
🖥 Windows зависла на "Подготовке Windows": как проверить состояние удаленно
Типичная ситуация: после установки обновлений, компонентов или серверных ролей отправляем Windows в перезагрузку и видим сообщение:
Выполняется подготовка Windows.
Не выключайте компьютер.
В большинстве случаев лучше действительно подождать. Установка обновлений может занимать от нескольких минут до нескольких часов, особенно на медленном диске или при большом накопительном обновлении. Но если экран не меняется очень долго, хочется сначала разобраться, что происходит, а не сразу выключать сервер по питанию.
Локально войти в систему на этом этапе нельзя, однако иногда удаленные службы уже доступны. Подключиться к консоли можно через PsExec:
PsExec.exe \\192.168.158.10 -u localadmin powershell.exe
Если нужно запустить процесс в интерактивной сессии:
PsExec.exe \\192.168.158.10 -i 1 -u localadmin powershell.exe
В открывшейся консоли первым делом стоит проверить свободное место:
Get-Volume
Посмотреть процессы с высокой нагрузкой:
Get-Process |
Sort-Object CPU -Descending |
Select-Object -First 15 Name, Id, CPU
И найти службы, зависшие в переходном состоянии:
Get-CimInstance Win32_Service |
Where-Object State -eq "Stop Pending" |
Select-Object Name, DisplayName, ProcessId, State
Часто во время обновлений в списке встречается служба установщика модулей Windows:
TrustedInstaller
Перед завершением процесса желательно проверить журналы и убедиться, что установка действительно не продвигается:
Get-Content C:\Windows\Logs\CBS\CBS.log -Tail 50
Принудительное завершение процесса - крайняя мера:
taskkill /PID <ProcessId> /F
После этого система может продолжить выключение или выполнить откат незавершенных изменений.
Когда Windows загрузится, стоит проверить хранилище компонентов и системные файлы:
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
Дополнительно проверьте результат установки обновлений:
Get-WinEvent -FilterHashtable @{
LogName = "System"
StartTime = (Get-Date).AddHours(-6)
} |
Where-Object Message -match "update|servicing|TrustedInstaller" |
Select-Object TimeCreated, Id, LevelDisplayName, Message
#windows #psexec
🧑💻 NetworkAdmin4 723
🌲 Как посмотреть дерево процессов в Linux: htop, ps и pstree
Когда нужно понять, какой процесс кого запустил, обычного списка
ps часто недостаточно. Намного удобнее посмотреть процессы в виде дерева: родительский процесс -> дочерние процессы -> подпроцессы. Есть несколько простых способов.
1️⃣ Дерево процессов в htop. Если htop уже установлен, нажмите: t. Это переключит список в режим Tree View. Так удобно быстро посмотреть структуру процессов прямо в интерактивном интерфейсе: например, какие worker-процессы запустил nginx, systemd или приложение.
Но если процессов много и вывод нужно спокойно изучить, интерактивный интерфейс бывает не самым удобным.
2️⃣ Команда ps axf Консольный вариант:
ps axf
Ключ f показывает процессы в виде ASCII-дерева. Если вывод большой, его можно сохранить в файл:
ps axf > ~/process-tree.txt
После этого список удобно открыть в редакторе, искать по нему и прикладывать к разбору инцидента.
Более информативный вариант:
ps -eo user,pid,ppid,stat,lstart,cmd --forest
Здесь дополнительно видны пользователь, PID, PPID, статус, время запуска и полная команда.
3️⃣ Утилита pstree. pstree входит в пакет psmisc, который часто уже установлен в системе.
Установка:
apt install psmisc
Базовый запуск:
pstree
Показать PID:
pstree -p
Показать аргументы команд:
pstree -a
Вывести дерево для конкретного процесса:
pstree -p 1234
Или для пользователя:
pstree -p username
Полезные параметры:
Например:-p- показывает PID-a- показывает аргументы командной строки-n- сортирует процессы по PID-u- показывает смену пользователя-s- показывает родителей указанного процесса-c- не объединяет одинаковые ветки
pstree -p -a -u
#linux #terminal #processes
🧑💻 NetworkAdmin4 723
Этот файл был удален пользователем
Встречаемся в Москве с теми, кто отвечает за хранение данных бизнеса. Обсудим, как решить задачу со звездочкой — уберечь массивы файлов и резервных копий от атак шифровальщиков, утечки или случайной перезаписи.
На бизнес-ужине эксперты провайдера ИТ-инфраструктуры Selectel расскажут:
➕как устроено хранилище S3 под капотом;
➕какие угрозы данным существуют и как выстроить многослойную систему защиты;
➕почему защита данных — это не статья расходов, а управление рисками.
Будет актуально руководителям в ИТ-компаниях, старшим архитекторам, системным администраторам. Поговорим и про стратегию хранения, и про реализацию.
📆 24 сентября (чт), 18:30
📍Москва, м. Динамо
⏩Участие бесплатное, дождитесь подтверждения заявки. Смотрите полную программу и регистрируйтесь: https://slc.tl/t7ito
Реклама. АО "Селектел". erid:2W5zFJz9JhX
4 723
💚 Bonding в Linux: active-backup, LACP и типовые ошибки настройки
Bonding объединяет несколько сетевых интерфейсов в один логический
bond0. Обычно его используют для:
• резервирования сетевого подключения
• распределения нагрузки
• защиты от отказа кабеля, порта или сетевой карты
• увеличения суммарной пропускной способности
Два самых популярных режима - active-backup и 802.3ad.
▪️ Active-backup. В каждый момент работает только один интерфейс. Второй находится в резерве и включается при отказе основного.
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup
MIIMonitorSec=100ms
Primary=eno1
Главный плюс - простота. Специальная настройка коммутатора обычно не требуется. Подходит, когда нужна прежде всего отказоустойчивость.
▪️ LACP - 802.3ad. Оба интерфейса могут передавать трафик одновременно:
[Bond]
Mode=802.3ad
MIIMonitorSec=100ms
LACPTransmitRate=fast
TransmitHashPolicy=layer3+4
Но на коммутаторе порты должны быть объединены в один LAG с поддержкой LACP.
Важно понимать: одно TCP-соединение обычно не получит скорость двух интерфейсов. Трафик распределяется по хешу между разными потоками.
Проверить состояние bonding:
cat /proc/net/bonding/bond0
Там видно:
текущий активный интерфейс состояние каждого slave скорость и duplex количество переключений состояние LACPДополнительно:
ip -br link
ip -s link show bond0
ethtool eno1
▪️ Типовые ошибки
• включили#linux #bonding #network 🧑💻 NetworkAdmin802.3ad, но не настроили LAG на коммутаторе • порты подключены к разным независимым коммутаторам без MLAG/stack • IP назначен одновременно наbond0и физические интерфейсы • интерфейсы имеют разную скорость или MTU • забыли удалить старые маршруты и конфигурации slave-интерфейсов • считают, что LACP удвоит скорость одного соединения • проверяют толькоlink up, хотя трафик через порт не проходит
4 723
👁 Linux audit rules: минимальный набор для контроля критичных файлов
Обычные логи не всегда отвечают на главный вопрос: кто изменил конфигурацию и какой процесс это сделал? Для таких задач в Linux есть
auditd. Он фиксирует обращения к файлам на уровне ядра и сохраняет пользователя, процесс, команду и время события.
▪️ Установка:
apt install auditd audispd-plugins
systemctl enable --now auditd
Правила лучше хранить в отдельном файле:
nano /etc/audit/rules.d/critical-files.rules
▪️ Минимальный набор:
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
-w /etc/ssh/sshd_config -p wa -k ssh_config
-w /root/.ssh/ -p wa -k ssh_keys
-w /etc/systemd/system/ -p wa -k systemd_units
-w /etc/cron.d/ -p wa -k cron_changes
-w /etc/crontab -p wa -k cron_changes
-w /etc/audit/ -p wa -k audit_config
-w - файл или каталог для наблюдения
-p w - запись в файл
-p a - изменение атрибутов и прав
-k - удобная метка для поиска
▪️ Загружаем правила:
augenrules --load
▪️ Проверяем:
auditctl -l
▪️ Примеры использования:
Ищем изменения, например, SSH-конфига:
ausearch -k ssh_config -i
Посмотреть события за сегодня:
ausearch -k sudoers -ts today -i
Краткий отчет по измененным файлам:
aureport -f -i
▪️ В событии можно увидеть:
какой файл изменили UID и реального пользователя PID процесса исполняемую команду успешность операции точное время#linux #auditd 🧑💻 NetworkAdmin
