NetworkAdmin.ru
4.73K subscribers
240 photos
32 videos
2 files
605 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
🌀 Как работает перезагрузка linux в эпоху systemd

Раньше в linux было несколько классических способов перезагрузки системы: shutdown -r, reboot, halt. Сейчас вся эта разница по сути исчезла: в современных дистрибутивах всем управляет systemd.

Если посмотреть внимательнее, окажется, что привычные команды - это всего лишь обертки:


whereis reboot
ls -la /usr/sbin/reboot


и аналогично для shutdown. В итоге обе команды являются символьными ссылками на /bin/systemctl. То есть не важно, что именно вы набрали - reboot, shutdown -r или systemctl reboot - запрос все равно уйдет в systemd.

Иногда можно встретить рекомендации перезагружать сервер именно так:


systemctl reboot


Но на практике обычный ребут делает ровно то же самое, просто быстрее набирается.

Возникает логичный вопрос: как systemctl понимает, что от него хотят - перезагрузку или выключение, если бинарник один и тот же? Все просто: при запуске программа знает имя, под которым ее вызвали. Это стандартный механизм execve. Например, в shell имя команды доступно через $0. Внутри systemctl есть проверка, которая определяет, был ли вызов через reboot, shutdown или напрямую.

Кроме привычных команд, перезагрузку можно инициировать и через цели systemd:


systemctl start reboot.target
systemctl start ctrl-alt-del.target


По сути, эффект будет тем же самым, просто разными путями.

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


echo b > /proc/sysrq-trigger


Это эквивалент жесткого нажатия кнопки reset: без graceful shutdown, но зато работает даже в самых тяжелых ситуациях.

#systemd #reboot

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5
Беспощадный кастом

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍43🍾1
🖥 Ускоряем сетевые шары в локалке

SMB/CIFS - это один из самых популярных протоколов для файловых шар в локальных сетях. По умолчанию он далеко не всегда работает быстро. Часто жалобы на медленную работу сетевых папок связаны не с дисками или сетью, а с настройками.

Первое, на что стоит обратить внимание: версия протокола. SMB1 давно устарел и медленный, к тому же небезопасный. В современных системах стоит использовать SMB2 или SMB3. На samba это явно задается параметрами server min protocol = SMB2 и server max protocol = SMB3.

Второй момент: размеры буферов и асинхронный ввод-вывод. В samba полезно включать: aio read size и aio write size
socket options = TCP_NODELAY SO_RCVBUF=... SO_SNDBUF=...

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

Для локальной сети важно отключать лишнее. Например, SMB signing нужен для недоверенных сетей, но в домашней или офисной локалке он дает заметный оверхед. Если безопасность позволяет - его можно выключить.

Также стоит учитывать тип нагрузки. Много мелких файлов - одно поведение, большие архивы - другое. Иногда помогает включение sendfile или, наоборот, его отключение в зависимости от файловой системы.

Со стороны клиента тоже есть нюансы. В linux можно монтировать шары с опциями vers=3.1.1, cache=loose, rsize и wsize. В windows проверить, не включен ли старый SMB1 ради совместимости.

И напоследок банальное, но важное: гигабитная сеть, нормальный MTU и исправный DNS влияют на SMB не меньше, чем конфиги. Прежде чем тюнить samba, убедитесь, что сама сеть не узкое место.

Правильно настроенный SMB в локалке легко выдает скорости, близкие к дисковым, без экзотики и лишних костылей.

#smb #networking

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142
🔍 Сканирование уязвимостей через Nmap NSE

Nmap - это не только сканер портов. У него есть еще одна часть - NSE (Nmap Scripting Engine), которая позволяет выполнять сотни готовых скриптов для поиска уязвимостей, ошибок конфигурации и опасных сервисов.

Все NSE-скрипты разбиты по категориям: vuln, safe, auth, default, discovery и другие. Для быстрого старта обычно используют стандартный набор:


nmap -sC -sV target


Эта команда запускает default-скрипты и определяет версии сервисов. Уже на этом этапе можно найти слабые места: анонимный FTP, открытые админки, устаревшие демоны.

