Sysadminium
322 subscribers
148 photos
1 video
1 file
398 links
Я делюсь своими знаниями системного администратора. Всё проверено на себе — иногда даже дважды.
Download Telegram
👉Stateful — отслеживает состояние соединений (в MikroTik этим занимается - connection tracking).
Можно разрешить сессии только в одну сторону, например:
- с компьютера админа можно ходить во все сети, но со всех сетей нельзя подключаться к компьютеру админа;
- пользователи могут выходить в интернет, но из интернета нельзя подключаться к компьютерам пользователей.

📍 Примеры Stateful для MikroTik:

- Firewall Filter / NAT / Mangle — используют connection tracking.
- Switch rules → redirect to CPU → Firewall — становятся stateful.
- VPN: SSTP, OpenVPN, WireGuard — stateful (есть установление и поддержание сессии).

💡Зачем это нужно знать? Бывает вы изучаете какой-нибудь новый инструмент (фаервол или что-то подобное). А в руководстве, статье, или другом источнике, говориться что этот инструмент Stateless, без объяснения того что это означает. Но вы то теперь знаете.
👍6
📌Stateless и Stateful - в компьютерных сетях.

Трафик в сети может быть Stateless (без установки соединения) или Stateful (с установленным соединением).

👉Stateless — не хранит состояния соединений.
Каждый пакет обрабатывается отдельно.
Если запретил в одну сторону — обратный трафик тоже не пройдёт.

📍 Примеры Stateless для MikroTik:

- Switch rules — фильтрация на уровне L2
- Route rules — политика маршрутизации
- Firewall Raw — фильтрация до connection tracking
- VPN: L2TP, GRE, IPIP — сами по себе stateless (зависят от нижнего уровня)
👍8
📌Настройка шрифтов и ClearType на RDP сервере

Поднял я как-то терминальный сервер Windows Server 2019 и тоже самое с Windows Server 2022. Там разместил 1С как RemoteApp приложение. Но пользователи стали жаловаться на плохие шрифты в 1С.

👉 Включаем сглаживание шрифтов

Для начала я разрешил сглаживание шрифтов в групповых политиках (которое до этого запрещал):

Конфигурация компьютера / Политики / Административные шаблоны / Компоненты Windows / Службы удалённых рабочих столов / Узел сеансов удалённых рабочих столов / Среда удалённых рабочих столов / Не разрешать сглаживание шрифтов: Отключена


Но этим шагом мы только разрешили использовать сглаживание шрифтов. А для того чтобы клиент использовал сжатие в ярлык remoteaap нужно добавить опцию:
enable font smoothing:i:1


Шрифты стали лучше, но недостаточно.
👍4
👉Включаем ClearType

Следующим шагом я настроил ClearType:

Панель управления / Шрифты / Настройка текста Clear Type / Включить "ClearType" и пройти мастер настройки


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

👌После этого пользователи сказали что шрифты в 1С стали красивыми, к которым они привыкли.
👍5
📌Что такое DSCP

DSCP (Differentiated Services Code Point) — это поле в IP-заголовке (6 бит), с помощью которого помечают приоритет пакета в сети.

🔹 DSCP используется для управления качеством обслуживания (QoS) — чтобы важный трафик (например, голос, видео, управление) передавался быстрее и стабильнее, чем обычные данные.
👍7
🔹 Как работает:

1. Отправитель (компьютер, сервер, маршрутизатор) ставит DSCP-метку в IP-заголовке.
2. Коммутаторы и маршрутизаторы, поддерживающие QoS, читают эту метку.
3. В зависимости от значения DSCP пакет получает:
— приоритетную обработку в очередях;
— меньшую задержку;
— гарантированную полосу.

🔹Где используется:

— В корпоративных сетях — для приоритета VoIP и видеоконференций.
— В дата-центрах — для управления трафиком приложений.
— В сетях интернет-провайдеров — для классификации трафика абонентов.

🔹Примеры значений DSCP:

— 46 (Expedited Forwarding) - Голос, SIP, низкая задержка.
— 26 / 34 (AF31 / AF41) - Важные данные.
— 0 (CS0) - Обычный трафик (по умолчанию).

DSCP — это механизм маркировки пакетов для QoS, позволяющий сети различать важность трафика и обеспечивать нужное качество передачи.

❗️Важно помнить что некоторые коммутаторы могут обнулять или изменять метки DSCP:

