NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.75K subscribers
226 photos
25 videos
2 files
499 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
🔒 Использование VLAN в домашних и офисных сетях

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

VLAN (Virtual LAN) - это способ логического разделения одной физической сети на несколько изолированных друг от друга сегментов. Устройства в разных VLAN не видят друг друга, пока не настроен маршрутизатор.


▪️ Сценарии для дома:

📍 Разделение умного дома и основной сети — изоляция IoT-устройств (камеры, лампочки, чайники) от домашней Wi-Fi-сети с личными данными.
📍 Детская VLAN с ограничениями - создаем отдельный сегмент с фильтрацией сайтов и доступом по расписанию.
📍 Гостевая Wi-Fi - изолируем гостей от основной сети.

▪️ Сценарии для офиса:

📍 VLAN для бухгалтерии - выделенный сегмент с доступом только к 1С и серверам документов.
📍 VLAN для VoIP - стабильная телефония без помех от общего трафика.
📍 VLAN для видеонаблюдения - чтобы камеры не грузили общий канал.
📍 Разделение Wi-Fi по ролям (сотрудники, гости, администрация).

▪️ Как настраивать?

1️⃣ На свитче (управляемом): назначаем порты access (одна VLAN) или trunk (несколько VLAN).

Пример на Cisco:


interface FastEthernet0/1
switchport mode access
switchport access vlan 10


2️⃣ На роутере: интерфейсы или саб-интерфейсы на разные VLAN.

Настройка маршрутизации между VLAN при необходимости.

3️⃣ На клиенте (Linux):


ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.168.10.2/24 dev eth0.10
ip link set up eth0.10


Даже в домашних условиях VLAN дает возможность для наведения порядка, контроля и повышения безопасности в сети.

#vlan #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥4🤔21🗿1
📍 Как не перезапустить не тот сервер: утилита molly-guard

Если вы когда-нибудь случайно выполнили reboot или shutdown не на том сервере - вы знаете, насколько это больно. Особенно, когда в консоли много сессий, и все на одинаковых хостах типа prod01, prod02, db01... Чтобы подстраховаться от таких ошибок - есть простейшее, но гениальное решение: molly-guard. После установки утилита подменяет стандартные команды reboot, shutdown, poweroff. При их запуске появляется запрос на подтверждение имени хоста. Ошиблись терминалом - команда не выполнится.

▪️ Установка:


# apt install molly-guard


▪️ Пример:


# reboot
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot:
>


Вводим имя хоста вручную. Только после этого произойдёт перезагрузка.

🌟 Небольшой совет: сразу после установки можно прописать ее в список стандартного ПО для всех серверов. Минимум настроек - максимум пользы.

#linux #mollyguard

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🏠 Повышение производительности Windows с помощью Sysinternals Tools

Когда windows начинает тормозить, а «диспетчер задач» мало что говорит - на помощь приходят sysinternals tools. Это набор от microsoft, разработанный ещё Марком Руссиновичем, и он до сих пор незаменим для администраторов.

🔗 Скачать все разом

Ключевые инструменты, которые реально помогают увидеть и устранить узкие места в системе:

▪️ Process Explorer. Улучшенный «Диспетчер задач». Показывает дерево процессов, какие DLL они используют, как именно загружают систему. Можно отследить, кто блокирует файл, кто грузит ЦП, кто жрет RAM.

📍 Альтернатива taskmgr
📍 Ищем паразитные процессы и утечки памяти
📍 Убиваем вирусы, которые не видит антивирус

▪️ Process Monitor (Procmon). Показывает все, что происходит: файловые операции, работа с реестром, сеть. Идеально, когда приложение «виснет», но не пишет ошибок.

📍 Отладка медленных запусков программ
📍 Отслеживание, куда приложение пытается записать
📍 Найти, кто трогает подозрительный файл

▪️ RAMMap. Показывает, куда на самом деле уходит ОЗУ. Иногда в диспетчере — пусто, а система тормозит. RAMMap покажет все по сегментам: кэш, драйверы, standby, modified и т.д.

▪️ Autoruns. Разбираемся с автозагрузкой: служба, планировщик, драйверы, контекстное меню, расширения проводника. Можно безопасно отключить мусор без сторонних твикеров.