Для целенаправленного поиска уязвимостей применяется категория vuln:


nmap --script vuln target


Такой запуск проверяет сервисы на известные CVE: уязвимости в SMB, SSL, HTTP, базах данных и сетевых службах. Например, скрипты могут выявить MS17-010 (EternalBlue), слабые TLS-настройки или небезопасные HTTP-методы.

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


nmap -p 443 --script ssl-* target


Это помогает быстро оценить состояние TLS: версии протоколов, шифры, сертификаты.

Важно понимать ограничения NSE. Это не полноценный vulnerability scanner, а инструмент первичной проверки. Он не эксплуатирует уязвимости и не гарантирует 100% точность, но отлично подходит для быстрого аудита и поиска очевидных проблем.

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

#nmap #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103
⭐️ Простой бэкап конфигураций MikroTik без костылей

Если нужно регулярно сохранять конфигурации MikroTik, есть аккуратный и удобный инструмент - Pupirka. Это небольшая утилита от Кирилла Васильева, которая делает ровно то, что нужно: подключается к устройству по SSH, выполняет экспорт конфигурации и складывает результат в структурированный каталог. Без самописных скриптов и хаоса.

Работает все максимально просто. Скачиваете один бинарник под свою ОС, делаете его исполняемым и запускаете. При первом старте Pupirka сама создает рабочую структуру: каталоги для бэкапов, описаний устройств, логов, SSH-ключей и базовый JSON-конфиг.

Для добавления MikroTik достаточно положить в каталог device JSON-файл с параметрами подключения: адрес, логин и пароль (или ключ). После этого один запуск и конфигурация устройства автоматически экспортируется. Бэкап сохраняется в отдельную папку устройства, а лог операции пишется рядом. По строке Backup complete легко понять, что все прошло успешно.

Из приятного - поддержка хуков. Например, после каждого бэкапа можно автоматически отправлять конфиги в git-репозиторий. Это удобно для версионирования и аудита изменений.

Хотя Pupirka чаще всего используют именно для MikroTik, она не ограничена только ими. В конфиге можно указать команду, вывод которой нужно сохранять. Фактически, инструмент можно применять и для сбора информации с серверов или сетевых устройств по SSH.

Простой, понятный и практичный инструмент, именно то, что нужно для регулярных бэкапов сетевой инфраструктуры.

Ссылка на GitHub 😺

#mikrotik #backup

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
🔄 Копируем файлы между серверами без прямого SSH-доступа

Иногда возникает задача быстро перекинуть файлы между двумя серверами, между которыми нет прямого SSH-доступа. Аутентификация не настроена, ключей нет, но при этом вы спокойно заходите по SSH на каждый из них со своей машины.

Самые очевидные варианты обычно такие:

1️⃣ Копировать через себя

Скачать данные с первого сервера локально, а потом залить их на второй. Работает всегда, но если у вас медленный канал или большой объем данных - вариант так себе. Иногда вместо себя используют промежуточный сервер с хорошим интернетом, но это тоже костыль.

2️⃣ Настроить SSH-доступ между серверами

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

3️⃣ Более простой способ - проброс SSH-агента (ssh-agent forwarding). Никаких изменений на серверах, все делается со своей рабочей машины.

▪️ Запускаем ssh-agent. ssh-agent уже входит в состав SSH-клиента. Запускаем его и сразу подгружаем переменные окружения:


eval $(ssh-agent)


Проверяем, что агент работает:


env | grep SSH_


▪️ Добавляем ключи. Загружаем свои SSH-ключи в агент:


ssh-add


Проверить, какие ключи добавлены:


ssh-add -l


▪️ Разрешаем проброс агента. Теперь нужно явно разрешить проброс агента для нужных серверов. Делается это в ~/.ssh/config:


Host 1.2.3.4
ForwardAgent yes

Host srv-01
ForwardAgent yes


Важно: включайте ForwardAgent только для конкретных хостов, а не глобально.

▪️ Подключаемся и проверяем


ssh root@1.2.3.4


Если проброс работает, на сервере появится сокет агента:


