Когда сервер начинает вести себя подозрительно - например, появляется неизвестный открытый порт, нестандартный трафик или система тормозит - важно быстро выяснить: что за процесс, что он слушает и какие соединения установлены. Для этого можно использовать связку: 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👎11😁8🤡1
Многие не знают, что в PHP есть встроенный веб-сервер. Он отлично подходит для тестов, разовых задач или работы с локальными утилитами - без необходимости устанавливать и настраивать Apache или Nginx.
Предположим, вам нужно быстро подключиться к базе через phpMyAdmin, но поднимать полноценный веб-сервер не хочется. Все просто:
apt install php php-mysqli
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
tar xzvf phpMyAdmin-5.2.1-all-languages.tar.gz
cd phpMyAdmin-5.2.1-all-languages
php -S 172.27.50.130:8080
Если конфигурация еще не создана - перейдите в /setup/, настройте подключение к серверу баз данных и сохраняйте конфиг. Если все уже настроено - сразу входите в интерфейс.
Когда работа закончена, просто остановите сервер (Ctrl+C). Все HTTP-запросы будут видны прямо в консоли - удобно для отладки.
#PHP #phpMyAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
Часто путаетесь в modify и change? Я - тоже. Поэтому сделал небольшую шпаргалку по выводу stat и значению каждой метки.
stat file.txt
Пример вывода:
File: file.txt
Size: 3 Blocks: 8 IO Block: 4096 regular file
Device: fe00h/65024d Inode: 657571 Links: 1
Access: 2025-08-22 00:31:39.446518364 +0300
Modify: 2025-08-22 00:30:55.460753550 +0300
Change: 2025-08-22 00:30:55.460753550 +0300
Birth: 2025-08-22 00:30:45.778142819 +0300
noatime - метка не обновляется вовсе;relatime (по умолчанию) - обновляется, если: прошло более 24 часов с последнего доступа; atime < mtime или ctime.Проверьте сами:
cat file.txt
stat file.txt # atime обновится
cat file.txt
stat file.txt # atime НЕ обновится, если прошло меньше 24ч
chmod 644 file.txt
# изменится только ctime, mtime останется прежним
На слух change и modify кажутся синонимами, но это совершенно разные вещи в контексте файловой системы. mtime - это про СОДЕРЖИМОЕ, ctime - про ОБОЛОЧКУ (метаданные).
# Найти файлы, измененные по содержимому за последние 2 дня
find . -mtime -2
# Найти файлы с измененными правами/владельцем за последние 2 дня
find . -ctime -2
Полезная привычка - точно понимать, какой таймштамп используется в вашей задаче: доступ, изменение содержимого или метаданных.
#linux #files
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥1
Хотите добавить второй фактор авторизации в linux, но без заморочек с внешними порталами и веб-интерфейсами? Все можно сделать прямо в терминале с помощью PAM и TOTP. Покажу, как настроить двухфакторную авторизацию через google authenticator или oathtool.
sudo apt install libpam-google-authenticator # на debian/ubuntu
sudo yum install google-authenticator # на RHEL/centOS
google-authenticator
Вы получите:
sudo nano /etc/pam.d/sshd
Добавляем в начало:
auth required pam_google_authenticator.so
Также нужно разрешить использование PAM в sshd_config:
sudo nano /etc/ssh/sshd_config
Убедитесь, что указано:
ChallengeResponseAuthentication yes
UsePAM yes
Перезапускаем SSH:
sudo systemctl restart sshd
Теперь при входе по SSH будет запрашиваться TOTP-код.
Устанавливаем:
sudo apt install oathtool
Пример генерации кода (вставьте свой секретный ключ в base32):
oathtool --totp -b 'JBSWY3DPEHPK3PXP'
Можно сделать shell-функцию:
totp() {
oathtool --totp -b "$1"
}
И использовать:
totp JBSWY3DPEHPK3PXP
#linux #2FA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
Если вдруг понадобилось зайти в терминал через веб или дать кому-то временный доступ - есть простой и удобный способ:
ttyd.
wget https://github.com/tsl0922/ttyd/releases/download/1.7.3/ttyd.i686
mv ttyd.i686 /usr/local/bin/ttyd
chmod +x /usr/local/bin/ttyd
ttyd bash
В консоли появится порт (по умолчанию - 7681). Переходим в браузере: http://<IP_сервера>:7681 - и вы в консоли.
ttyd top # Мониторинг системы
ttyd mc # Midnight Commander в браузере
ttyd htop # Более наглядный top
Утилита идеальна для быстрой отладки, демонстрации или временного доступа без SSH-настройки. Например, можно повесить top в read-only режиме для удаленного мониторинга.
#linux #ttyd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1
Если нужен легкий и быстрый способ настроить локальный DNS-сервер для офиса, дома или тестовой среды - обратите внимание на
dnsmasq. Это компактная и мощная утилита, которая может:
sudo apt install dnsmasq
/etc/dnsmasq.conf. Пример минимальной настройки:
# Основной DNS, к которому будут проксироваться внешние запросы
server=8.8.8.8
# Зона для кастомных записей
domain-needed
bogus-priv
no-resolv
# Свое доменное имя
domain=local
# Файл с кастомными DNS-записями
addn-hosts=/etc/dnsmasq.hosts
Создаем файл кастомных записей:
sudo nano /etc/dnsmasq.hosts
Пример содержимого:
192.168.1.100 web.local
192.168.1.101 db.local
sudo systemctl restart dnsmasq
Убедитесь, что он включен при старте:
sudo systemctl enable dnsmasq
dig @127.0.0.1 web.local +short
Ответ должен быть
192.168.1.100Чтобы система использовала ваш dnsmasq:
sudo nano /etc/resolv.conf
И указать:
nameserver 127.0.0.1
/etc/NetworkManager/conf.d/#DNS #dnsmasq
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5
На одном из почтовых серверов попросили поднять лимит на размер вложений - якобы 10 МБ им не хватает. Но ведь по умолчанию стоит лимит на размер письма в 20 МБ, что является универсальным значением. Раздавать «безлимит» на вложения плохое дело - это быстро раздувает почтовую базу, особенно когда сотрудники начинают слать друг другу презентации и макеты по 100 раз на день.
Ограничение в конфигурации - это размер всего письма, а не только вложения. И тут важно помнить, что вложения передаются в письме в кодированном виде, а значит, занимают больше места.
В электронной почте чаще всего используются два метода кодирования, описанные в стандарте MIME:
Base64 - самый распространенный, увеличивает размер вложения примерно в 1,3 раза;
Quoted-printable - встречается реже, но может раздувать файл до 3 раз.
Mime-Version: 1.0
Content-Type: application/pdf; name="file.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="file.pdf"
Здесь PDF-файл закодирован и представлен в виде ASCII-символов.
Если в конфиге указано ограничение на размер письма в 20 МБ, это не значит, что пользователь сможет отправить вложение на 20 МБ. Реально «пролезет» меньше, иногда заметно меньше - из-за особенностей кодирования.
#email #MIME
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1
fio - один из самых популярных инструментов для тестирования производительности дисков. Он гибко настраивается и позволяет моделировать реальные нагрузки: от последовательного чтения до случайной записи мелких блоков.
apt install fio# debian/ubuntu
yum install fio# centOS
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --runtime=60 --group_reporting
--rw=read - режим чтения
--bs=1M - размер блока (1 МБ)
--size=1G - объем данных
--numjobs=1 - количество потоков
--runtime=60 - время теста в секундах
--group_reporting - агрегированный вывод результатов
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting
--rw=randwrite - случайная запись
--bs=4k - размер блока (типично для БД)
--numjobs=4 - 4 параллельных потока
fio --name=mixed --rw=randrw --rwmixread=70 --bs=8k --size=2G --numjobs=2 --runtime=60 --group_reporting
--rw=randrw - чтение/запись
--rwmixread=70 - 70% чтения, 30% записи
#linux #fio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13🔥1
В большинстве современных дистрибутивов linux системные логи ведет systemd-journald - в бинарном формате, а не в виде привычных текстовых файлов syslog. Эти логи со временем могут занимать гигабайты места, поэтому за ними нужно следить.
journalctl --disk-usage
По умолчанию файлы хранятся в
/var/log/journal./etc/systemd/journald.conf:
[Journal]
SystemMaxUse=1024M # общий лимит размера логов
SystemMaxFileSize=50M # максимальный размер одного файла
После изменения конфигурации перезапустите journald:
systemctl restart systemd-journald.service
По умолчанию journald может занимать до 10% объема раздела, но не более 4 ГБ. На практике чаще встречается именно лимит в 4 ГБ.
journalctl --vacuum-size=1024M
По сроку хранения:
journalctl --vacuum-time=7d
Обе команды можно добавить в cron, чтобы чистка выполнялась автоматически.
systemctl edit ssh
Добавляем:
[Service]
LogNamespace=ssh
Создаём конфиг
/etc/systemd/journald@ssh.conf:
[Journal]
SystemMaxUse=20M
Перезапускаем службу:
systemctl restart ssh
Просмотр её логов:
journalctl --namespace ssh
#linux #journald
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Слабые пароли - одна из важных и актуальных тем. В linux можно усилить требования к паролям через PAM и модуль libpwquality, чтобы пользователи не ставили что-то вроде qwerty123.
yum install libpwquality #centOS
apt install libpam-pwquality #ubuntu/debian
/etc/security/pwquality.conf
Пример строгих настроек:
minlen = 12
minclass = 3
maxrepeat = 2
maxsequence = 3
dictcheck = 1
minlen - минимальная длина пароля
minclass - количество обязательных классов символов (строчные, заглавные, цифры, спецсимволы)
maxrepeat - максимум одинаковых символов подряд
maxsequence - длина допустимой последовательности (abc, 123 и т.д.)
dictcheck - проверка на словарные пароли
/etc/pam.d/common-password # debian/ ubuntu
/etc/pam.d/system-auth # centOS
Находим строку с
pam_pwquality.so и добавляем параметры:
password requisite pam_pwquality.so retry=3 enforce_for_root
retry=3 - количество попыток ввода
enforce_for_root - применить правила даже для root
passwd user
Если пароль не соответствует правилам, PAM выдаст сообщение с указанием, что именно не так.
#security #password
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда в столовой проходишь мимо бухгалтера, которому обещал настроить принтер (да как у тебя вообще совести хватает пойти на обед, когда я не могу ничего распечатать)
#юмор
🧑💻 NetworkAdmin
#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16❤1
Желаю вам, чтобы Ваша зп росла быстрее, чем количество тасок. И пусть в жизни, как в коде, всегда находится правильный алгоритм!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5🫡1
Systemd умеет не только собирать и хранить логи, но и отдавать их по HTTP. Для этого есть служба
systemd-journal-gatewayd, которая позволяет просматривать журнал прямо в браузере. Настраивается все буквально в пару шагов (пример для debian).
apt install systemd-journal-remote
Запускаем службу:
systemctl start systemd-journal-gatewayd.service
По умолчанию используется порт 19531.
http://10.25.1.55:19531/browse
Только логи текущей загрузки:
http://10.25.1.55:19531/entries?boot
В интерфейсе удобно переключаться между сервисами через выпадающий список.
curl --silent -H 'Accept: application/json' \
'http://10.25.1.55:19531/entries?UNIT=ssh.service'
systemd-journal-gatewayd умеет работать не только с локальным журналом, но и с логами, собранными с других серверов. Для этого можно указать директорию с журналами:
systemd-journal-gatewayd -D /path/to/logs
#systemd #logs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8