📍 Удалить нежелательные утилиты из автозагрузки
📍 Быстро выявить вирус или майнер

▪️ TCPView. Если тормозит сеть - можно посмотреть, какие процессы установили соединения, какие порты открыты, куда идет трафик.

▪️ Disk Usage (du.exe). Утилита в стиле unix du - покажет, какие каталоги занимают больше всего места. Особенно полезно при очистке диска.


du -q -l 1 C:\Users\admin


Все утилиты можно использовать без установки, просто скачать и запускать по мере надобности. А некоторые - использовать прямо из PowerShell, если положить их в %PATH%.

#windows #sysinternals

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎21
🔔 Уведомления из консоли прямо на смартфон и десктоп

Иногда хочется, чтобы о важных событиях (бэкапы, алерты мониторинга, запуск задач) приходило пуш-уведомление прямо на смартфон. Без танцев с ботами и сторонними облаками. Есть отличный инструмент - ntfy.sh.

🌟 Как это работает

Заходим в веб-приложение: https://ntfy.sh/app
Разрешаем уведомления, подписываемся на тему и получаем URL вроде: https://ntfy.sh/Stkclnoid6pLCpqU

Теперь отправим уведомление:


curl -d "Test Message" https://ntfy.sh/Stkclnoid6pLCpqU


Уведомление мгновенно прилетит в веб-интерфейс или в мобильное приложение (Android/iOS).

▪️ Интеграция с системой мониторинга (например, Zabbix). Zabbix умеет отправлять Webhook-запросы. Достаточно в настройках создать новый метод оповещения и использовать такой скрипт:


var params = JSON.parse(value),
msg = params.Message,
url = params.URL,
req = new CurlHttpRequest();

req.AddHeader('Content-Type: text/plain');
req.Post(url, msg);


Указываем в URL свой ntfy-адрес, а в сообщении - макрос {ALERT.MESSAGE}.

▪️ Пример: уведомления о результате бэкапа


rsync -a /mnt/data user@10.10.10.10:/backups/srv01 \
&& curl -H prio:low -d "Backup OK" https://ntfy.sh/Stkclnoid \
|| curl -H prio:high -H tags:warning -d "Backup FAILED" https://ntfy.sh/Stkclnoid


Ntfy - полностью open-source. Вы можете установить сервер у себя (есть готовые пакеты и образы в Docker) и использовать его как закрытую систему уведомлений.

Небольшая пачка плюсов:

Поддержка push-уведомлений на мобильные и десктопы;
Безопасность: можно хостить у себя;
Простая интеграция через curl;
Поддержка приоритетов, тэгов, вложений, подписок;
Бесплатно.


#monitoring #bash

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Однажды встает выбор, решающий судьбу..

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18👍16
⚙️ Настройка DHCP-сервера и резервации IP-адресов

Когда устройств в сети становится больше десятка, раздача IP вручную перестает быть удобной. Решение - поднять свой DHCP-сервер, который будет автоматически раздавать адреса, DNS, шлюз и другие параметры клиентам. Но важно не просто «раздавать все подряд», а уметь закрепить конкретные IP-адреса за нужными устройствами (например, серверами, принтерами, VoIP). Это делается через резервации (DHCP reservations).

🐧 Настройка DHCP-сервера на Linux (например, ISC-DHCP)

1️⃣ Устанавливаем сервер:


sudo apt install isc-dhcp-server


2️⃣ Пример настройки /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;
option domain-name-servers 8.8.8.8;
option domain-name "home.lan";
}

# Резервация IP по MAC-адресу
host printer01 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.10;
}


Теперь каждый раз принтер с указанным MAC-адресом будет получать именно 192.168.1.10.

🏠 На Windows Server (DHCP Role)

Откройте оснастку DHCP → Перейдите к своему пулу IP-адресов → ПКМ → New Reservation

Укажите имя, IP, MAC-адрес и тип клиента

🌟 Зачем нужны резервации:

Упрощают администрирование (IP-адреса не меняются)
Удобны для мониторинга и firewall-правил
Избавляют от конфликтов IP
Полезны при интеграции с DNS (обратная зона)