— Неуправляемые - работают только на L2 и не трогают IP-заголовок;
— Управляемые:
—— Могут считывать DSCP-поле для приоритизации трафика.
——Могут обнулять или изменять DSCP-поле (при соответствующей настройке).
👍9
Команда find предназначена для поиска файлов по разным критериям. Критериями для поиска могут быть:
🔹имя файла, часть имени, или регулярное выражение;
🔹дата модификации файла;
🔹размер файла;
🔹тип файла;
🔹и другое.

Для поиска файла мы должны:
- указать каталог, с которого будем начинать поиск;
- указать критерии поиска.

👉Например, найдём файл в текущем каталоге с именем test.txt:
# find . -name test.txt
./test.txt


👉Одной из полезных опций является указание типа файла, который мы собираемся искать:
🔹-type f - обычный файл;
🔹-type d - каталог (директория).

# find /etc -type f -name pve
/etc/logrotate.d/pve

# find /etc -type d -name pve
/etc/pve
/etc/pve/nodes/pve
👍4
👉Еще одна очень полезная опция, но малоизвестная - -xdev. Эта опция заставляет пропускать точки монтирования. Это полезно, если вы хотите начать поиск от корня (/), но не хотите заходить в другие примонтированные файловые системы (например у вас в mnt примонтирован smb или nfs ресурс с огромным количеством файлов и вам нужно пропустить этот каталог).

# find / -xdev -name ssh      
/var/log/runit/ssh
/usr/share/doc/ssh
/usr/share/bash-completion/completions/ssh
/usr/share/runit/meta/ssh
/usr/bin/ssh
/usr/lib/apt/methods/ssh
/etc/default/ssh
/etc/init.d/ssh
/etc/sv/ssh
/etc/runit/runsvdir/default/ssh
/etc/ssh


👉Для того чтобы найти изменённые в течении текущего дня файлы используется опция -mtime -1. Или можете указать любое количество дней (например 10: -mtime -10).

# find /root -mtime -1
/root
/root/.cache/proxmox-backup
/root/.cache/proxmox-backup/repo-list
/root/test
/root/test/script.sh
/root/test/test_dir
/root/test/test_dir/info.txt
/root/test/test_dir/home_work.txt
/root/test/test_dir/my_script.sh
/root/test/secret.txt
/root/test/test.txt
/root/test/test.sh
/root/.bash_history


👉Можем уменьшить период изменения файлов и указывать его не в днях, а в минутах. Для этого используется опция -cmin -10 (файлы изменённые 10 минуту назад).

# find /root -cmin -10
/root/.cache/proxmox-backup
/root/.cache/proxmox-backup/repo-list
/root/.bash_history


👉Также, очень часто требуется найти файлы определённого размера. Для этого существует опция: -size 50M. Но часто ищут файлы в диапазоне размеров, например: -size +50M -size -100M (файлы больше 50 и меньше 100 MB).

# find / -xdev -size +60M -size -100M
/usr/share/kvm/edk2-aarch64-code.fd
/usr/share/kvm/edk2-arm-vars.fd
/usr/share/kvm/edk2-arm-code.fd


👉Команда find по умолчанию выводит найденные файлы на экран терминала. Но можно это действие переопределить:
🔹-print (выводит файлы на терминал, используется по умолчанию);
🔹-delete (удаляет найденные файлы);
🔹-ls (выводит подробную информацию о файле, такую как размер, права и т.п.);
🔹-printf (можем сами указать, какую информацию о файле нужно получить, например -printf '%s\t%p\n' - размер в байтах, табуляция, путь к файлу);

# find / -xdev -size +60M -size -100M -printf '%s byte - %p\n'
67108864 byte - /usr/share/kvm/edk2-aarch64-code.fd
67108864 byte - /usr/share/kvm/edk2-arm-vars.fd
67108864 byte - /usr/share/kvm/edk2-arm-code.fd


👉Кроме этого find умеет исключать каталоги из поиска. Для этого используется: -path /proc -prune -o .... Этим самым мы исключаем каталог и все его подкаталоги из поиска.

# find / -xdev -path /opt -prune -o -name test -print
/usr/share/javascript/mathjax/test
/usr/bin/test
/usr/lib/python3/dist-packages/systemd/test
/usr/lib/python3.11/test
/root/test