ls /tmp | grep ssh-


▪️ Копируем файлы напрямую между серверами. Теперь магия. С первого сервера можно подключаться ко второму, используя ваш локальный ключ, даже если между серверами нет настроенной аутентификации:


rsync -av /var/www/ root@5.6.7.8:/var/www/


Файлы копируются напрямую с сервера на сервер, без скачивания к вам и без настройки SSH-доступа между ними.

▪️ Что важно помнить про безопасность

Когда вы заходите на сервер с включенным пробросом агента, пользователь root этого сервера получает доступ к вашему ssh-agent и может использовать его для подключений.

Поэтому:

не используйте agent forwarding на чужих или сомнительных серверах;
не включайте его глобально;
отключайте, когда он не нужен.

#ssh #rsync

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
🤝 Автологин, автозагрузка и unit override в systemd

▪️ Автологин в консоль (getty) - иногда нужно, чтобы система автоматически логинилась в tty (например, для тестового стенда). Делается это через override для getty:

systemctl edit getty@tty1


Добавляем:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin user --noclear %I $TERM


Перезагружаем:

systemctl restart getty@tty1


▪️ Автозагрузка сервисов. В systemd нет автозапуска в классическом смысле - есть юниты и таргеты. Включить сервис при загрузке:

systemctl enable nginx


Проверить состояние:

systemctl is-enabled nginx
systemctl status nginx


Отключить автозапуск:

systemctl disable nginx



Фактически enable создает симлинк юнита в нужный *.target.

▪️ Unit override: меняем поведение безопасно. Править файлы в /lib/systemd/system - плохая идея. Обновления их перезапишут. Вместо этого используют override-файлы. Для этого создаем override:

systemctl edit nginx


Пример: увеличим лимит открытых файлов:

[Service]
LimitNOFILE=65536


Применяем изменения:

systemctl daemon-reexec
systemctl restart nginx


Посмотреть итоговую конфигурацию:

systemctl cat nginx


Systemd покажет базовый unit + все override.

#systemd #linux

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
👁 Мониторинг сети у провайдеров и в датацентрах

Когда речь заходит о мониторинге сети на уровне провайдера или датацентра, обычных SNMP-графиков недостаточно. Нужно понимать кто, куда и сколько трафика гоняет. Для этого используют NetFlow и sFlow - технологии экспорта сетевых потоков. Статья больше ознакомительная, чем практичная. Для понимания как все устроено.

Что такое NetFlow

NetFlow - технология Cisco, которая собирает статистику по каждому сетевому потоку:
IP-адреса, порты, протокол, объём трафика, время жизни сессии.


Особенности:

высокая детализация;
хорош для биллинга, расследований, анализа атак;
поддерживается большинством маршрутизаторов (NetFlow v5/v9, IPFIX);

🙅‍♂️ Минус - нагрузка на оборудование при больших объемах трафика.

Что такое sFlow

sFlow работает по другому принципу - семплирование. Устройство отправляет не все потоки, а только выборку пакетов + счётчики интерфейсов.


Особенности:

минимальная нагрузка на свитчи;
отлично масштабируется;
идеально для высоконагруженных сетей и DC;

🙅‍♂️ Минус - нет полной картины каждого соединения, только статистическая модель.

На практике у провайдеров часто используются оба подхода.

▪️ Прием и анализ данных

Flow-данные отправляются на коллекторы:

nfdump / nfsen;
pmacct;
ElastiFlow (Elastic + NetFlow/sFlow);
Zabbix / Grafana (через плагины).

Типовые задачи:

поиск топ-N потребителей трафика;
обнаружение DDoS;
анализ межсегментного трафика;
контроль договорных лимитов.

#networking #netflow

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Ленивый монтаж заказывали?

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14
💚 Шпаргалка по Nmap

Сканеров сети хватает, но на практике почти всегда в итоге используется Nmap. Проблема одна - запомнить все ключи и режимы нереально.

▪️ Базовое сканирование (порты 1–1024). Быстрое сканирование без лишних деталей:


nmap 192.168.1.1
nmap 192.168.1.1 192.168.2.1
nmap 192.168.1.1-254
nmap 192.168.1.0/24


▪️ Сканирование всех портов


nmap 192.168.1.1 -p-


Ключ -p задает диапазон портов:

-p 22, -p 21-100, -p http,https.

Полный диапазон заметно увеличивает время проверки.

▪️ Хост не отвечает на ping. По умолчанию Nmap игнорирует такие хосты. Чтобы сканировать принудительно:


nmap 192.168.1.1 -Pn


▪️ Основные техники сканирования


nmap 192.168.1.1 -sS # TCP SYN (по умолчанию)
nmap 192.168.1.1 -sT # TCP connect
nmap 192.168.1.1 -sU # UDP


Полный TCP + UDP (очень долго):


nmap 192.168.1.1 -sS -sU -p-


▪️ Поиск живых хостов без портов


nmap 192.168.1.0/24 -sn


Часто использую для быстрого списка хостов в сети.

Просто вывести список IP:


nmap 192.168.1.1-15 -sL


▪️ ARP-сканирование в локалке


nmap 192.168.1.0/24 -PR


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

▪️ Определение сервисов и версий


nmap 192.168.1.1 -sV


Комплексная проверка (ОС, сервисы, скрипты, traceroute):


nmap 192.168.1.1 -A


Полезный прием:

1) сначала найти открытые порты
2) потом запускать -A только по ним


#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d/ -f1 | tr '\n' ',' | sed 's/,$//')
nmap -p$ports -A $1


Запуск:


./nmap.sh 192.168.1.1


▪️ Скорость и агрессивность

-T0 paranoid
-T1 sneaky
-T2 polite
-T3 normal (по умолчанию)
-T4 aggressive
-T5 insane


В локалке обычно используют -T4. Чем ниже режим - тем медленнее и менее заметен скан.

#nmap #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161
Cloud-Init в Proxmox: автоматическое создание виртуальных машин

Если вы часто вручную создаете виртуальные машины в Proxmox, эту рутину легко автоматизировать с помощью Cloud-Init, который поддерживается в Proxmox из коробки.

Cloud-Init позволяет при создании ВМ автоматически задать:

▪️ пользователей, пароли и SSH-ключи
▪️ hostname
▪️ сетевые настройки и DNS
▪️ первичное обновление пакетов

Без Cloud-Init все это пришлось бы настраивать вручную в каждой новой виртуалке.

▪️ Как это работает

1️⃣ Подготавливаем базовую ВМ. Устанавливаем ОС и нужные пакеты, обязательно ставим cloud-init:


apt install cloud-init


Можно использовать готовые cloud-образы:

Debian - cloud.debian.org
Ubuntu - cloud-images.ubuntu.com
Astra Linux - dl.astralinux.ru

Proxmox отлично поддерживает образы, подготовленные под OpenStack.

2️⃣ Делаем шаблон. Готовую ВМ переводим в шаблон через Convert to template.

3️⃣ Создаем новую ВМ из шаблона. Добавляем к ней диск CloudInit Drive.

4️⃣ Настраиваем Cloud-Init. В параметрах ВМ появляется раздел Cloud-Init, где можно индивидуально указать пользователя, ключи, сеть и DNS. При первом запуске настройки применяются автоматически.

Инструкция в Wiki Proxmox:

🔗 Cloud-Init Support
🔗 Cloud-Init FAQ

#proxmox #cloudinit

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
⭐️ Windows Storage Spaces: зеркалирование и RAID без стороннего ПО

В Windows есть встроенный механизм программного хранения данных - Storage Spaces. По сути, это аналог Linux LVM + software RAID, который позволяет объединять диски в пул и создавать на их основе отказоустойчивые тома без стороннего ПО и RAID-контроллеров.

▪️ Как это работает. Архитектура состоит из трех уровней:

1. Physical disks - физические диски (HDD/SSD, SATA/NVMe, USB тоже поддерживаются).
2. Storage Pool - пул хранения, в который объединяются диски.
3. Virtual Disk (Space) - логический диск с заданным уровнем отказоустойчивости.