#network #DHCP

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎3
📈 Как сымитировать нагрузку в linux без сторонних утилит

Иногда при настройке мониторинга на малонагруженных серверах нужно протестировать графики и дашборды, добавив искусственную нагрузку. Устанавливать отдельные утилиты вроде stress или stress-ng не всегда хочется. К счастью, это можно сделать встроенными средствами - через dd, sha1sum, yes, /dev/zero, /dev/urandom и другие.

▪️ Нагрузка на диск и CPU одновременно. Сжимаем случайные данные и пишем во временный файл:


while true; do
dd if=/dev/urandom count=30M bs=1 | bzip2 -9 > /tmp/tempfile
rm -f /tmp/tempfile
done


/dev/urandom → нагрузка на диск
bzip2 -9 → нагрузка на CPU

count=30M - объем данных
-9 - максимальная степень сжатия


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

▪️ Только диск: оценка скорости записи. Быстрое тестирование производительности диска:


sync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync


Вывод покажет, с какой скоростью пишутся 1 ГБ данных.

▪️ Только CPU: простейшие варианты.

Нагрузка на одно ядро:


dd if=/dev/zero of=/dev/null


Параллельная нагрузка на несколько ядер:


cpuload() {
dd if=/dev/zero of=/dev/null &
dd if=/dev/zero of=/dev/null &
}
cpuload; read; pkill dd


Либо:


sha1sum /dev/zero


Для нескольких ядер:


seq 4 | xargs -P0 -n1 timeout 10 sha1sum /dev/zero


▪️ Простая нагрузка в пространстве ядра


seq 4 | xargs -P0 -n1 timeout 10 yes > /dev/null


Запускается yes, который генерирует бесконечный вывод. Отлично грузит CPU в режиме ядра.

▪️ Загрузка памяти. Скрипт на Python, резервирующий 1 ГБ RAM:


python3 -c 'a="a"*1024**3; input()'


Можно менять объем, изменяя 1024**3.

#linux #monitoring

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Как работает LACP и зачем использовать агрегирование каналов

Когда одного сетевого интерфейса мало - приходит время объединять их в «команду». Это называется агрегация каналов, и один из самых популярных способов реализовать ее - протокол LACP (Link Aggregation Control Protocol).

LACP - часть стандарта IEEE 802.3ad. Он позволяет объединить несколько физических интерфейсов в один логический (LAG - Link Aggregation Group), который операционная система и приложения видят как один.

🌟 Зачем это нужно?

📍 Повышение пропускной способности;
📍 Повышение отказоустойчивости (если один порт отваливается - остальные продолжают работать);
📍 Балансировка нагрузки между портами.


🌟 Как это работает

📍 LACP автоматически обнаруживает, какие интерфейсы можно объединить
📍 Обе стороны (свитч и хост) договариваются, какие порты войдут в LAG
📍 Если кабель выпал или порт упал - он просто исключается из группы, ничего не рушится


▪️ Настройка в Linux. Пример для двух интерфейсов ens33 и ens34:

1️⃣ Устанавливаем ifenslave (если нужно):


sudo apt install ifenslave


2️⃣ Настраиваем bonding-мод LACP (mode 4): В /etc/network/interfaces или аналогичном конфиге:


auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bond-slaves ens33 ens34
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4


3️⃣ Важно! На свитче тоже нужно включить LACP на соответствующих портах (обычно называются channel-group или LAG в интерфейсе).

⭐️ Несколько нюансов:

📍 LACP работает только при поддержке с обеих сторон (сервер + свитч)
📍 LAG не удваивает скорость для одного TCP-соединения, но позволяет нескольким соединениям распределяться по разным каналам
📍 Лучше всего работает с хешированием по Layer3+4 (IP + порт)


#network #LACP

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
🛡 Как корректно отслеживать и логировать выполнение Ansible-плейбуков

Если вы регулярно работаете с Ansible - важно не только писать рабочие плейбуки, но и контролировать, когда, кем и как они были запущены. Особенно, если в вашей инфраструктуре Ansible используется как часть CI/CD или централизованного управления.

1️⃣ Включаем логирование в конфиге Ansible. В файле /etc/ansible/ansible.cfg (или в локальной копии ansible.cfg) пропишите:


[defaults]
log_path = /var/log/ansible.log


Ansible начнет писать все свои действия в указанный файл. Убедитесь, что у пользователя, запускающего Ansible, есть права на запись.

2️⃣ Используйте теги и переменные для понятности. Добавляйте теги к задачам:


- name: Установка nginx
apt:
name: nginx
state: present
tags:
- web
- nginx


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

3️⃣ Логируйте переменные, хосты, результаты. Для отладки - полезно писать значения переменных в лог:


- name: Показываем значение переменной
debug:
var: some_variable


Также можно логировать hostname, пользователя и дату запуска, добавляя кастомную задачу:


- name: Логируем запуск
shell: echo "{{ ansible_date_time.iso8601 }}: {{ inventory_hostname }} - {{ ansible_user }}" >> /var/log/ansible_run.log


4️⃣ Используйте Ansible Callback Plugins. Для более глубокого логирования можно подключить callback-плагины.

Например, json или yaml:


[defaults]
stdout_callback = yaml


А если хотите логировать в файл в формате JSON, можно использовать:


[defaults]
callback_whitelist = json
stdout_callback = json
log_path = /var/log/ansible-json.log


5️⃣ Храните вывод выполнения с ansible-playbook. При запуске:


ansible-playbook site.yml | tee -a /var/log/ansible-run-$(date +%F-%T).log


Так у вас будет отдельный лог под каждое выполнение.

6️⃣ Интеграция с CI/CD и мониторингом. Если Ansible запускается через GitLab, Jenkins, Drone и прочее - обязательно сохраняйте артефакты выполнения и возвращайте статус завершения. Также можно отправлять результаты выполнения в телегу через webhook после ansible-playbook.

#ansible #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤢 HDD или SSD? Как быстро определить тип диска в linux

Если вы не уверены, установлен ли в вашем сервере SSD или классический жесткий диск, вот простой способ это проверить без сторонних утилит:


cat /sys/block/sda/queue/rotational
1

cat /sys/block/sde/queue/rotational
0


Значение 1 означает HDD (с вращающимся шпинделем), 0 - SSD (без вращения).

🌟 Как это работает?

Это файловый интерфейс к параметрам устройств в Linux. Поле rotational говорит ядру, как обращаться с устройством:

HDD - запросы стараются упорядочивать, чтобы сократить перемещения головки.
SSD - доступ равномерный, очередь не критична.

Поэтому для SSD оптимизация очереди часто не нужна - это влияет на планировщик ввода-вывода.

А что в виртуалках?

Виртуальные машины чаще всего по умолчанию видят виртуальные диски как HDD, даже если физический диск - SSD. Проверка rotational внутри VM может вернуть 1.

Пример: Proxmox. Чтобы "объяснить" виртуалке, что она на SSD:

📍 В настройках диска активируйте опцию SSD Emulation.
📍 После этого значение rotational станет 0.

Это не критично, но желательно - для корректной работы планировщика в гостевой ОС.

Trim в VM: работает или нет? Появляется логичный вопрос: если включить SSD-эмуляцию, будет ли работать TRIM в виртуалке?

Нет, сам по себе флаг SSD не включает поддержку TRIM.

Чтобы TRIM работал в гостевой ОС:

📍 Виртуальный диск должен поддерживать discard.
📍 Должна быть включена поддержка в гипервизоре (например, в proxmox - флаг Discard).
📍 Гостевая ОС должна использовать файловую систему, поддерживающую TRIM (ext4, btrfs и т.д.) и выполнять его (например, через fstrim или discard в /etc/fstab).

#linux #storage

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
This media is not supported in your browser
VIEW IN TELEGRAM
Неожиданно стал верующим человеком

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁292
🐶 Фейковый root в linux: зачем он нужен и когда пригодится

Наткнулся на утилиту с говорящим названием - fakeroot. Оказывается, она довольно старая и есть в стандартных репозиториях большинства дистрибутивов. Программа запускает окружение, в котором приложения думают, что работают с root-доступом. На самом деле вы остаетесь обычным пользователем, а fakeroot просто перехватывает системные вызовы (через LD_PRELOAD) и подменяет информацию.

