Многие думают, что VLAN - это только для крупных корпоративных сетей, но на практике он может оказаться крайне полезным и в небольшом офисе или даже дома. Виртуальные локальные сети позволяют разделить трафик по логике, повысить безопасность и упростить администрирование.
VLAN (Virtual LAN) - это способ логического разделения одной физической сети на несколько изолированных друг от друга сегментов. Устройства в разных VLAN не видят друг друга, пока не настроен маршрутизатор.
Пример на Cisco:
interface FastEthernet0/1
switchport mode access
switchport access vlan 10
Настройка маршрутизации между VLAN при необходимости.
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥4🤔2❤1🗿1
Если вы когда-нибудь случайно выполнили 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Когда windows начинает тормозить, а «диспетчер задач» мало что говорит - на помощь приходят sysinternals tools. Это набор от microsoft, разработанный ещё Марком Руссиновичем, и он до сих пор незаменим для администраторов.
Ключевые инструменты, которые реально помогают увидеть и устранить узкие места в системе:
du -q -l 1 C:\Users\admin
Все утилиты можно использовать без установки, просто скачать и запускать по мере надобности. А некоторые - использовать прямо из PowerShell, если положить их в %PATH%.
#windows #sysinternals
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎2❤1
Иногда хочется, чтобы о важных событиях (бэкапы, алерты мониторинга, запуск задач) приходило пуш-уведомление прямо на смартфон. Без танцев с ботами и сторонними облаками. Есть отличный инструмент -
ntfy.sh.Заходим в веб-приложение: https://ntfy.sh/app
Разрешаем уведомления, подписываемся на тему и получаем URL вроде: https://ntfy.sh/Stkclnoid6pLCpqU
Теперь отправим уведомление:
curl -d "Test Message" https://ntfy.sh/Stkclnoid6pLCpqU
Уведомление мгновенно прилетит в веб-интерфейс или в мобильное приложение (Android/iOS).
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Когда устройств в сети становится больше десятка, раздача IP вручную перестает быть удобной. Решение - поднять свой DHCP-сервер, который будет автоматически раздавать адреса, DNS, шлюз и другие параметры клиентам. Но важно не просто «раздавать все подряд», а уметь закрепить конкретные IP-адреса за нужными устройствами (например, серверами, принтерами, VoIP). Это делается через резервации (DHCP reservations).
sudo apt install isc-dhcp-server
/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.
Откройте оснастку DHCP → Перейдите к своему пулу IP-адресов → ПКМ → New Reservation
Укажите имя, IP, MAC-адрес и тип клиента
Упрощают администрирование (IP-адреса не меняются)
Удобны для мониторинга и firewall-правил
Избавляют от конфликтов IP
Полезны при интеграции с DNS (обратная зона)
#network #DHCP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎3
Иногда при настройке мониторинга на малонагруженных серверах нужно протестировать графики и дашборды, добавив искусственную нагрузку. Устанавливать отдельные утилиты вроде
stress или stress-ng не всегда хочется. К счастью, это можно сделать встроенными средствами - через dd, sha1sum, yes, /dev/zero, /dev/urandom и другие.
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 ГБ данных.
Нагрузка на одно ядро:
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 в режиме ядра.
python3 -c 'a="a"*1024**3; input()'
Можно менять объем, изменяя 1024**3.
#linux #monitoring
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11
Когда одного сетевого интерфейса мало - приходит время объединять их в «команду». Это называется агрегация каналов, и один из самых популярных способов реализовать ее - протокол LACP (Link Aggregation Control Protocol).
LACP - часть стандарта IEEE 802.3ad. Он позволяет объединить несколько физических интерфейсов в один логический (LAG - Link Aggregation Group), который операционная система и приложения видят как один.
📍 Повышение пропускной способности;📍 Повышение отказоустойчивости (если один порт отваливается - остальные продолжают работать);📍 Балансировка нагрузки между портами.
📍 LACP автоматически обнаруживает, какие интерфейсы можно объединить📍 Обе стороны (свитч и хост) договариваются, какие порты войдут в LAG📍 Если кабель выпал или порт упал - он просто исключается из группы, ничего не рушится
sudo apt install ifenslave
/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
📍 LACP работает только при поддержке с обеих сторон (сервер + свитч)📍 LAG не удваивает скорость для одного TCP-соединения, но позволяет нескольким соединениям распределяться по разным каналам📍 Лучше всего работает с хешированием по Layer3+4 (IP + порт)
#network #LACP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Если вы регулярно работаете с Ansible - важно не только писать рабочие плейбуки, но и контролировать, когда, кем и как они были запущены. Особенно, если в вашей инфраструктуре Ansible используется как часть CI/CD или централизованного управления.
/etc/ansible/ansible.cfg (или в локальной копии ansible.cfg) пропишите:
[defaults]
log_path = /var/log/ansible.log
Ansible начнет писать все свои действия в указанный файл. Убедитесь, что у пользователя, запускающего Ansible, есть права на запись.
- name: Установка nginx
apt:
name: nginx
state: present
tags:
- web
- nginx
Это поможет фильтровать задачи в логах, запускать только нужные части и документировать назначение.
- name: Показываем значение переменной
debug:
var: some_variable
Также можно логировать hostname, пользователя и дату запуска, добавляя кастомную задачу:
- name: Логируем запуск
shell: echo "{{ ansible_date_time.iso8601 }}: {{ inventory_hostname }} - {{ ansible_user }}" >> /var/log/ansible_run.log
Например, json или yaml:
[defaults]
stdout_callback = yaml
А если хотите логировать в файл в формате JSON, можно использовать:
[defaults]
callback_whitelist = json
stdout_callback = json
log_path = /var/log/ansible-json.log
ansible-playbook site.yml | tee -a /var/log/ansible-run-$(date +%F-%T).log
Так у вас будет отдельный лог под каждое выполнение.
#ansible #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Если вы не уверены, установлен ли в вашем сервере 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 не включает поддержку TRIM.
Чтобы TRIM работал в гостевой ОС:
#linux #storage
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁29❤2
Наткнулся на утилиту с говорящим названием -
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 вы можете задать нужные владельцы/права без прав суперпользователя.
#fakeroot #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
Если нужно ограничить доступ к сервису из определенных стран (например, через iptables или nginx), потребуется актуальный список IP-сетей по географии.
Готовые списки можно взять отсюда. Например, список сетей России здесь
Каждая строка - отдельная подсеть, удобно парсить скриптами.
#!/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
Сервис: https://www.ip2location.com/free/visitor-blocker
Можно сразу получить правила под apache, nginx, iptables, mikrotik и другие.
#iptables #ipset
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
Если вы работаете на современном дистрибутиве 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"
/run/log/journal (в RAM), если /var/log/journal отсутствует. Чтобы сохранять логи между перезагрузками:
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
/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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤5
Иногда возникает необходимость перенести локальных пользователей с одного linux-сервера на другой - при миграции, клонировании окружений или настройке тестовой копии. Но важно не просто скопировать имена, а сохранить UID, GID, пароли и групповые принадлежности, чтобы избежать конфликтов и сохранить доступы.
/etc/passwd - основная информация о пользователях
/etc/shadow - пароли пользователей
/etc/group - группы
/etc/gshadow - пароли групп (редко)
/home/ - директории пользователей и их данные (если нужно)
awk -F: '$3 >= 1000 && $3 < 60000 { print $1 }' /etc/passwd
#пользователей
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 на новый сервер.Сначала делаем резервные копии оригинальных файлов:
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
rsync -avz /home/ user@newserver:/home/
Не забудьте про владельцев:
chown -R username:groupname /home/username
Проверка
getent passwd имя_пользователя
id имя_пользователя
su - имя_пользователя
/etc/sudoers или /etc/sudoers.d/.#linux #users
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4
Когда сервер начинает вести себя подозрительно - например, появляется неизвестный открытый порт, нестандартный трафик или система тормозит - важно быстро выяснить: что за процесс, что он слушает и какие соединения установлены. Для этого можно использовать связку: ss, lsof и каталог /proc.
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))
lsof -i :80
Выведет все процессы, использующие порт 80.
lsof -nP -iTCP -sTCP:LISTEN
Список всех TCP-сервисов, которые слушают порты.
/proc - внутренняя кухня процесса. Для изучения процесса изнутри можно обратиться к /proc/<PID>/fd - тут видны все открытые дескрипторы:
ls -l /proc/1234/fd
Покажет, какие файлы, сокеты и каналы открыт у процесса с PID 1234.
Для конкретного сокета:
ls -l /proc/1234/fd | grep socket
Также можно посмотреть cmdline:
cat /proc/1234/cmdline
ss -tulnp | grep :8080
Получаем его PID → проверяем, какие соединения установлены:
lsof -p 1234 -i
Лезем в /proc/1234/ за подробностями:
/fd - дескрипторы/status - ресурсы и права/cmdline - команда запуска#linux #network
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3
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-системы.
Формат: офлайн в Москве или онлайн.
Участие бесплатное, по предварительной регистрации.
Площадка в третий раз станет точкой притяжения тех, кто реально делает ИТ в России. В этом году в фокусе — критически важные направления отрасли: инфраструктура, сети, кибербезопасность, данные и 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.
chmem -d 1G
chmem -d -b 22-29
Если память занята, chmem попробует переместить данные и освободить нужные блоки. Это может занять некоторое время.
lsmem
Теперь 1G памяти offline. Осталась активной - 3G.
chmem -e 1G
#linux #RAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
MTU (Maximum Transmission Unit) - это максимальный размер пакета, который может быть передан без фрагментации. Неправильно настроенное значение MTU может привести к странным сетевым багам: страницы не грузятся до конца, SSH висит, API-запросы обрываются и т.д.
Один из самых надежных способов - использовать
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 8.8.8.8
Этот инструмент сам определяет, на каком узле в пути начинается фрагментация.
Постоянная настройка через 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1