На уровне Virtual Disk выбирается тип защиты данных.

▪️ Основные режимы

Simple - без отказоустойчивости (аналог RAID0). Максимальная скорость и объем.
Two-way mirror - зеркалирование данных на два диска (аналог RAID1).
Three-way mirror - зеркалирование на три диска (для критичных данных).
Parity - распределенная четность (аналог RAID5/6, зависит от конфигурации).

▪️ Плюсы Storage Spaces

встроено в Windows (Server и Pro-версии);
не требует перезагрузки при добавлении дисков;
поддерживает hot-swap;
можно расширять пул на ходу;
работает поверх обычных дисков без контроллера.

▪️ Практические моменты

- Зеркала отлично подходят для VM, файловых серверов и рабочих станций.
- Parity экономит место, но хуже по записи, особенно на мелких I/O.
- Для системных дисков чаще используют зеркало, а не parity.
- Управлять можно через GUI или PowerShell (Get-StoragePool, New-VirtualDisk).

▪️ Когда это хорошее решение

небольшой сервер или NAS на Windows;
тестовые и офисные инфраструктуры;
когда нет аппаратного RAID, но нужна отказоустойчивость.

#storage #raid

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
📱 Запись терминала

asciinema записывает не видео, а последовательность команд и вывода терминала с таймингами. В результате получается легкий файл, который можно:

воспроизводить в браузере;
встраивать в документацию;
использовать в обучающих материалах;
пересматривать прямо в терминале.

▪️ Установка. В большинстве дистрибутивов asciinema есть в репозиториях:


apt install asciinema


▪️ Запись сессии. Начать запись можно одной командой:


asciinema rec


▪️ Завершение - Ctrl+D или exit. По умолчанию создается файл формата .cast, в котором хранится вся запись.

▪️ Воспроизведение. Записанную сессию можно воспроизвести локально:


asciinema play demo.cast


Либо загрузить на сайт asciinema:


asciinema upload demo.cast


После загрузки вы получите ссылку и HTML-код для встраивания записи в сайт или wiki.

▪️ Почему это удобно

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

#linux #terminal

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
😭 Когда на Linux внезапно закончилось место

В ext4 есть полезная особенность: при создании файловой системы резервируется 5% пространства. Обычно это место доступно только root и нужно, чтобы система не умерла, когда диск заполнен под завязку. В критических ситуациях этот резерв реально спасает, без него многие сервисы просто перестают работать (привет ZFS и lvm-thin).

1️⃣ При необходимости размер резерва можно уменьшить и быстро освободить место:


tune2fs -m 3 /dev/mapper/root
# или
tune2fs -m 3 /dev/sda3


Вместо 5% оставляем 3%, а разница становится доступной системе. На больших разделах это могут быть десятки гигабайт. Теоретически можно поставить и 0%:


tune2fs -m 0 /dev/sda3



Но так делать не советую. Минимум 1% лучше оставить, а оптимальный компромисс те же 3%.

2️⃣ полезный прием - swap в виде обычного файла, а не отдельного раздела. Потому что файл можно быстро увеличить или удалить, если внезапно закончилось место.

Создаем swap-файл на 1 ГБ:


dd if=/dev/zero of=/swap bs=1024 count=1000000
mkswap /swap
chmod 0600 /swap
swapon /swap


Отключить и удалить его так же просто:


swapoff -a
rm /swap


3️⃣ вариант страховки - заранее созданный пустой файл большого размера:


fallocate -l 10G /big_file


В экстренной ситуации его можно удалить и мгновенно получить несколько гигабайт свободного места, чтобы система ожила.

#linux #ext4

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Please open Telegram to view this post
VIEW IN TELEGRAM
😁151🤔1🤡1
🤩 tcpdump: фильтры, которые реально нужны

tcpdump знают все. Но часто его используют как tcpdump -i any и тонут в потоке пакетов. Ниже будут написаны фильтры, которые действительно спасают.

▪️ Фильтрация по хосту и сети. Трафик к конкретному IP:


tcpdump -i eth0 host 10.10.10.5