▪️ Установка:


sudo apt install fakeroot


Запускаем:


fakeroot


В консоли появляется как будто бы root@host, и все поведение напоминает работу с sudo su.

▪️ Пример


touch test.txt
ls -la test.txt


Внутри fakeroot получите:


-rw-r--r-- 1 root root 0 ...


Выйдя из него:


-rw-r--r-- 1 username username 0 ...


То есть реально файл принадлежит обычному пользователю, но fakeroot создаёт иллюзию root-доступа.

Зачем это вообще нужно?

Основное назначение - создание архивов и пакетов, содержащих файлы от имени root, без необходимости работать под настоящим root.

Например, вы собираете .deb-пакет с системными файлами или конфигами, которые в реальной установке должны принадлежать root. С помощью fakeroot вы можете задать нужные владельцы/права без прав суперпользователя.

🌟 Также будет полезно, если:

📍 Вы хотите пропустить ошибки доступа к файлам при архивации/копировании;
📍 Программа ругается на отсутствие root-доступа, но для вашей задачи это некритично;
📍 Вы работаете на CI/CD или в изолированном окружении без root-доступа

#fakeroot #linux

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
Не до всех доходит

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁33👍8🗿5💊2🍾1
🚫 Блокировка стран по IP

Если нужно ограничить доступ к сервису из определенных стран (например, через iptables или nginx), потребуется актуальный список IP-сетей по географии.

Готовые списки можно взять отсюда. Например, список сетей России здесь
Каждая строка - отдельная подсеть, удобно парсить скриптами.

🛠 Пример скрипта: создаем IP whitelist через ipset


#!/bin/bash

# Удаляем старый список (если был)
ipset destroy whitelist 2>/dev/null

# Создаем новый
ipset create whitelist hash:net

# Скачиваем нужные страны (пример: некоторые страны СНГ)
wget -O netwhite http://www.ipdeny.com/ipblocks/data/countries/{ru,kz,by,uz,kg,am,az,ge,tj}.zone

# Добавляем подсети в ipset
for ipnet in $(cat netwhite); do
ipset add whitelist $ipnet
done

# Проверка
ipset save whitelist > whitelist-export.txt
echo "IP-сети загружены в ipset"


Теперь подключаем список к iptables:


iptables -A INPUT -m set --match-set whitelist src -p tcp --dport 80 -j ACCEPT


⚠️ Важно: если сетей больше ~2000, не загружайте их напрямую в iptables - используйте ipset, иначе правила займут много памяти и ресурсов.

▪️ Альтернатива - готовые конфиги под разные сервисы

Сервис: https://www.ip2location.com/free/visitor-blocker

Можно сразу получить правила под apache, nginx, iptables, mikrotik и другие.

#iptables #ipset

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
📄 Разделение логов по уровням и сервисам с systemd-journald

Если вы работаете на современном дистрибутиве linux, то почти наверняка используете systemd, а значит - и journald для сбора логов. Это система логирования, которая умеет куда больше, чем просто показывать логи командой journalctl. Сегодня - о том, как удобно фильтровать и разделять логи по уровню важности (info, warning, error и т.д.) и сервисам, чтобы быстро находить нужную информацию.

▪️ Фильтрация логов по юниту. Чтобы посмотреть логи конкретного сервиса:


journalctl -u nginx.service


Добавьте -b для вывода только с текущей загрузки:


journalctl -u ssh.service -b


▪️ Логи по уровню важности. Вы можете указать минимальный уровень важности:


journalctl -p err # Только ошибки и критичнее


Список уровней (от менее к более важным):

0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug


Пример: показать все warning и выше от sshd:


journalctl -u ssh.service -p warning


▪️ Ограничение по времени. Чтобы не утонуть в огромных логах:


journalctl --since "1 hour ago"
journalctl --since "2025-09-18" --until "2025-09-19 03:00"


▪️ Разделение логов по каталогам. По умолчанию journald пишет в /run/log/journal (в RAM), если /var/log/journal отсутствует. Чтобы сохранять логи между перезагрузками:


mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald


▪️ Настройка persist-логирования и лимитов. В файле /etc/systemd/journald.conf можно настроить:


Storage=persistent
SystemMaxUse=500M
RuntimeMaxUse=100M
MaxRetentionSec=7day


После правок - перезапустите journald:


systemctl restart systemd-journald


▪️ Глубокие фильтры. Вывести только ошибки от ядра:


journalctl _TRANSPORT=kernel -p err


Фильтр по PID:


journalctl _PID=1234


По имени бинарника:


journalctl _COMM=nginx


#logs #systemd

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135
👤 Как перенести пользователей между серверами с сохранением UID, групп и паролей

Иногда возникает необходимость перенести локальных пользователей с одного linux-сервера на другой - при миграции, клонировании окружений или настройке тестовой копии. Но важно не просто скопировать имена, а сохранить UID, GID, пароли и групповые принадлежности, чтобы избежать конфликтов и сохранить доступы.

🌟 Что нужно сохранить

/etc/passwd - основная информация о пользователях
/etc/shadow - пароли пользователей
/etc/group - группы
/etc/gshadow - пароли групп (редко)
/home/ - директории пользователей и их данные (если нужно)


1️⃣ Фильтрация нужных пользователей. На проде часто много системных аккаунтов. Чтобы перенести только нужных людей, можно отфильтровать пользователей с UID > 1000 (или 500 - зависит от дистрибутива):


awk -F: '$3 >= 1000 && $3 < 60000 { print $1 }' /etc/passwd


2️⃣ Экспорт записей. Выполните на исходном сервере:


#пользователей
awk -F: '$3 >= 1000 && $3 < 60000' /etc/passwd > users.passwd

#пароли
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/shadow > users.shadow

#группы
awk -F: '$3 >= 1000 && $3 < 60000' /etc/group > users.group
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/gshadow > users.gshadow


Скопируйте файлы users.passwd, users.shadow, users.group, users.gshadow на новый сервер.

3️⃣ Импорт на новом сервере. На новом сервере:

Сначала делаем резервные копии оригинальных файлов:


cp /etc/passwd /etc/passwd.bak
cp /etc/shadow /etc/shadow.bak
cp /etc/group /etc/group.bak
cp /etc/gshadow /etc/gshadow.bak


Затем добавляем новые записи (убедитесь, что нет конфликтов UID/GID):


cat users.passwd >> /etc/passwd
cat users.shadow >> /etc/shadow
cat users.group >> /etc/group
cat users.gshadow >> /etc/gshadow


4️⃣ Копирование домашней директории


rsync -avz /home/ user@newserver:/home/


Не забудьте про владельцев:


chown -R username:groupname /home/username


Проверка


getent passwd имя_пользователя
id имя_пользователя
su - имя_пользователя


🌟 Если вы переносите пользователей с sudo-доступом, убедитесь, что их записи присутствуют в /etc/sudoers или /etc/sudoers.d/.

#linux #users

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94
📍 Анализ открытых портов и процессов в Linux

Когда сервер начинает вести себя подозрительно - например, появляется неизвестный открытый порт, нестандартный трафик или система тормозит - важно быстро выяснить: что за процесс, что он слушает и какие соединения установлены. Для этого можно использовать связку: ss, lsof и каталог /proc.

1️⃣ ss - быстро и точно о сетевых соединениях. Современная замена netstat, работает быстрее и точнее:


ss -tulnp


Покажет все TCP/UDP-порты, которые слушают процессы:

-tuln - TCP/UDP, слушающие, без разрешения имен
-p - имя процесса и PID

Пример:


LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))


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


lsof -i :80


Выведет все процессы, использующие порт 80.


lsof -nP -iTCP -sTCP:LISTEN


Список всех TCP-сервисов, которые слушают порты.

3️⃣ /proc - внутренняя кухня процесса. Для изучения процесса изнутри можно обратиться к /proc/<PID>/fd - тут видны все открытые дескрипторы:


ls -l /proc/1234/fd


Покажет, какие файлы, сокеты и каналы открыт у процесса с PID 1234.

Для конкретного сокета:


ls -l /proc/1234/fd | grep socket


Также можно посмотреть cmdline:


cat /proc/1234/cmdline


4️⃣ Комбинируем все вместе. Узнаем, какой процесс слушает порт:


ss -tulnp | grep :8080


Получаем его PID → проверяем, какие соединения установлены:


lsof -p 1234 -i


Лезем в /proc/1234/ за подробностями:

/fd - дескрипторы
/status - ресурсы и права
/cmdline - команда запуска

#linux #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
Та самая задачка на 5 минут

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁141
This media is not supported in your browser
VIEW IN TELEGRAM
10–11 сентября встречаемся на IT Elements — конференции, сделанной айтишниками для айтишников.

Площадка в третий раз станет точкой притяжения тех, кто реально делает ИТ в России. В этом году в фокусе — критически важные направления отрасли: инфраструктура, сети, кибербезопасность, данные и AI/ML.

Тематические треки:

▪️Инфраструктура: антихрупкость в архитектуре, инфраструктура для ИИ, отечественные решения, защита, стратегии, ключевые платформы (гибридные облака, БД, хранилища), контейнеры и Kubernetes.

▪️Сети: будущее сетей, сервис, ЦОДы для ИИ, VXLAN, балансировка, UC, управление.

▪️Кибербезопасность: киберустойчивость, импортозамещение NGFW, безопасная разработка, управление уязвимостями, мониторинг инцидентов, киберучения.

▪️Данные и ИИ: Data-driven-инфраструктура, миграция на LakeHouse, Big Data, автоматизация разработки, MES-оптимизация, корпоративные GPT-ассистенты и агенты, ESM-системы.

Формат: офлайн в Москве или онлайн.

Участие бесплатное, по предварительной регистрации.
⚙️ Управление оперативной памятью без перезагрузки

Знали ли вы, что в linux можно отключать и включать оперативную память без перезагрузки? Главное условие - отключаемые блоки памяти должны быть свободны.

▪️ Для начала - полезная команда:


lsmem


Она покажет, как ядро видит вашу память - в виде блоков. Например:


RANGE SIZE STATE REMOVABLE BLOCK
0x0000000000000000-0x00000000f7ffffff 3.9G online yes 0-30
0x0000000100000000-0x0000000107ffffff 128M online yes 32


Блоки - по 128M. Всего - 4G.

▪️ Пример: хотим временно отключить 1G памяти:


chmem -d 1G


▪️ Или выборочно - блоки с 22 по 29:


chmem -d -b 22-29


Если память занята, chmem попробует переместить данные и освободить нужные блоки. Это может занять некоторое время.

▪️ Проверяем результат:


lsmem


Теперь 1G памяти offline. Осталась активной - 3G.

▪️ Возвращаем память обратно:


chmem -e 1G


#linux #RAM

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
👁 Проверка MTU и проблемы с фрагментацией пакетов

MTU (Maximum Transmission Unit) - это максимальный размер пакета, который может быть передан без фрагментации. Неправильно настроенное значение MTU может привести к странным сетевым багам: страницы не грузятся до конца, SSH висит, API-запросы обрываются и т.д.

▪️ Как проверить MTU между двумя узлами?

Один из самых надежных способов - использовать ping с флагом запрета фрагментации (в Linux - -M do):


ping -c 4 -M do -s 1472 8.8.8.8


Почему 1472? 1472 байта данных + 28 байт заголовков (IP + ICMP) = 1500 байт - стандартное MTU для Ethernet.


Если MTU меньше - вы получите ошибку:


Frag needed and DF set


Уменьшайте значение -s по шагам, пока ping не пройдет - это и будет максимальный размер без фрагментации.

▪️ Альтернатива - tracepath:


tracepath 8.8.8.8


Этот инструмент сам определяет, на каком узле в пути начинается фрагментация.

▪️ Настройка MTU:

Постоянная настройка через netplan (Ubuntu):


ethernets:
eth0:
dhcp4: yes
mtu: 1400


Для временного изменения:


ip link set dev eth0 mtu 1400


▪️ Проблемы с фрагментацией чаще всего появляются:

При использовании VPN и туннелей (WireGuard, IPsec, OpenVPN)
В облачных сетях с Jumbo Frames
При неправильно настроенном MSS (Maximum Segment Size)


Для TCP можно использовать iptables для автоматической коррекции MSS:


iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu


#ping #MTU

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