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

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
Беспощадный кастом

#юмор

🧑‍💻 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
⚡️ Быстрая настройка NFS для временного обмена файлами

Регулярно настраиваю NFS под разные прикладные задачи, чаще всего временные. Когда нужно быстро перекинуть большой объем данных между серверами, NFS почти всегда выигрывает по скорости у scp/ssh, SMB и HTTP. Особенно в локальной сети.

Решил оформить краткую инструкцию, чтобы можно было сохранить и использовать как готовый чеклист.

▪️ Сервер. Обычно все временные шары держу в /mnt:


mkdir /mnt/share
chown nobody:nogroup /mnt/share


Устанавливаем сервер NFS:


apt install nfs-kernel-server


Экспортируем каталог, например, только для клиента 172.16.10.25. Добавляем в /etc/exports:


/mnt/share 172.16.10.25(rw,all_squash,no_subtree_check,crossmnt)


Для всей подсети:


/mnt/share 172.16.10.0/24(rw,all_squash,no_subtree_check,crossmnt)


Для нескольких хостов будет удобнее отдельными строками:


/mnt/share 172.16.10.25(rw,all_squash,no_subtree_check,crossmnt)
/mnt/share 172.16.10.30(rw,all_squash,no_subtree_check,crossmnt)


Применяем конфигурацию:


systemctl restart nfs-server
systemctl status nfs-server


Для работы NFS должен быть доступен TCP порт 2049.

▪️ Клиент. Ставим клиентские утилиты:


apt install nfs-common


Проверяем, что сервер отдает экспорт:


showmount -e 172.16.10.10
Export list for 172.16.10.10:
/mnt/share 172.16.10.25


Монтируем ресурс:


mkdir /mnt/share
mount 172.16.10.10:/mnt/share /mnt/share


Проверяем:


df -h | grep nfs
172.16.10.10:/mnt/share 80G 5.1G 72G 7% /mnt/share


Желательно убедиться, что используется NFSv4:


mount -t nfs4


Тестируем запись:


echo "hello nfs" > /mnt/share/test.txt


При необходимости можно добавить в /etc/fstab:


172.16.10.10:/mnt/share /mnt/share nfs4 defaults 0 0


(и не забыть перевод строки в конце).

Для временных задач - это простой, быстрый и надежный вариант.

#linux #nfs

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