4722
Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru
🖥 Неочевидные возможности ethtool для работы с сетевыми интерфейсами
ethtool - это не только утилита для просмотра информации о сетевой карте. С ее помощью можно управлять сетевыми интерфейсами в linux: от настройки скорости линка до оптимизации производительности под конкретные задачи.
▪️ Проверка состояния интерфейса
ethtool eth0
ethtool -s eth0 speed 100 duplex full autoneg off
ethtool -k eth0
ethtool -K eth0 tx off rx off
ethtool --test eth0
ethtool -t eth0 offline
ethtool eth0 | grep detected
ethtool -S eth0
ethtool -g eth0
ethtool -G eth0 rx 4096 tx 4096
ethtool -s eth0 wol d
👩🎨 Шпаргалка по debsums
▪️ Основные ключи
Проверить все пакеты:
debsums
debsums --changed
debsums --config
debsums --config --changed
debsums --missing
debsums --ignore-missing
debsums nginx
debsums --config --changed
debsums openssh-server
Чтобы рабочие будни были веселее
#юмор
🧑💻 NetworkAdmin
Степаныч, выкидывай этот верхний ящик. Мне лежать то как? 🐈
#юмор
🧑💻 NetworkAdmin
🏃 PowerShell шпаргалки для linux админа
Админы, привыкшие к bash и linux, часто недооценивают powershell. А зря - это также неплохая оболочка, которая умеет не только выполнять команды, но и работать с объектами, сервисами и API windows. Ниже несколько полезных сценариев, которые пригодятся, если админите и linux, и windows.
▪️ Мониторинг процессов и портов. Аналог ps aux | grep и ss -tulpn:
# Процессы по имени
Get-Process | Where-Object { $_.ProcessName -like "*chrome*" }
# Открытые TCP-порты
Get-NetTCPConnection | Where-Object { $_.State -eq "Listen" }
# Найти все *.log файлы и удалить старше 7 дней
Get-ChildItem -Path "C:\Logs" -Filter *.log -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } |
Remove-Item -Force
$hosts = "8.8.8.8","1.1.1.1","networkadmin.ru"
foreach ($h in $hosts) {
Test-Connection -ComputerName $h -Count 2 -Quiet |
ForEach-Object { "$h -> $($_ -replace 'True','OK' -replace 'False','Fail')" }
}
# Проверить статус службы
Get-Service -Name "Spooler"
# Перезапустить службу
Restart-Service -Name "Spooler"
Invoke-RestMethod -Uri "https://api.ipify.org?format=json"
# Системная информация
Get-ComputerInfo | Select-Object CsName, WindowsVersion, OsArchitecture
# Диски
Get-PSDrive -PSProvider FileSystem
🎆 Удобная веб-панель для управления linux серверами
Cockpit - это встроенный в современные дистрибутивы инструмент, который превращает сервер в управляемый через браузер интерфейс. Вам больше не нужно все делать вручную в консоли - многие задачи можно выполнять из веб-панели.
▪️ Установка и запуск. В большинстве систем Cockpit есть прямо в репозиториях.
debian/ubuntu:
apt install cockpit -y
systemctl enable --now cockpit.socket
dnf install cockpit -y
systemctl enable --now cockpit.socket
https://IP-сервера:9090
🖼️ Отправка сообщений в WhatsApp из скрипта
Пост для тех, кому необходимо интегрировать отправку уведомлений в WhatsApp прямо из скрипта. Отличным решением будет Mudslide - консольный клиент, построенный на Node.js и библиотеке Baileys, работающий через API WhatsApp Web.
⚙️ Установка:
npm install -g mudslide
npx mudslide login
mudslide send 79123456789 "Привет"
mudslide send-image 79123456789 ./image.jpg
mudslide send-file me ./doc.pdf
mudslide send-location me 55.752121 37.617664
Сразу видно, мастер своего дела
#юмор
🧑💻 NetworkAdmin
🔓 Как защититься от MAC-спуфинга и ARP-атак в сети?
Локальные сети уязвимы к атакам, основанным на подмене MAC-адресов и ARP-ответов. Это позволяет злоумышленнику внедриться в трафик, перехватить сессии, пароли, или даже организовать MITM-атаку. Разберёмся, как это работает и как защититься.
MAC-спуфинг - изменение MAC-адреса устройства для подделки идентичности в сети (например, чтобы обойти фильтрацию или перехватить чужой IP).
ARP-спуфинг - атака, при которой злоумышленник отправляет поддельные ARP-ответы, перенаправляя трафик жертвы на себя.
▪️ Пример: ПК «думает», что MAC-адрес шлюза принадлежит атакующему. Всё, что идёт в интернет, сначала попадает к злоумышленнику.
▪️Как защититься?
1️⃣ Использовать статические ARP-записи. Особенно на критичных устройствах (серверы, шлюзы). Например:
arp -s 192.168.1.1 00:11:22:33:44:55
📈 Тестируем пропускную способность сети
До сих пор не знаете о iperf? Одном из самых популярных инструментов для измерения пропускной способности сети. Iperf - это кроссплатформенная утилита, работающая в режиме клиент-сервер. Вы можете запустить сервер на Linux и тестировать подключение с Windows, Android и наоборот. При запуске выбирается один из режимов:
Сервер: принимает подключения
Клиент: инициирует тестирование
⚙️ Установка и запуск
📱 На Linux:
apt install iperf3
iperf3 -s
winget install iperf3
iperf3 -c <IP-адрес сервера>
iperf3 -c <IP> --logfile log.txt -J
iperf3 -c <IP> -t 60
iperf3 -c <IP> -n 100M
iperf3 -c <IP> -P 4
👩💻 Как развернуть Kubernetes-кластер на bare-metal сервере
Если облако не ваш выбор, а хочется полного контроля над железом - Kubernetes на bare-metal отличный вариант. В этом посте будет описан базовый путь, как развернуть свой кластер на физических серверах с нуля.
⭐️ Что потребуется:
Один мастер-узел (control plane)
Один или более worker-узлов
Ubuntu Server 22.04+ (или другой поддерживаемый дистрибутив)
Сеть с доступом между узлами (ssh + порты k8s)
root или sudo-доступ
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl apt-transport-https ca-certificates software-properties-common
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
sudo systemctl restart containerd
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo add-apt-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
sudo apt-mark hold kubeadm kubelet kubectl
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sudo kubeadm join 192.168.0.10:6443 --token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
kubectl get nodes
kubectl get pods --all-namespaces
🗂 Ротационные бэкапы с экономией места: rsync + hardlink
На сервере делаются ежедневные резервные копии, но не хочется тратить кучу места на дублирование одних и тех же файлов? Есть отличный способ - использовать rsync с жёсткими ссылками (hardlinks) для дедупликации. Это позволяет хранить полные снепшоты, при этом экономя место.
🌟 Суть подхода
Бэкапы выглядят как отдельные директории (backup-2025-05-13, backup-2025-05-12), но все неизмененные файлы - это просто ссылки на одни и те же иноды.
Если файл не изменился - он физически не дублируется, а просто переиспользуется в новом бэкапе.
▪️ Структура и логика
Пример каталогов:
/backups/
├── daily.0 ← сегодня
├── daily.1 ← вчера
├── daily.2
└── daily.3
#!/bin/bash
SRC="/home/user"
DEST="/backups"
MAX=7 # сколько дней хранить
# Сдвигаем старые бэкапы
for ((i=MAX-1; i>=0; i--)); do
if [ -d "$DEST/daily.$i" ]; then
mv "$DEST/daily.$i" "$DEST/daily.$((i+1))"
fi
done
# Создаём новый бэкап с дедупликацией
LINK=""
if [ -d "$DEST/daily.1" ]; then
LINK="--link-dest=$DEST/daily.1"
fi
rsync -aAX --delete $LINK "$SRC/" "$DEST/daily.0"
- Каждый бэкап - полный, можно восстановить всё в конкретном состоянии.
- Экономия места - используется только дополнительное место для новых/изменённых файлов.
- Простота восстановления: rsync обратно или просто cp.
📱 Скрипт для анализа занятости места в Linux
Иногда на сервере внезапно заканчивается свободное место - и начинается беготня по командам du, find, lsof, вспоминание синтаксиса и пляски с пайпами. А можно проще. Сохранить себе в закладки bash-скрипт topdiskconsumer, который соберёт всё нужное за тебя.
🌟 Что делает скрипт?
Он запускается из любой директории и автоматически определяет, с какого тома (mount point) нужно искать.
Далее собирает:
▪ Топ-20 самых крупных файлов
▪ Топ-20 самых "тяжёлых" директорий
▪ Топ-20 больших файлов старше 30 дней
▪ Топ-20 удалённых, но не освобождённых файлов (файлы с открытым дескриптором)
🌟 Как это работает?
Скрипт не требует зависимостей, стороннего ПО или установки. Всё - стандартные утилиты: find, du, sort, lsof. Примеры:
▪️ Топ-20 директорий:
du -hcx --max-depth=6 / 2>/dev/null | sort -rh | head -n 20
find / -mount -ignore_readdir_race -type f -exec du -h "{}" + 2>&1 \
| sort -rh | head -n 20
find / -mount -ignore_readdir_race -type f -mtime +30 -exec du -h "{}" + 2>&1 \
| sort -rh | head -20
intNumFiles в начале скрипта или передать флаг -l.
./topdiskconsumer --help
🕛 Проблема смены часового пояса в Windows Server 2019/2022
В Windows Server 2019 и 2022 есть неприятная особенность (или всё-таки баг?), из-за которой нельзя изменить часовой пояс через графический интерфейс. Даже с правами администратора попытка изменить настройки через классическую панель (timedate.cpl) или "Параметры" приводит к ошибке о недостатке разрешений.
✅ Решается это просто - через консоль:
С помощью tzutil:
tzutil /s "Russian Standard Time"
Get-TimeZone -ListAvailable | Where-Object DisplayName -like "*Moscow*" | Set-TimeZone
❌ Отключение лишних сервисов через systemd
Одна из полезных практик на пути к оптимизации - переодически смотреть, а что вообще запускается и что из этого действительно нужно, а что можно отключить. Это будет полезно не только для оптимизации, но и для безопасности тоже.
1️⃣ Смотрим активные сервисы
systemctl list-unit-files --state=enabled
systemctl list-units --type=service
systemctl disable avahi-daemon.service
systemctl stop avahi-daemon.service
systemctl mask avahi-daemon.service
systemctl list-unit-files --state=enabled
📌 Проверка изменений системных конфигов в Debian/Ubuntu
Когда попадаешь на чужой сервер - никогда не знаешь, какие изменения там вносили. Один из быстрых способов разобраться - использовать утилиту debsums, которая есть в базовых репозиториях:
apt install debsums
❓ Что делает debsums
Утилита сравнивает MD5-суммы файлов из пакетов с эталонными значениями. Это помогает:
📍проверить целостность пакетов;
📍выявить модифицированные файлы;
📍понять, какие стандартные конфиги редактировались.
debsums --config --changed
/etc/ssh/ssh_config
/etc/default/ssh
✉️ Отправка почты через curl
Многие для отправки писем из консоли ставят дополнительные утилиты вроде mailx или mutt. Но часто этого не нужно - все умеет curl.
▪️ Простейшая отправка письма
curl -v \
--url "smtp://smtp.networkadmin.ru:587" \
--mail-from "admin@networkadmin.ru" \
--mail-rcpt "user@domain.ru" \
--user "admin@networkadmin.ru:MySecurePass" \
--upload-file ~/letter.txt
From: "Admin" <admin@networkadmin.ru>
To: "User" <user@domain.ru>
Subject: Test mail from curl
Hello from curl!
machine smtp.networkadmin.ru login admin@networkadmin.ru password MySecurePass
machine smtp.another.ru login user@another.ru password StrongPass123
curl -v \
--url "smtp://smtp.networkadmin.ru:587" \
--mail-from "admin@networkadmin.ru" \
--mail-rcpt "user@domain.ru" \
--netrc \
--upload-file ~/letter.txt
curl --ssl-reqd ...
curl --ssl ...
curl --url "smtps://smtp.networkadmin.ru" ...
curl --url "smtp://smtp.networkadmin.ru/myhost.domain.ru" ...
⬆️ Netplan в ubuntu - альтернативный способ настройки сетей
Ubuntu давно перешла от классического /etc/network/interfaces к новому инструменту - netplan. Он появился начиная с ubuntu 17.10 и стал основным способом настройки сетевых интерфейсов.
❗️ Netplan - это уровень абстракции для сетевых конфигураций.
Использует YAML-файлы в /etc/netplan/.
Работает через рендереры:
systemd-networkd - для серверов и headless-систем.
NetworkManager - для десктопов.
Позволяет централизованно и декларативно описывать сеть.
/etc/netplan/*.yaml.01-netcfg.yaml или 50-cloud-init.yaml.
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: true
network:
version: 2
renderer: networkd
ethernets:
ens33:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
network:
version: 2
ethernets:
ens33:
addresses:
- 192.168.1.101/24
- 192.168.1.102/24
network:
version: 2
bonds:
bond0:
interfaces: [ens33, ens34]
parameters:
mode: balance-rr
addresses:
- 192.168.1.200/24
gateway4: 192.168.1.1
network:
version: 2
vlans:
vlan100:
id: 100
link: ens33
addresses: [192.168.100.10/24]
sudo netplan apply
sudo netplan try
🔫 Шпаргалка по systemctl status
Обычно мы проверяем состояние конкретной службы:
systemctl status mariadb
systemctl status
Что покажет systemctl status без аргументов:
State - общее состояние (например: running, degraded)
Failed - количество упавших юнитов
Uptime - время работы systemd
Версия systemd
Количество активных units
Дерево зависимостей сервисов в удобном виде
systemctl list-units --failed
systemctl status <unit>
journalctl -u <unit>
systemctl status
State: degraded
Failed: 1 units
systemctl list-units --failed
journalctl -u systemd-modules-load.service
⛔️ Ограничиваем ресурсы в Linux
Control Groups (или просто cgroups) - это фича ядра Linux, позволяющая ограничивать ресурсы, выделенные для процессов: CPU, память, диск, сеть и т.д.
⭐️ Пример: вы хотите, чтобы процесс stress не съедал всю память и CPU:
# Создаём cgroup
sudo cgcreate -g memory,cpu:/limitgroup
# Ограничим память до 500MB
sudo cgset -r memory.limit_in_bytes=$((500*1024*1024)) limitgroup
# Ограничим CPU (50% одного ядра)
sudo cgset -r cpu.cfs_quota_us=50000 limitgroup
sudo cgset -r cpu.cfs_period_us=100000 limitgroup
# Запускаем процесс внутри cgroup
sudo cgexec -g memory,cpu:/limitgroup stress --vm 1 --vm-bytes 700M --cpu 1
/sys/fs/cgroup/.
🎓 Новый поток DevOps Upgrade стартует 30 июня
И этот поток — с важными обновлениями, потому что мы знаем как трудно учиться летом:
🟢 Вводный модуль и тренинг по тайм-менеджменту
🟢 Повторные попытки сдачи практики
🟢 Больше работы с куратором и поддержка по сложным вопросам
🟢 Бесплатный перенос на следующий поток
🟢 Новая модель оплаты — перед каждым модулем, равными частями
Это значит, вы оплачиваете поэтапно и можете выйти с курса в любой момент — но и вернуться уже нельзя.
📅 Учиться предстоит 9 месяцев: Ansible, Docker, Kubernetes, CI/CD, Terraform, мониторинг, портфолио, диплом, сертификации и поддержка на всех этапах.
💸 До 31 мая можно забронировать место на курсе за 10 000 ₽ 🔥
👉 Все подробности —по ссылке.
❓ Traceroute, Tracert и Tracepath - в чём разница и что выбрать
Когда нужно быстро определить маршрут до хоста, используются утилиты трассировки: traceroute, tracert и tracepath. Все они работают схожим образом - отправляют пакеты с увеличивающимся TTL и фиксируют ответы от промежуточных узлов. Но есть важные отличия.
▪️ traceroute (Linux). По умолчанию использует UDP, но можно переключиться на ICMP:
traceroute networkadmin.ru # UDP
traceroute -I networkadmin.ru # ICMP
🌐 Microsoft Network Monitor: захват и анализ сетевого трафика в Windows
Network Monitor - бесплатная утилита от Microsoft для захвата сетевого трафика. Несмотря на отсутствие обновлений, инструмент отлично подходит для диагностики на серверах и рабочих станциях.
⚙️ Установка:
winget install Microsoft.NetMon
TCP.Port == 25 or TCP.Port == 465 or TCP.Port == 587
IPv4.Address == 192.168.1.100
HTTP.Request
🛡 Безопасный запуск подозрительных файлов: Windows Sandbox и Hyper-V
Приходит странный .exe в письме, скачали скрипт с форума, нужно проверить .bat - но лезть в боевую систему страшно? Windows уже давно предлагает удобные инструменты для таких задач: Windows Sandbox и Hyper-V.
Windows Sandbox - это изолированная среда, встроенная в Windows 10/11 Pro и Enterprise, запускаемая как обычное приложение. Каждая сессия создаёт чистую виртуальную Windows, которая полностью удаляется при закрытии. Идеально для тестирования вредоносных или сомнительных файлов.
▪️ Активация:
Панель управления → Программы → Включение компонентов Windows → Windows Sandbox
– Не требует настройки
– Работает поверх Hyper-V
– Доступ к сети (опционально)
– Поддержка копипаста между хостом и Sandbox
– Можно запускать EXE, MSI, BAT, PowerShell-файлы
– Всё, что вы сделали, исчезает после выхода из песочницы
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\test</HostFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<Networking>Disable</Networking>
<LogonCommand>
<Command>explorer.exe</Command>
</LogonCommand>
</Configuration>
Развёртывание Linux по сети с PXE
Когда нужно установить Linux на множество серверов или ПК без USB-флешек и дисков, на помощь приходит PXE (Preboot Execution Environment) - загрузка ОС по сети. PXE позволяет запустить установщик Linux прямо из сети, что особенно удобно в дата-центрах, офисах и лабораториях.
🌟 Как это работает?
Компьютер включается и запрашивает сетевой загрузчик по DHCP.
Сервер отвечает и передаёт загрузочный образ через TFTP.
Клиент загружает ядро Linux и переходит к установке системы.
DHCP-сервер (для раздачи PXE-загрузчика)
TFTP-сервер (для передачи загрузочных файлов)
HTTP/NFS-сервер (для хранения установочных файлов)
sudo apt update && sudo apt install isc-dhcp-server tftpd-hpa apache2
/etc/dhcp/dhcpd.conf:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
next-server 192.168.1.10; # PXE-сервер
filename "pxelinux.0";
}
sudo systemctl restart isc-dhcp-server
TFTP_DIRECTORY="/srv/tftp"
TFTP_OPTIONS="--secure"
sudo systemctl restart tftpd-hpa
sudo mkdir -p /srv/tftp
cd /srv/tftp
sudo apt install syslinux pxelinux
sudo cp /usr/lib/PXELINUX/pxelinux.0 .
sudo cp /usr/lib/syslinux/modules/bios/* .
mkdir -p /srv/tftp/pxelinux.cfg
DEFAULT menu.c32
PROMPT 0
TIMEOUT 100
ONTIMEOUT install
LABEL install
MENU LABEL Install Ubuntu 22.04
KERNEL ubuntu/vmlinuz
APPEND initrd=ubuntu/initrd.gz netboot=http://192.168.1.10/ubuntu/
sudo mkdir -p /var/www/html/ubuntu
cd /var/www/html/ubuntu
wget http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar -xzf netboot.tar.gz
sudo systemctl restart apache2
▶️ БЕСПЛАТНЫЙ МАСТЕР-КЛАСС «Linux: от основ к профессиональному использованию»
14 мая в 19:00 (МСК) | Онлайн | Бесплатно
✔️Регистрация
Linux уже давно перестал быть инструментом исключительно для системных администраторов. Сегодня это необходимый навык для DevOps-инженеров, специалистов по кибербезопасности и всех, кто работает с IT-инфраструктурой.
На нашем вебинаре мы:
▪️ Развеем мифы о сложности Linux и покажем, как начать работать с ним уверенно
▪️ Продемонстрируем практическое применение в реальных рабочих задачах
▪️ Расскажем о карьерных перспективах для специалистов, владеющих Linux
▪️ Дадим пошаговый алгоритм освоения системы
Особое внимание уделим:
✔ Работе с терминалом (основные команды и их применение)
✔ Решению типовых задач системного администрирования
✔ Возможностям для профессионального роста
Ведущий: Дмитрий Семьянов — действующий специалист по пентесту, куратор курса «Основы Linux».
Не пропустите! Регистрация здесь.
🚀 Трудности с регистрацией? Пишите @Codeby_Academy
Весна, хочется чего-то нового
#юмор
🧑💻 NetworkAdmin
💬 Что скрывает Linux Kernel: модули ядра и их влияние
Ядро Linux - это не монолит, в котором всё скомпилировано раз и навсегда. Оно устроено куда гибче. Большинство драйверов, подсистем и расширений — это загружаемые модули ядра (kernel modules), которые можно подключать и отключать "на лету", без перезагрузки системы.
🌟 Что такое модуль ядра?
Модуль ядра - это объектный файл (.ko), содержащий часть функциональности, которая может быть подключена к ядру динамически. Это может быть драйвер оборудования, файловая система, сетевая функциональность и даже механизмы безопасности (например, AppArmor или SELinux).
▪️ Как посмотреть, какие модули загружены?
lsmod
modprobe имя_модуля
modprobe -r имя_модуля
/lib/modules/$(uname -r)/kernel/
find /lib/modules/$(uname -r) -type f -name '*имя*'
производительность
безопасность
стабильность системы
поддержку "нестандартного" оборудования