🔹Здесь мы исключаем все примонтированные каталоги (-xdev) - это желательно выполнять всегда, при поиске от корня.
🔹И исключаем из поиска каталог opt - -path /opt -prune -o ....

👉И самый сложный пример. Когда нам нужно исключить из поиска несколько каталогов. Здесь нужно комбинировать условия в скобках, и при этом экранировать скобки \( ... \), а затем указать -prune -o ....

# find / -xdev \( -path /proc -o -path /sys -o -path /dev -o -path /opt \) -prune -o -name test -print
/usr/share/javascript/mathjax/test
/usr/bin/test
/usr/lib/python3/dist-packages/systemd/test
/usr/lib/python3.11/test
/root/test

🔹Здесь -xdev - применяется ко всему выражению поиска.
🔹То что нужно исключить (левая часть) - \( -path /proc -o -path /sys -o -path /dev -o -path /opt \) -prune.
🔹Правая часть отделяется от левой с помощью - -o.
🔹То что нужно найти (правая часть) - -name test.
🔹Так как мы в левой части указали действие (-prune), то в правой части тоже нужно указать действие (-print).

Последний пример действительно сложный, но часто про это спрашивают (про исключения нескольких каталогов) на собеседованиях для позиций Linux администраторов или DevOps инженеров.
👍9
👉С помощью утилиты curl мы можем обращаться на специальные ресурсы, чтобы получить информацию о своём внешнем ip-адресе:

$ curl icanhazip.com
$ curl 2ip.ru
$ curl ifconfig.me
$ curl ident.me
$ curl eth0.me
$ curl ipinfo.io/ip


А с помощью последнего ресурса (ipinfo.io) можем получить ещё больше информации о своём или чужом адресе:

✅
$ curl ipinfo.io
{
# здесь будет информация о вашем ip адресе
}


✅
$ curl ipinfo.io/8.8.8.8
{
"ip": "8.8.8.8",
"hostname": "dns.google",
"city": "Mountain View",
"region": "California",
"country": "US",
"loc": "37.4056,-122.0775",
"org": "AS15169 Google LLC",
"postal": "94043",
"timezone": "America/Los_Angeles",
"readme": "https://ipinfo.io/missingauth",
"anycast": true
}
👍8
👉Из статьи вы узнаете что такое образ Docker и из чего он состоит. Как создавать свои образы с помощью файла Dockerfile.И как выкладывать собственные образы в репозиторий Docker Hub.
👉Статья поможет вам сэкономить ваше время если вы только начинаете изучать Docker.