Только исходящий:


tcpdump -i eth0 src 10.10.10.5


Подсеть:


tcpdump net 192.168.1.0/24


▪️ Порты и сервисы. HTTP:


tcpdump tcp port 80


Несколько портов:


tcpdump 'tcp port 80 or tcp port 443'


Исключить SSH:


tcpdump 'not port 22'


▪️ Поиск конкретных TCP-флагов. Только SYN (поиск сканирования):


tcpdump 'tcp[tcpflags] & tcp-syn != 0'


RST-пакеты (поиск проблем с соединением):


tcpdump 'tcp[tcpflags] & tcp-rst != 0'


▪️ Поиск по содержимому. Найти строку в HTTP:


tcpdump -A -s 0 'tcp port 80' | grep "POST"


Фильтр по размеру пакета:


tcpdump 'greater 1000'


▪️ Анализ проблем с соединением. Только неустановленные соединения:


tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'


Повторные передачи:


tcpdump 'tcp[tcpflags] & tcp-ack != 0'


▪️ Захват в файл для анализа. Лучше всегда писать в pcap:


tcpdump -i eth0 -s 0 -w dump.pcap


Анализировать потом можно в Wireshark, так удобнее разбирать сложные кейсы.

#linux #tcpdump

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
💚 Как быстро прибить процесс, который слушает порт

Иногда нужно срочно освободить порт: сервис завис, не перезапускается, новый экземпляр не стартует, а разбираться почему будем потом. Задача простая: найти процесс по порту и завершить его.

▪️ Классический способ. Смотрим, кто слушает порт, через ss, находим PID и убиваем процесс:


ss -tulnp | grep 8080
tcp LISTEN 0 5 0.0.0.0:8080 0.0.0.0:* users:(("python3",pid=5152,fd=3))

kill 5152


Рабочий вариант, но требует двух шагов.

▪️ Быстрее через lsof. Гораздо удобнее использовать lsof, который отлично работает не только с файлами, но и с сетевыми соединениями:


lsof -i:8080


Пример вывода:


COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 5156 root 3u IPv4 41738 0t0 TCP *:http-alt (LISTEN)


И сразу завершаем процесс:


kill 5156


А если хочется вообще в одно действие:


lsof -i:8080 -t | xargs kill


▪️ Почему lsof? Со временем начинаешь использовать lsof всё чаще:


lsof -i
lsof -i TCP:25
lsof -i TCP@1.2.3.4


Очень наглядно показывает, кто, куда и по какому протоколу подключен.

▪️ Совсем ленивый вариант - killport. Есть утилита killport, которая делает все то же самое одной командой:


killport 8080


В стандартных репозиториях ее обычно нет, придется скачать готовый бинарник.
На Linux без нее легко обойтись, а вот на Windows такая утилита особенно полезна.

Можно сначала проверить, что именно будет завершено:


killport 445 --dry-run
Would kill process 'System' listening on port 445


Сначала смотрим, потом убиваем - все как надо.

#linux #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🟣 pv - контроль скорости и прогресса

pv (Pipe Viewer) - небольшая, но крайне полезная утилита для работы с pipe в Linux/Unix. Она позволяет видеть скорость передачи данных, объем, время работы, а при необходимости ограничивать пропускную способность. Есть почти во всех дистрибутивах:


apt install pv
dnf install pv


▪️ Прогресс-бар там, где его обычно нет. Например, при копировании файла:


pv testfile > testfile_copy


Вы сразу видите скорость, объем и процент выполнения. Аналогично работает при сжатии:


pv testfile | gzip > testfile.gz


▪️ Ограничение скорости через -L. Это спасает SSD, хранилища и гипервизоры от перегрузки:


pv -L 50m testfile > testfile_copy


Тем же способом удобно душить дампы БД:


mysqldump db01 | pv -L 20m > db01.sql


Для каталогов можно передать размер вручную и получить корректный ETA:


tar -czf - /usr | pv -s $(du -sb /usr | grep -o '[0-9]*') > usr.tgz


▪️ Мониторинг файловых дескрипторов процесса:


