NetworkAdmin.ru
Open in Telegram
Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru
Show more4 713
Subscribers
No data24 hours
-107 days
-730 days
Data loading in progress...
Similar Channels
Tags Cloud
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
June '26
June '26
+34
in 4 channels
May '26
+27
in 0 channels
Get PRO
April '26
+25
in 0 channels
Get PRO
March '26
+19
in 0 channels
Get PRO
February '26
+30
in 0 channels
Get PRO
January '26
+89
in 5 channels
Get PRO
December '25
+152
in 12 channels
Get PRO
November '25
+114
in 2 channels
Get PRO
October '25
+123
in 7 channels
Get PRO
September '25
+181
in 15 channels
Get PRO
August '25
+19
in 0 channels
Get PRO
July '25
+95
in 11 channels
Get PRO
June '25
+70
in 5 channels
Get PRO
May '25
+72
in 1 channels
Get PRO
April '25
+560
in 24 channels
Get PRO
March '25
+127
in 6 channels
Get PRO
February '25
+205
in 8 channels
Get PRO
January '25
+409
in 19 channels
Get PRO
December '24
+69
in 0 channels
Get PRO
November '24
+88
in 1 channels
Get PRO
October '24
+598
in 8 channels
Get PRO
September '24
+1 046
in 26 channels
Get PRO
August '24
+1 013
in 24 channels
Get PRO
July '24
+311
in 7 channels
Get PRO
June '240
in 1 channels
Get PRO
May '240
in 0 channels
Get PRO
April '240
in 0 channels
Get PRO
March '240
in 0 channels
Get PRO
February '240
in 0 channels
Get PRO
January '24
+472
in 3 channels
| Date | Subscriber Growth | Mentions | Channels | |
| 25 June | 0 | |||
| 24 June | 0 | |||
| 23 June | +2 | |||
| 22 June | 0 | |||
| 21 June | 0 | |||
| 20 June | +1 | |||
| 19 June | 0 | |||
| 18 June | +1 | |||
| 17 June | +2 | |||
| 16 June | 0 | |||
| 15 June | 0 | |||
| 14 June | 0 | |||
| 13 June | 0 | |||
| 12 June | 0 | |||
| 11 June | +1 | |||
| 10 June | +1 | |||
| 09 June | +1 | |||
| 08 June | 0 | |||
| 07 June | +1 | |||
| 06 June | +1 | |||
| 05 June | +2 | |||
| 04 June | 0 | |||
| 03 June | +2 | |||
| 02 June | +8 | |||
| 01 June | +11 |
Channel Posts
😑 Почему сервис работает вручную, но падает в systemd
Распространенная ситуация: запускаете приложение руками и все работает.
/opt/myapp/start.sh
А через systemd:
systemctl start myapp
сервис падает, не видит файлы, не находит переменные, не может подключиться к сокету или пишет что-то вроде:
No such file or directory
Permission denied
command not found
И тут важно понять главное: запуск руками и запуск через systemd - это не одно и то же окружение. Когда вы запускаете команду из shell, у вас уже есть:
переменные окружения;
текущий каталог;
пользовательская сессия;
PATH;
ssh-agent;
загруженный профиль .bashrc / .profile;
права вашего пользователя.
А systemd запускает сервис гораздо строже.
▪️Самые частые причины:
Нет нужного PATH. В shell команда находится, а в systemd нет.
Плохо:
ExecStart=python app.py
Лучше:
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Другой рабочий каталог. Скрипт ожидает файлы рядом с собой, а systemd запускает его не оттуда.
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/start.sh
Не хватает переменных окружения. Например, DB_HOST, API_TOKEN, JAVA_HOME.
Environment="DB_HOST=127.0.0.1"
EnvironmentFile=/etc/myapp/myapp.env
Не тот пользователь. Вручную запускали от root, а сервис работает от myapp.
User=myapp
Group=myapp
И внезапно выясняется, что нет прав на логи, конфиги или каталоги данных.
Сервис стартует раньше зависимости. Например, приложение поднимается раньше базы, сети или mount point.
After=network-online.target postgresql.service
Wants=network-online.target
Скрипт требует интерактивную оболочку. Если внутри завязка на .bashrc, алиасы, read, sudo с паролем или интерактивные команды - в systemd это почти гарантированно сломается. Что смотреть первым делом:
systemctl status myapp
journalctl -u myapp -xe
systemctl cat myapp
Полезно вывести окружение процесса:
systemctl show myapp -p Environment
И проверить unit на синтаксис:
systemd-analyze verify /etc/systemd/system/myapp.service
#linux #systemd
🧑💻 NetworkAdmin| 2 | ℹ️ DISM и SFC: базовая реанимация windows без переустановки
Когда windows начинает вести себя странно, не всегда нужно сразу переустанавливать систему. Симптомы могут быть разные:
не открываются системные компоненты;
падают службы;
не ставятся обновления;
появляются ошибки DLL;
ломаются стандартные приложения;
система загружается, но работает нестабильно.
В таких случаях полезно вспомнить про два штатных инструмента: DISM и SFC. Они не делают магию и не чинят все подряд, но часто помогают восстановить поврежденные системные файлы и компонентное хранилище виндовс.
▪️ SFC проверяет целостность системных файлов. Запускать нужно из cmd или PowerShell от администратора:
sfc /scannow
Если SFC найдет поврежденные файлы, он попробует заменить их корректными копиями. Но есть нюанс: SFC берет файлы из компонентного хранилища windows. Если само хранилище повреждено, SFC может не справиться. Вот тут нужен DISM.
▪️ DISM проверяет и восстанавливает component store:
DISM /Online /Cleanup-Image /CheckHealth
Быстрая проверка, есть ли признаки повреждения.
DISM /Online /Cleanup-Image /ScanHealth
Более глубокое сканирование.
DISM /Online /Cleanup-Image /RestoreHealth
Восстановление повреждений.
▪️ Обычно рабочий порядок такой:
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
Сначала чиним компонентное хранилище, потом проверяем системные файлы. Если Windows Update работает нормально, DISM сам подтянет нужные компоненты. Если нет - может понадобиться ISO-образ windows той же версии.
Пример с указанием источника:
DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:D:\sources\install.wim:1 /LimitAccess
D: - смонтированный ISO
install.wim - образ установки
:1 - индекс редакции внутри WIM
/LimitAccess - не ходить в Windows Update
Индекс можно посмотреть так:
DISM /Get-WimInfo /WimFile:D:\sources\install.wim
▪️ Где это реально помогает:
после неудачных обновлений;
после внезапного выключения;
при ошибках системных файлов;
когда Windows Update ведет себя странно;
при повреждении системных компонентов.
#windows #dism #sfc
🧑💻 NetworkAdmin | 533 |
| 3 | А вот это уже пахнет на настоящему дорого
#юмор
🧑💻 NetworkAdmin | 745 |
| 4 | Определите свой уровень Python за 2 минуты 🐍
Пройдите тест из 5 вопросов, и проверьте свои знания в Python.
А после теста вас ждёт ещё больше ценных материалов и полезной информации для дальнейшего роста. Идеально для начинающих и тех, кто хочет освежить свои знания.
Не откладывай развитие — переходи по ссылке, прямо сейчас и проверь себя! 🔥 | 705 |
| 5 | 🔎 mtr: диагностика сети
Если сеть начинает лагать, то обычно первым делом запускают:
ping 8.8.8.8
Потом:
traceroute 8.8.8.8
ping показывает задержку и потери до конечного узла. traceroute показывает маршрут. А mtr объединяет оба подхода в одном инструменте. По сути, mtr - это живая диагностика маршрута: он постоянно отправляет пакеты и показывает статистику по каждому hop`у.
▪️ Установка:
apt install mtr
или:
yum install mtr
Запуск:
mtr 8.8.8.8
▪️ В интерфейсе видно:
через какие узлы идет маршрут;
где растет задержка;
на каком hop’е появляются потери;
как меняется картина во времени.
▪️ Для разовой проверки удобен report-режим:
mtr -rw 8.8.8.8
-r - report mode
-w - широкий вывод, чтобы не резались имена хостов
Можно указать число пакетов:
mtr -rw -c 100 8.8.8.8
Это уже полезнее, чем скриншот после 5 секунд наблюдения.
▪️ Главное правило чтения mtr:
Потери на промежуточном hop’е не всегда означают проблему. Многие маршрутизаторы специально ограничивают ответы на ICMP/TTL exceeded. Поэтому если на одном промежуточном узле видно 50% loss, а дальше и до конечного хоста потерь нет - скорее всего, это не авария. Проблема становится реальной, когда потери продолжаются на всех следующих hop’ах, включая конечный адрес. Пример:
hop 5: 30% loss
hop 6: 30% loss
hop 7: 30% loss
target: 30% loss
Вот это уже похоже на реальную потерю по пути. А если так:
hop 5: 80% loss
hop 6: 0% loss
target: 0% loss
то, скорее всего, просто сам hop не любит отвечать на диагностические пакеты.
▪️ Полезные варианты:
mtr -4 networkadmin.ru # только IPv4.
mtr -6 networkadmin.ru # только IPv6.
mtr -T networkadmin.ru # TCP-режим, полезно, когда ICMP фильтруется.
mtr -u networkadmin.ru # UDP-режим
mtr показывает сетевую картину с вашей точки. Если проблема плавающая или зависит от обратного маршрута, одного запуска может быть мало.
Лучше запускать проверку с двух сторон, если есть такая возможность: от клиента к серверу и от сервера к клиенту.
#linux #network
🧑💻 NetworkAdmin | 554 |
| 6 | Магия Lovable: как создавать готовые интерфейсы с помощью одного запроса.
Бесплатный урок курса «Вайб-кодинг: создание цифровых продуктов с ИИ»
Lovable может за минуты собрать экран, который выглядит как почти готовый интерфейс. Но результат зависит не от «магии нейросети», а от того, насколько точно вы ставите задачу. Один расплывчатый запрос даст случайный макет, а правильно собранный системный промпт — понятную структуру, единый стиль и экран, который уже можно показывать команде, заказчику или использовать для проверки идеи.
На открытом уроке 2 июля в 20:00 разберём, как формулировать задачи для Lovable, чтобы получать предсказуемый результат с первой попытки. Поговорим о структуре системного промпта, ключевых словах, которые помогают превратить текст в качественный интерфейс, и способах доработки результата через встроенный редактор и повторные запросы. Отдельно обсудим, как управлять компонентами, просить нейросеть переиспользовать элементы и сохранять единый визуальный стиль.
Урок не для тех, кто ждёт, что Lovable «сам всё поймёт», не готов уточнять задачу и хочет получать качественный интерфейс без структуры, контекста и итераций.
👉 Записаться: https://otus.pw/uKsN/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 | 622 |
| 7 | 🌀 Почему "процесс жив" не означает "сервис работает"
Одна из частых ошибок в мониторинге - считать сервис рабочим только потому, что его процесс запущен.
systemctl status myapp
показывает active (running), PID есть, порт вроде слушается - значит все хорошо? Не всегда.
Процесс может быть живым, но сам сервис уже фактически не работает:
завис на подключении к базе;
потерял доступ к Redis или очереди;
перестал обрабатывать запросы;
отвечает только частью функционала;
уперся в пул соединений;
ловит deadlock внутри приложения;
слушает порт, но возвращает 500.
Поэтому нормальная проверка должна отвечать не на вопрос: "процесс существует?" А на вопрос: "сервис реально выполняет свою задачу?"
▪️ Самый простой пример - HTTP health check:
curl -fsS http://127.0.0.1:8080/health
Если endpoint возвращает 200 OK, уже лучше, чем просто проверять PID. Но и здесь есть нюанс.
Плохой health check: /health -> 200 OK просто потому что приложение запустилось.
▪️ Хороший health check проверяет зависимости:
доступна ли база;
работает ли очередь;
можно ли читать конфиг;
не закончились ли critical ресурсы;
готов ли сервис принимать трафик;
В кубере это разделяют на разные проверки:
liveness - процесс жив или его надо перезапустить;
readiness - можно ли отправлять на него трафик;
startup - успел ли сервис нормально подняться.
Эту же логику полезно применять и без k8s. Например:
curl -fsS http://127.0.0.1:8080/ready
/ready может возвращать ошибку, если приложение живо, но база недоступна. В таком состоянии сервис лучше не убивать, но и трафик на него отправлять не надо.
▪️ Для обычного linux-сервера можно использовать health check в связке с systemd, HAProxy, Nginx, keepalived или внешним мониторингом. Пример проверки в скрипте:
#!/usr/bin/env bash
if curl -fsS http://127.0.0.1:8080/health >/dev/null; then
echo "OK"
exit 0
else
echo "FAIL"
exit 1
fi
Такой скрипт уже можно подключать к мониторингу или балансировщику.
#linux #monitoring
🧑💻 NetworkAdmin | 643 |
| 8 | 🚀 Две премьеры PT NGFW в одном эфире
29 июня в 11:00 команда PT NGFW впервые покажет новую индустриальную модель PT NGFW 905i и подробно разберет релиз 1.11 с одной из самых ожидаемых функций — удаленным доступом для пользователей.
Но главное — вместо презентаций будут реальные демонстрации.
Мы покажем новую модель в лаборатории, проведем для нее стресс-испытания в условиях, приближенных к реальным заводским (поджарим в прямом эфире), разберем архитектуру удаленного доступа и расскажем, какие инженерные задачи пришлось решить команде разработки.
В программе:
🔹 первая демонстрация новой индустриальной платформы PT NGFW 905i;
🔹 удаленный доступ: архитектура, сценарии применения и особенности реализации;
🔹 новые возможности релиза 1.11;
🔹 новые возможности администрирования и промышленной эксплуатации;
🔹 живая демонстрация вместо слайдов.
Если давно ждали релиз, хотели увидеть новую индустриальную платформу или просто любите хорошие инженерные разборы, — этот вебинар пропускать нельзя. Запасайтесь попкорном 🍿
➡️ Регистрируйтесь и узнайте о новых возможностях PT NGFW первыми. | 652 |
| 9 | 🛡 Как защитить скрипт от повторного запуска
Одна из классических проблем в автоматизации: скрипт еще не успел завершиться, а cron, systemd timer или админ руками запускает его снова. В итоге получаем неприятные эффекты: два бэкапа пишут в один каталог, две задачи одновременно чистят одни и те же файлы, несколько копий скрипта дергают API, повторный запуск ломает промежуточное состояние, база получает дубли или конфликтующие операции и т.д. Чтобы этого избежать, удобно использовать flock.
flock - это утилита для работы с файловыми блокировками. Идея простая: перед запуском скрипт пытается взять lock-файл. Если блокировка уже занята, значит другая копия скрипта еще работает.
▪️ Самый простой вариант:
flock -n /tmp/myjob.lock /opt/scripts/myjob.sh
/tmp/myjob.lock - файл блокировки
-n - не ждать освобождения lock, а сразу завершиться
/opt/scripts/myjob.sh - команда, которую нужно выполнить
Если первый запуск еще работает, второй просто не стартует.
▪️ Для cron это выглядит так:
*/5 * * * * flock -n /tmp/backup.lock /opt/scripts/backup.sh
`
Теперь даже если бэкап длится дольше 5 минут, новая копия не запустится поверх старой.
▪️ Можно добавить логирование:
flock -n /tmp/backup.lock /opt/scripts/backup.sh || echo "backup already running"
▪️ Но часто удобнее встроить flock прямо в сам скрипт:
#!/usr/bin/env bash
set -euo pipefail
LOCK_FILE="/tmp/myjob.lock"
exec 200>"$LOCK_FILE"
flock -n 200 || {
echo "script already running"
exit 1
}
echo "start job"
# основная логика скрипта
sleep 30
echo "done"
exec 200>"$LOCK_FILE" открывает lock-файл на файловом дескрипторе 200
flock -n 200 пытается взять блокировку
если блокировка занята - скрипт завершается
пока скрипт работает, дескриптор открыт и lock удерживается
После завершения процесса блокировка освобождается автоматически.
▪️ Где хранить lock-файл? Для временных задач часто используют:
/tmp/myjob.lock
Для системных сервисов лучше:
/run/myjob.lock
/run обычно живет в tmpfs и очищается после перезагрузки. Это удобно для runtime-блокировок.
▪️ Есть и режим ожидания:
flock /tmp/myjob.lock /opt/scripts/myjob.sh
В этом случае второй запуск будет ждать, пока первый освободит lock.
Можно задать таймаут ожидания:
flock -w 60 /tmp/myjob.lock /opt/scripts/myjob.sh
Так команда подождет до 60 секунд и завершится, если блокировка не освободится.
#bash #flock
🧑💻 NetworkAdmin | 828 |
| 10 | Тест:Как хорошо вы знаете Ansible?⚡️
👉Что такое плейбук?
a) Список серверов для управления контрольной нодой Ansible
b) Список задач и настроек для конфигурирования хостов
c) Специальный плагин Ansible для подключения к удаленным серверам по SSH
d) Название внутренней архитектуры Ansible
5 вопросов по Ansible ждут вас внутри бота👇
👉 ПРОВЕРИТЬ СВОИ ЗНАНИЯ | 615 |
| 11 | Смотря какой fabric
Смотря сколько details
#юмор
🧑💻 NetworkAdmin | 1 274 |
| 12 | 💿 LVM RAID на практике: RAID1, замена диска и проверка целостности
LVM умеет не только создавать обычные логические тома, но и собирать RAID-массивы. Это удобно, когда хочется управлять дисками, томами и отказоустойчивостью в одном месте, без отдельного mdadm.
Ниже будет шпаргалка по созданию LVM RAID1, замене вылетевшего диска и включению проверки целостности через DM Integrity.
Создаем RAID1 из двух дисков:
apt install lvm2
pvcreate /dev/sdb /dev/sdc
vgcreate vgroup /dev/sdb /dev/sdc
lvcreate --type raid1 -l 100%FREE -n lvraid1 vgroup
Проверяем тип сегмента:
lvs -o+segtype
Создаем файловую систему и монтируем том:
mkfs.ext4 /dev/vgroup/lvraid1
mkdir /mnt/lvraid1
mount /dev/vgroup/lvraid1 /mnt/lvraid1
Смотрим итоговую структуру: lsblk
Теперь можно записать данные и дождаться полной синхронизации:
cp -r /var/log/* /mnt/lvraid1/
Если после этого отключить один из дисков, данные останутся доступны. RAID1 продолжит работать в degraded-состоянии.
Проверить статус можно так:
lvs -a -o name,devices vgroup
Если один диск пропал, в выводе появится устройство со статусом [unknown].
Допустим, вместо старого диска в системе появился новый /dev/sdd.
Добавляем его в VG:
pvcreate /dev/sdd
vgextend vgroup /dev/sdd
Удаляем пропавший диск из volume group:
vgreduce --removemissing vgroup --force
Проверяем, что [unknown] исчез:
lvs -a -o name,devices vgroup
Теперь восстанавливаем RAID и добавляем новый диск в зеркало:
lvconvert --repair vgroup/lvraid1
lvconvert -m1 vgroup/lvraid1 /dev/sdd
На вопросы LVM отвечаем утвердительно. Наблюдать за синхронизацией можно так:
lvs -a -o name,devices vgroup
lvs -o+segtype
В итоге диск заменен, данные на месте, система продолжает работать.
Это один из плюсов LVM RAID: замена диска проходит достаточно логично и без остановки сервера, если железо позволяет hot-swap.
▪️ Еще одна интересная возможность LVM RAID - конвертация уровней RAID на лету. Например, можно начать с RAID1 на двух дисках, а потом добавить еще два диска и прийти к RAID10. Правда, прямой конвертации из RAID1 в RAID10 нет: обычно это делается через промежуточные этапы. Примерная схема:
pvcreate /dev/sdc /dev/sde
vgextend vgroup /dev/sdc /dev/sde
lvconvert --type raid5_n vgroup/lvraid1
lvresize -l5118 vgroup/lvraid1
lvconvert --stripes 1 vgroup/lvraid1
lvconvert --stripes 2 vgroup/lvraid1
lvconvert --type raid10 vgroup/lvraid1
lvconvert --type raid10 vgroup/lvraid1
Размер в lvresize нужно подбирать под конкретный LV. LVM в процессе обычно сам подсказывает, что ему нужно: где не хватает места, где конвертация идет в несколько этапов, и какой промежуточный тип требуется. Если RAID10 создается с нуля, все намного проще. Добавляем 4 диска в VG и создаем LV:
lvcreate --type raid10 -l 100%FREE -n lvraid10 vgroup
▪️ Самая интересная часть - DM Integrity. LVM RAID может проверять целостность данных с помощью контрольных сумм. Это позволяет обнаруживать повреждения и пытаться восстановить данные из другой копии в составе RAID. Включить integrity можно сразу при создании LV:
lvcreate --type raid1 --raidintegrity y -L 9G -n lvraid1 vgroup
Важный момент: под метаданные integrity нужно свободное место. Если указать 100%FREE, можно получить ошибку, потому что LVM не сможет выделить место под служебные данные. Если в VG есть свободное место, integrity можно добавить к уже существующему RAID-томy:
lvconvert --raidintegrity y vgroup/lvraid1
При чтении данных будет проверяться контрольная сумма. Если она не совпадет с сохраненной, LVM попытается восстановить данные из другой копии RAID.
Для каждого диска в составе такого LV создаются дополнительные служебные тома под integrity metadata. Статистику ошибок можно смотреть так:
lvs -o+integritymismatches vgroup/lvraid1_rimage_0_imeta
Нужная колонка: IntegMismatches
Также события по DM Integrity будут попадать в системный лог, например: /var/log/syslog
#lvm #raid
🧑💻 NetworkAdmin | 900 |
| 13 | ❗️ lsof: кто держит файл, порт или точку монтирования
Иногда нужно ответить на очень простой вопрос: кто это держит? Файл удалили, а место не освободилось. Порт занят, но непонятно кем. Диск не размонтируется, потому что "device is busy". Во всех этих случаях помогает lsof - утилита, которая показывает открытые файлы. В linux почти все является файлом: обычные файлы, сокеты, сетевые соединения, устройства, точки монтирования. Поэтому lsof умеет находить очень много полезного.
▪️ Установка:
apt install lsof
#или
yum install lsof```
▪️ Кто держит конкретный файл
lsof /var/log/app.log
Так можно увидеть процесс, PID и пользователя, который открыл файл. Особенно полезно, когда файл уже удалили, но место на диске не вернулось:
lsof | grep deleted
или аккуратнее:
lsof +L1
Это покажет открытые файлы, у которых уже нет ссылок в файловой системе.
Типичный виновник - сервис, который продолжает писать в старый лог после удаления или неудачной ротации.
▪️ Кто слушает порт. Например, нужно понять, кто занял 8080:
lsof -i :8080
Для TCP:
lsof -iTCP:8080 -sTCP:LISTEN
В выводе будет видно имя процесса, PID и пользователь. Это удобно, когда сервис не стартует с ошибкой вроде: address already in use
▪️ Кто держит точку монтирования. Допустим, не получается размонтировать диск:
umount /mnt/backup
А в ответ: target is busy
Смотрим, кто держит файлы внутри:
lsof +D /mnt/backup
После этого можно понять, какой процесс мешает размонтированию: shell с текущей директорией внутри mount point, backup-скрипт, rsync, база или зависший процесс.
▪️ Кто держит сетевые соединения. Показать все сетевые соединения:
lsof -i
Только TCP:
lsof -iTCP
Только UDP:
lsof -iUDP
Это не всегда замена ss, но часто удобно, когда нужно быстро связать соединение с процессом.
▪️ Что полезно запомнить:
lsof /path/to/file
lsof -i :PORT
lsof -iTCP:PORT -sTCP:LISTEN
lsof +D /mount/path
lsof +L1
#linux #lsof
🧑💻 NetworkAdmin | 810 |
| 14 | 🦖 Reverse Path Filtering: защита или источник странных сетевых багов
Иногда сеть вроде настроена правильно, маршруты есть, интерфейсы подняты, а пакеты все равно куда-то пропадают. Особенно часто это всплывает на серверах с несколькими интерфейсами, policy routing, VPN, асимметричной маршрутизацией или в роли роутера. Одна из причин - Reverse Path Filtering (rp_filter). Это механизм в linux, который проверяет: если пакет пришел с какого-то IP, а мы захотели бы отправить ответ до этого IP через другой интерфейс - не выглядит ли это подозрительно? Если выглядит - пакет может быть отброшен.
▪️ Зачем это вообще нужно:
защита от IP spoofing;
базовая проверка правдоподобности маршрута;
уменьшение шансов принять пакет с поддельным source IP.
То есть идея хорошая: пакет пришел не с той стороны, откуда ядро ожидало бы обратный маршрут - значит, что-то не так. Но на практике именно здесь начинаются странности.
▪️ Где rp_filter часто ломает жизнь:
multihomed-серверы с несколькими uplink;
VPN и туннели;
policy based routing;
асимметричные маршруты;
NAT-сценарии;
Kubernetes / overlay-сети;
Linux в роли маршрутизатора
▪️ Типичная ситуация:
• пакет приходит через eth1;
• ядро считает, что обратный путь до source IP должен идти через eth0;
• rp_filter решает, что пакет подозрительный;
• пакет молча дропается
Снаружи это выглядит очень неприятно: ping иногда работает, иногда нет; сервис доступен только с части адресов; VPN поднимается, но трафик странно теряется; один интерфейс живой, а ответы уходят не туда; tcpdump показывает входящий пакет, но приложение его не видит.
▪️ Проверить можно так:
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.eth0.rp_filter
Обычно значения такие:
0 - выключено
1 - strict mode
2 - loose mode
▪️ Что важно понимать:
strict mode хорош для простых хостов с одной понятной маршрутизацией. Но в сложной сетевой схеме он легко становится источником магических багов. Часто более безопасный компромисс - это loose mode:
sysctl -w net.ipv4.conf.all.rp_filter=2
sysctl -w net.ipv4.conf.default.rp_filter=2
Или точечно для интерфейса:
sysctl -w net.ipv4.conf.eth1.rp_filter=2
Полностью отключают обычно только там, где точно понимают, зачем это нужно.
#linux #network
🧑💻 NetworkAdmin | 908 |
| 15 | ❓ Кто жрет канал прямо сейчас
Когда сервер или рабочая машина внезапно начинают “тупить по сети”, первый вопрос обычно очень приземленный: кто именно сейчас жрет канал? Для такой быстрой диагностики есть две простые и очень полезные утилиты: iftop и nethogs. Обе показывают сетевую активность в реальном времени, но делают это по-разному.
iftop - показывает трафик между хостами
nethogs - показывает трафик по процессам
Именно в этом их главное различие.
▪️ iftop - кто с кем говорит. iftop похож на top, только для сети. Он показывает, какие IP-адреса и соединения прямо сейчас генерируют трафик, и в каких объемах.
Установка:
apt install iftop
Запуск:
iftop -i eth0
Что удобно в iftop:
• сразу видно самые тяжелые соединения;
• можно понять, идет ли трафик наружу или внутрь;
• удобно ловить внезапные бэкапы, репликации, выгрузки и подозрительные соединения.
Типичные находки:
сервер льет бэкап в удаленное хранилище;
кто-то качает большой файл по SCP;
приложение внезапно активно общается с внешним API;
контейнер или VM начали активно ходить в сеть.
Но здесь важно помнить: iftop показывает не процессы, а именно сетевые потоки между адресами.
▪️ nethogs - какой процесс виноват. Если нужен ответ не куда идет трафик, а какой процесс его генерирует, тогда удобнее nethogs.
Установка:
apt install nethogs
Запуск:
nethogs eth0
Теперь уже видно, сколько трафика потребляет конкретный процесс:
rsync
curl
docker
python
apt
любой другой живой процесс
Это особенно полезно, когда на хосте много сервисов, и по одним только IP трудно понять, кто виноват.
▪️ Когда что использовать
iftop - если нужно быстро понять: с какими IP идет обмен, какие соединения самые тяжелые, куда вообще уходит канал
nethogs - если нужно понять: какой процесс грузит сеть, кто именно качает или отдает данные, какой сервис стал шумным
⚠️ Важно
Обе утилиты обычно требуют root-права, иначе картина может быть неполной.
И еще: если трафик очень кратковременный, его легко не поймать. В таких случаях лучше смотреть несколько минут, а не пару секунд.
#linux #network
🧑💻 NetworkAdmin | 1 258 |
| 16 | Заказал с алика видеокарту, это не обман?
#юмор
🧑💻 NetworkAdmin | 1 521 |
| 17 | 💚 Anycast простыми словами: где используется и зачем нужен
Обычно IP-адрес ассоциируется с одним конкретным сервером. Но в случае с Anycast один и тот же IP может быть объявлен сразу из нескольких точек сети. Идея простая: у разных серверов один и тот же IP-адрес, а трафик уходит туда, куда маршрут ближе с точки зрения сети. То есть клиент обращается к одному и тому же адресу, но реально попадает не обязательно на один и тот же физический сервер, а на ближайший или наиболее предпочтительный узел.
Где это удобно:
DNS-сервисы
CDN
DDoS-защита
глобальные edge-сервисы
публичные API
распределенные точки входа
Самый известный пример - публичные DNS. Когда вы отправляете запрос на 1.1.1.1 или 8.8.8.8, за этим IP обычно стоит не один сервер, а целая сеть узлов в разных регионах.
▪️Что это дает:
• меньше задержка. Пользователь попадает на ближайшую точку, а не тянется через полмира.
• лучше отказоустойчивость. Если один узел пропал, маршрутизация просто уводит трафик на другой.
• проще масштабирование. Можно добавлять новые точки присутствия, не меняя IP для клиентов.
• распределение нагрузки на уровне сети. Трафик естественным образом разъезжается по разным площадкам.
▪️ Как это выглядит по-простому:
есть 3 дата-центра - в Германии, Нидерландах и Польше. Во всех трех анонсируется один и тот же IP. Пользователь из Берлина, скорее всего, попадет в немецкий узел. Пользователь из Амстердама - в нидерландский. А если немецкий узел исчезнет из маршрутизации, трафик может уйти в ближайший оставшийся.
▪️ Почему это не магия:
Anycast сам по себе не знает, где лучше по задержке для приложения. Он опирается на маршрутизацию, обычно через BGP.
А значит ближайший - это не всегда географически ближайший, а тот, который сеть считает лучшим маршрутом.
▪️ Где часто путаются:
• думают, что Anycast - это обычный балансировщик. Не совсем. Балансировка тут происходит на уровне маршрутов, а не L7/L4-логики.
• считают, что клиент всегда попадет в один и тот же DC. Не обязательно. При изменении маршрутов путь может поменяться.
• пытаются использовать Anycast там, где нужна жесткая session affinity. Для stateful-сервисов это уже сложнее, потому что маршрут может измениться.
▪️ Где Anycast особенно хорош:
DNS;
stateless UDP-сервисы;
edge reverse proxy;
глобальные точки входа;
анти-DDoS платформы.
#network #anycast
🧑💻 NetworkAdmin | 1 391 |
| 18 | 🔎 xargs на практике
Когда в shell нужно обработать много файлов, хостов или строк, первый импульс обычно такой: написать for-цикл. Рабочий подход, но не всегда самый быстрый и удобный. Во многих таких задачах лучше использовать xargs - утилиту, которая берет поток данных из stdin и превращает его в аргументы для другой команды.
Проще говоря: нашли список объектов -> передали их в xargs -> массово обработали одной командой
▪️ Самый базовый пример:
cat hosts.txt | xargs ping -c 1
Но тут сразу важный нюанс: далеко не каждая команда умеет принимать много аргументов в таком виде. Поэтому на практике чаще используют -I или -n.
Например, пинговать хосты по одному:
cat hosts.txt | xargs -n1 ping -c 1
Здесь -n1 говорит: передавать по одному аргументу на запуск.
▪️ Полезный сценарий - массовая работа с файлами:
find /var/log -name "*.gz" | xargs rm -f
Но тут уже есть подводный камень: пробелы в именах файлов.
Безопасный вариант:
find /var/log -name "*.gz" -print0 | xargs -0 rm -f
Связка -print0 и xargs -0 - это почти обязательная привычка, если работаете с файлами.
▪️ Где xargs особенно хорош:
удаление и перемещение больших списков файлов;
массовый grep, chmod, chown;
обработка списков IP, URL, доменов;
запуск команд по данным из файла;
параллельное выполнение задач.
Например, проверить доступность списка хостов:
cat hosts.txt | xargs -n1 -P4 ping -c 1
-n1 - один хост на запуск
-P4 - до 4 процессов параллельно
Вот здесь xargs уже реально ускоряет работу. Особенно на больших списках, где последовательная обработка была бы слишком долгой.
▪️ Еще полезные примеры. Искать строку во множестве файлов:
find /etc -type f -name "*.conf" -print0 | xargs -0 grep -H "listen"
Или массово смотреть размер файлов:
find /backup -type f -print0 | xargs -0 du -h
Когда нужен шаблон с явной подстановкой, используют -I:
cat users.txt | xargs -I{} id {}
Здесь {} - место, куда подставляется значение из stdin.
▪️ Что полезно запомнить:
-n1 - по одному аргументу за запуск
-P4 - параллелить выполнение
-0 - безопасно работать с пробелами и спецсимволами
-I{} - явная подстановка значения в команду
#linux #xargs
🧑💻 NetworkAdmin | 1 114 |
| 19 | Колледж Президентской академии приглашает льготные категории граждан на бесплатную программу повышения квалификации «Специалист по безопасности в информационных системах».
По итогам обучения выдаётся удостоверение о повышении квалификации Президентской академии.
Это ваш шанс систематизировать знания и получить практические навыки, востребованные на рынке труда.
В результате обучения вы:
✔Освоите основы информационной безопасности: познакомитесь с ключевыми понятиями, классификацией угроз и нормативно‑правовой базой в сфере защиты информации, а также изучите международные стандарты и рекомендации.
✔Изучите методы и инструменты защиты данных: механизмы контроля доступа и разграничения полномочий, средства идентификации и аутентификации пользователей, способы защиты информации ограниченного доступа (без сведений, составляющих гостайну) — в т. ч. с применением криптографических средств.
✔Получите практические знания о криптографических методах защиты информации и их применении для обеспечения безопасности данных.
Обучение будет проходить с 7 по 30 сентября.
Формат: дистанционно.
👉Подать заявку можно до 17 августа включительно по ссылке https://trudvsem.ru/educational-programs/card?id=4c2df77b-b487-459a-8d24-72e711e477b2
Для помощи в оформлении заявки обращайтесь по телефону +7 905 724 3953
Будем рады видеть вас среди участников! | 957 |
| 20 | Всегда на шаг впереди 😎
#юмор
🧑💻 NetworkAdmin | 1 654 |
Available now! Telegram Research 2025 — the year's key insights 