📌Статья: https://sysadminium.ru/creating-docker-images/
👍2
Недавно я начал писать цикл статей о Docker. Сейчас на сайте опубликованы две первые статьи (https://sysadminium.ru/):

🔹Первое знакомство с Docker — установка и базовые понятия.
🔹Создание собственных образов Docker.

Далее планирую написать о монтировании каталогов и томов в контейнеры, об устройстве Docker-сетей, а также об оптимизации образов. Отдельный блок будет посвящён Docker Compose - инструменту для запуска много-контейнерных приложений, например:
🔹 Python + Postgres;
🔹 WordPress + MySQL;
🔹Apache2 + MySQL + phpMyAdmin;
🔹и другие варианты.

В статьях я использую образы из DockerHub, но это не единственное доступное хранилище. Существуют и локальные решения. Например, мой коллега на своём канале (DeSoft.ru) описал установку Docker Container Registry (https://t.me/desoft_ru/233). У него на сайте также можно найти и другие полезные материалы о Docker: https://desoft.ru/tags/docker/.
👍10
📌1С предупреждает об устаревшем драйвере ККТ

Те кто постоянно работают с 1С и Торговым оборудованием уже должны знать эту информацию, но вдруг кто-то, как и я столкнётся с этим только сейчас.

Пользователи 1С при использовании ККТ могут столкнуться с такой ошибкой после обновления конфигурации:

АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.x’ на <РабочееМесто>.

Использование данного драйвера может приводить к некорректному формированию фискальных данных на ККТ. Необходимо использовать актуальную версию драйвера ККТ для данного производителя.

Перенастройте оборудование в разделе: «Поддержка оборудования — Подключаемое оборудование».
👍2
👉1 сентября 2025 г. вступили в силу новые изменения ФФД. В обновленном ФФД вводятся сведения:
- о безналичной оплате (теперь передается идентификатор безналичной транзакции);
- об оплате в интернете (адрес сайта, где была покупка);
- о результате проверки маркированных товаров;
- а также вводятся минимальные размеры шрифта и QR-кода на чеке.

Что требуется для частного случая с ККТ АТОЛ:
1. Обновить прошивку кассы.
2. Обновить драйвер ККТ в операционной системе.
3. Обновить версию конфигурации 1С и перенастроить оборудование.

❗️Но если 2-а пункта не выполнены, а 1С вы обновили, то получите указанную ошибку. При этом касса продолжит работать, это только предупреждение -> нужно обновить прошивку и драйвер.
👍3
👉В этой статье мы рассмотрим проброс каталогов и томов в контейнеры Docker.

👉Первое используется для удобства редактирования файлов, второе для надёжного хранения данных.

Статья
👍5
📌Процессы с PID 0 и 1

В Linux процессы с PID 0 и PID 1 имеют особое значение, но они не являются обычными процессами, и их природа различается.

🔷PID 0 - idle процесс:
- Поток ядра, который также называется idle task или swapper.
- Его задача - выполняться, когда нет других готовых к выполнению процессов.
- Запускается ядром на этапе инициализации до любого пользовательского кода.
- Не отображается в выводе ps, и на большинстве систем нет /proc/0. Поэтому часто не виден напрямую, но логически соответствует "нулевому" потоку планировщика.

Зачем нужен такой поток? Он гарантирует, что у планировщика всегда есть "что запустить". Так было проще реализовать сам планировщик (scheduler), чем обрабатывать специальное состояние когда нет процессов готовых для запуска.

Когда запускается idle процесс, CPU переходит в энергосберегающий режим. Без этого процессор бы грузился постоянно на 100% даже в простое.

Другие утилиты (top, htop, vmstat, sar) используют счётчики из /proc/stat чтобы знать сколько времени CPU был в состоянии idle, чтобы отобразить % загрузки CPU.

🔷PID 1 - init-процесс:
- Первый пользовательский процесс, запускаемый ядром после завершения этапа инициализации ядра.
- Обязательно существует во всех системах Linux (и Unix-подобных).

Ответственен за:
- Запуск остальных процессов.
- Приём "осиротевших" процессов - если родительский процесс завершился раньше своего дочернего.

В старых системах таким процессом были: sysvinit, Upstart. В современных (чаще всего): systemd (проверить можно: ps -p 1 -o comm=).

Если PID 1 завершается -> происходит kernel panic (система зависает или перезагружается).
👍2
📌Вышла уже 4-ая статья из цикла про Docker.

👉Оптимизация образов Docker — одна из задач Devops-инженера. В этой статье описаны некоторые методы, которые вы можете применять для оптимизации своих образов Docker.

👉Разбираю оптимизацию на примере приложений написанных на Python и на Go.
👍2
👉Временные метки файлов в Linux
👍6
Перед новым годом многие обновляют конфигурации 1С, прошивки касс и их драйвера.🥳

Если вы обновили драйвер в системе (например, установили новую версию "Тест драйвера" для кассы АТОЛ), а затем пытаетесь перенастроить подключение к кассовому аппарату в 1С (с использованием новых драйверов), то можете столкнуться с такой ошибкой.

Решение!
Запустите 1С от имени администратора, выполните настройку кассового аппарата. После этого дальнейшая работа возможна уже под обычным пользователем.

💡 Важно
На платформе 8.3.27.1859 может потребоваться запускать именно 1cv8c.exe (тонкий клиент) от имени администратора. В моём случае запуск 1cestart.exe (главного запускателя) с повышенными привилегиями не решал проблему.

📌 Ещё один момент
Следите за совпадением разрядности: драйвер кассового аппарата и платформы 1С должны быть одинаковой архитектуры (32- или 64-битные).
👍3
📌Отличия оперативной памяти UDIMM и RDIMM
👍8
Установка Angie в Docker
#angie #docker
👍3
Всем привет!

Нужна обратная связь. Как вам удобнее читать небольшие заметки:
🔷 в виде карточек (как несколько последних постов)
🔷 в виде текста (как это было раньше)

В Telegram с форматирование текста всё неплохо. Я могу выделять жирным и курсивным важные детали, и могу создавать блоки с кодом.
Например так


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

Проголосуйте пожалуйста ниже.