pv -d <PID>


Показывает, какие файлы реально читаются/пишутся и с какой скоростью.

▪️ Использование через ssh - для лимита канала или замера пропускной способности:


pv /dev/zero | ssh user@host 'cat > /dev/null'


#linux #pv

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134
Админ отлично знает как устроена эта сеть

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22🔥4
🔒 trusted и encrypted keys: защита секретов с помощью TPM

В linux есть малоизвестный, но крутой механизм хранения секретов прямо на уровне ядра - trusted и encrypted keys. Это специальные типы ключей из подсистемы linux keyrings, которые позволяют защищать данные без хранения их в открытом виде на диске.

▪️ Encrypted keys. Используются для хранения секретов (паролей, ключей, токенов), которые шифруются мастер-ключом ядра. Сам ключ может храниться на диске, но без загруженной системы он бесполезен.

Пример создания:


keyctl add encrypted dbkey "new user:passphrase 32" @s


Ключ автоматически расшифровывается ядром при использовании, но в файловой системе его содержимое не светится.

▪️ Trusted keys. Более высокий уровень защиты. Такие ключи генерируются и хранятся внутри TPM (Trusted Platform Module) и никогда не покидают его в открытом виде. Ядро получает только дескриптор, а все криптооперации выполняет TPM.

Пример:


keyctl add trusted tpmkey "new 32" @s


Даже root не сможет извлечь значение ключа, только использовать его.

▪️ Где это применяется

защита LUKS (через systemd-cryptenroll);
хранение ключей для dm-crypt;
secrets для сервисов без plaintext-файлов;
привязка данных к конкретному железу.

#linux #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
GRE и IPIP: простые туннели без VPN

Не всегда нужен полноценный VPN с TLS, сертификатами и клиентами. Иногда задача проще: соединить две сети, протянуть маршрут до подсети или завернуть трафик через удалённый узел. В таких случаях отлично подходят GRE и IPIP - легкие L3-туннели, встроенные прямо в ядро Linux.

▪️ IPIP - самый простой вариант

IPIP (IP-in-IP) - это инкапсуляция IP-пакета внутрь другого IP-пакета.
Работает только с IPv4 - IPv4.

Минимальный пример:

Сервер A (1.1.1.1):


ip tunnel add tun0 mode ipip local 1.1.1.1 remote 2.2.2.2
ip addr add 10.10.10.1/30 dev tun0
ip link set tun0 up


Сервер B (2.2.2.2):


ip tunnel add tun0 mode ipip local 2.2.2.2 remote 1.1.1.1
ip addr add 10.10.10.2/30 dev tun0
ip link set tun0 up


Добавляем маршруты - и сети начинают видеть друг друга.

🤩 Плюсы:

минимальный overhead;
простота;
работает из коробки.

🤩 Минусы:

только IPv4;
нет multicast;
нет шифрования;
GRE - гибче и мощнее.


▪️ GRE (Generic Routing Encapsulation) инкапсулирует практически любой L3-протокол. Поддерживает: IPv4 и IPv6, multicast и динамическую маршрутизацию (OSPF, BGP поверх туннеля)

Пример:


ip tunnel add gre1 mode gre local 1.1.1.1 remote 2.2.2.2 ttl 255
ip addr add 10.20.20.1/30 dev gre1
ip link set gre1 up


На второй стороне - зеркальная конфигурация.

🤩 GRE удобен, если:

нужно поднять OSPF между площадками;
протянуть несколько подсетей;
использовать FRR/Quagga;
строить overlay-сеть.


⚠️ Важный момент: это не VPN

Ни IPIP, ни GRE не шифруют трафик.
Это просто инкапсуляция.

Если нужен encryption: поверх GRE можно поднять IPsec или использовать WireGuard вместо этого

🤩 Когда это удобно

Связать два датацентра;
Протянуть подсеть в облако;
Обойти ограничения провайдера;
Сделать статическую связку без сложной PKI.

Если задача маршрутизация, а не безопасность, то GRE/IPIP часто проще любого VPN.

#linux #networking

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132