Сегодня почти любой сервис требует HTTPS. Даже если ресурс локальный или временный, браузеры без сертификата засыпают предупреждениями. Если нет внешнего доступа для Lets Encrypt, приходится копировать сертификаты вручную или постоянно продлевать их.
Гораздо удобнее выпустить свой корневой CA, добавить его в доверенные и генерировать сертификаты под любые домены/IP с любым сроком (хоть на 9999 дней). Покажу, как сделать это для Nginx.
В примере выпускаем сертификат для домена zabbix.internal и IP
192.168.77.55.
mkdir ~/tls && cd ~/tls
openssl ecparam -out myCA.key -name prime256v1 -genkey
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 9999 -out myCA.crt
На вопросы можно отвечать что угодно, это локальный CA.
openssl genrsa -out zabbix.internal.key 2048
openssl req -new -key zabbix.internal.key -out zabbix.internal.csr
mcedit zabbix.internal.ext
Добавляем:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.77.55
DNS.1 = zabbix.internal
openssl x509 -req -in zabbix.internal.csr -CA myCA.crt -CAkey myCA.key \
-CAcreateserial -out zabbix.internal.crt -days 9999 -sha256 -extfile zabbix.internal.ext
mkdir /etc/nginx/certs
cp zabbix.internal.crt /etc/nginx/certs/
cp zabbix.internal.key /etc/nginx/certs/
Создаем DH-параметры:
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
listen 443 http2 ssl;
server_name zabbix.internal 192.168.77.55;
ssl_certificate /etc/nginx/certs/zabbix.internal.crt;
ssl_certificate_key /etc/nginx/certs/zabbix.internal.key;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Перезапуск:
nginx -t
nginx -s reload
Передайте файл myCA.crt на свой ПК и добавьте в хранилище доверенных сертификатов.
Если нужно доверить CA прямо на Debian:
cp myCA.crt /usr/local/share/ca-certificates/
update-ca-certificates
Теперь можно заходить на сайт по доменному имени или IP, браузер будет полностью доверять сертификату.
#webserver
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍3❤1🤡1
Если вы работаете с Ansible, рано или поздно возникает вопрос: куда девать пароли, ключи, токены и прочее? Хранить их в открытом виде в репозитории - явно плохая идея. Для этого существует Ansible Vault - встроенный механизм шифрования файлов и переменных.
Vault позволяет безопасно хранить секреты прямо в плейбуках или отдельных файлах, а ansible будет расшифровывать их при выполнении. Все просто, удобно и без лишних зависимостей.
ansible-vault create secrets.yml
Откроется редактор, куда можно вписать переменные, например:
db_user: admin
db_pass: S3cretP@ss
Файл автоматически сохранится в зашифрованном виде.
ansible-vault edit secrets.yml
ansible-vault decrypt secrets.yml
И обратно:
ansible-vault encrypt secrets.yml
vars_files:
- secrets.yml
А запуск плейбука выглядит так:
ansible-playbook site.yml --ask-vault-pass
ansible-vault encrypt_string 'P@ssw0rd!' --name 'db_pass'
#ansible
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4
Если нужно быстро оценить, как PostgreSQL чувствует себя на разных типах дисков, файловых системах или конфигурациях виртуалок, необязательно глубоко погружаться в тюнинг СУБД. Достаточно воспользоваться встроенной утилитой
pgbench, она идет в комплекте с PostgreSQL и позволяет получить базовые, но показательные метрики.
apt install postgresql
Проверяем работу службы:
systemctl status postgresql
Создаем тестовую базу:
su - postgres
psql
create database test_db;
\q
Инициализируем тестовые данные, увеличив объём в 10 раз:
pgbench -i test_db -s 10
pgbench test_db -c 5 -j 2 -P 5 -T 60
Пример результата:
number of transactions actually processed: 219950
latency average = 1.362 ms
tps = 3665.930847
СУБД обработала 219 950 транзакций со скоростью ~3666 TPS, это и есть показатель, который удобно использовать для сравнения.
По умолчанию запускается смесь операций, напоминающая TPC-B: внутри одной транзакции идут SELECT, UPDATE и INSERT. Можно использовать свои сценарии, создавая кастомные SQL-скрипты. В документации PostgreSQL (в том числе русской) всё подробно описано.
#postgresql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Если вам нужно, чтобы пользователи запускали через RDP не целый рабочий стол, а только определенное приложение, то для этого подойдет режим RemoteApp. Он чаще ассоциируется с серверами windows, но его реально настроить и на обычной win 10/11.
1. Включить RDP-доступ.
2. Установить нужное приложение и добавить пользователя в группу Remote Desktop Users или дать право через политику безопасности.
3. Разрешить запуск неопубликованных программ как RemoteApp: либо через групповые политики, либо через реестр:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v fAllowUnlistedRemotePrograms /t REG_DWORD /d 1
Перезагрузить компьютер.
Если хотите ограничить список доступных приложений, то создайте запись в реестре:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications\<AppName> с указанием пути, иконки и имени. Открываете стандартный RDP-клиент (
mstsc.exe) и настраиваете подключение, затем сохраняете его как файл .RDP. Открываете .RDP в текстовом редакторе и добавляете в конец:
remoteapplicationmode:i:1
RemoteApplicationName:s:Имя_окна
RemoteApplicationProgram:s:"C:\path\to\app.exe"
DisableRemoteAppCheck:i:1
PromptForCredentials:i:0
alternate shell:s:rdpinit.exe
При запуске этого файла на клиенте откроется только окно указанного приложения так, словно оно запускается локально.
Если нужно передать аргументы запуска, можно добавить строку
RemoteApplicationCmdLine:s:....Хотя RemoteApp официально поддерживается на серверах с ролью RDS, этот способ работает и на win 10/11.
При работе через RemoteApp запускается только окно приложения, рабочий стол пользователя остается недоступен. Это удобно, если нужно предоставить доступ к одной программе, не раскрывая систему целиком.
Для работы может потребоваться RDP Wrapper или другие обходы, если Windows пытается ограничить одновременные сеансы.
#windows #remoteapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥8
rsync до сих пор остается самым простым и быстрым инструментом для резервного копирования с нескольких и более серверов. А если обернуть его в ansible, можно получить полностью автоматизированную и воспроизводимую систему бэкапов, без ручных скриптов и кронов вразнобой.Ansible будет отвечать за логику: какие хосты, какие директории, куда складывать.
rsync за быструю передачу файлов.
backup/
├── inventory
├── playbook.yml
└── vars.yml
vars.yml
backup_src: "/var/www"
backup_dest: "/backups/{{ inventory_hostname }}/"
playbook.yml
- hosts: all
become: yes
vars_files:
- vars.yml
tasks:
- name: Создать директорию для бэкапов
file:
path: "{{ backup_dest }}"
state: directory
recurse: yes
- name: Rsync данных
synchronize:
src: "{{ backup_src }}/"
dest: "{{ backup_dest }}"
archive: yes
compress: yes
delete: no
synchronize - это модуль ansible, который под капотом использует rsync.
0 3 * * * ansible-playbook /opt/backup/playbook.yml
Теперь в 03:00 ночи ansible пройдет по инвентарю и снимет инкрементальные копии со всех серверов.
единая логика бэкапов;
легко масштабировать на новые сервера;
rsync быстро переносит только измененные файлы.
#ansible #backup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2
Есть в bash одна малозаметная, но крайне удобная функция, о которой знают далеко не все. Она помогает сохранить длинную команду в истории без ее выполнения. Отлично подходит для случаев, когда вы передумали запускать команду, но хотите оставить ее на потом.
Вы набираете длинную строку в консоли, но понимаете, что сейчас выполнять ее не нужно. Вместо того чтобы копировать ее куда-то в файл, используйте простую комбинацию:
Alt + Shift + 3После нажатия bash автоматически добавит символ # в начало строки. Команда будет выполнена как комментарий: фактически не запускается, потому что закомментирована, но при этом сохраняется в history вместе с #.
Открываете поиск по истории (
Ctrl + R) и просто ищете по #, нужная команда окажется первой.Маленькая фича, но иногда очень ускоряет работу.
#bash
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍5❤1
Во многих файловых системах linux есть один механизм - атрибут
immutable. Если установить его на файл или директорию, они становятся неизменяемыми: нельзя удалить, переименовать, записать, изменить права. Только root может установить и снять этот флаг.Допустим, у вас есть директория
/data/upload, куда разные сервисы записывают загружаемые файлы. Иногда часть приложений падает, начинает зацикливаться или выстреливает в ногу и создает сотни временных файлов, заполняя весь диск. Чтобы защититься от такого поведения, можно сделать директорию незаписываемой до тех пор, пока ее вручную не разблокируют администраторы.Блокируем запись:
chattr +i /data/upload
Теперь попытка записи провалится:
echo test > /data/upload/test.txt
bash: /data/upload/test.txt: Operation not permitted
Разблокируем:
chattr -i /data/upload
echo test > /data/upload/test.txt # теперь работает
Проверить наличие бита:
lsattr -a /data/upload
----i---------e------- /data/upload/.
sshd_config:
chattr +i /etc/ssh/sshd_config
Можно защитить
/etc/fstab, /boot/grub/grub.cfg или любые конфиги, которые менять должен только админ./etc/shadow полностью остановит любые попытки смены пароля:
chattr +i /etc/shadow
passwd root # не сработает
обновления системы могут ломаться, если immutable стоит на системных файлах;
для root это единственный простой пример, когда он не может удалить файл - хорошая загадка на собесах
#linux #filesystem
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4
В linux часто копится мусор: временные файлы, старые логи, кэш сервисов. Многие чистят это вручную или пишут свои крон-скрипты. Но в современных дистрибутивах есть встроенный механизм -
systemd-tmpfiles. Он автоматически создает, удаляет и очищает файлы и каталоги по заданным правилам./usr/lib/tmpfiles.d/, /run/tmpfiles.d/ и /etc/tmpfiles.d/.Через них можно:
очищать каталоги по времени (30 дней, 12 часов и т.п.);
ограничивать размер директорий;
автоматически создавать нужные файлы с правами и владельцами;
удалять мусор после перезагрузки;
управлять содержимым
/tmp, /var/tmp, /var/log и любых других путей.Создадим конфиг:
/etc/tmpfiles.d/cleanup.conf
И добавим правило:
# Удалять файлы старше 14 дней
D /var/tmp/mycache 0755 root root 14d
Типы команд:
D - очистка каталога, не удаляя его самого;
d - удалить и пересоздать;
R - рекурсивная очистка.
После применения правила:
systemd-tmpfiles --clean
Можно запускать вручную или ждать автоматического выполнения таймером systemd.
/tmp. В большинстве дистрибутивов это уже настроено, но можно задать свои параметры:
d /tmp 1777 root root 7d
Файлы старше 7 дней будут удалены.
q /var/cache/nginx 500M
Тип q ограничивает каталог 500 мегабайтами, старые файлы будут удаляться первыми.
systemd-tmpfiles --verify
#linux #files
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤4
Если вам нужен простой и удобный способ управлять linux-сервером через браузер, то посмотрите в сторону Ajenti. Это не такой мощный гигант, как Webmin, и не такой корпоративный инструмент, как Cockpit, но у него есть свои сильные стороны, которые делают панель отличным выбором для небольших серверов и бытовых задач.
Ajenti - легкая, минималистичная веб-панель, написанная на Python. Ее возможности закрывают базовые потребности администратора: просмотр логов, управление службами, настройка сети, работа с файлами и пользователями. Функциональность можно расширять через плагины, устанавливаемые прямо из интерфейса.
2FA по TOTP - удобно и повышает безопасность без лишних танцев.
Аутентификация по сертификатам - для тех, кто любит строгий контроль доступа.
Настраиваемые дашборды - можно собрать себе вкладки с нужными виджетами и даже запускать скрипты в один клик.
Файловый менеджер - простой и удобный, без перегрузов.
Русский язык - панель дружелюбна для тех, кто не хочет копаться в английских меню.
Адаптивный интерфейс - можно зайти с телефона и быстро поправить нужный сервис.
curl https://raw.githubusercontent.com/ajenti/ajenti/master/scripts/install-venv.sh | bash -s -
Скрипт автоматически определяет ваш дистрибутив, ставит зависимости, устанавливает Ajenti через pip и создаёт systemd-службу.
После установки заходите на
http://<IP>:8000, логинитесь под root и сразу генерируете самоподписанный сертификат, включив работу по HTTPS.#linux #ajenti
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤6👍3
SSH на 22-м порту - это первая цель для ботов и сканеров. Даже если вы используете сложный пароль или ключи, сервер всё равно получает тысячи попыток входа. Но есть способ исчезнуть, не ставя VPN и не играясь с Fail2Ban, это Port Knocking.
Это техника, при которой порт SSH по умолчанию закрыт, а открывается только после правильной последовательности простуков - попыток подключения к заранее выбранным портам.
Все внешние порты закрыты.
Админ отправляет секретную последовательность: например, попытки подключения к портам 7001 → 5022 → 2345.
Firewall фиксирует эту последовательность и открывает доступ к порту 22 только для вашего IP.
После таймаута порт снова закрывается.
Для сканера сервер выглядит мертвым: никакого SSH, никакого 22 порта, ноль шансов на брутфорс.
apt install knockd
Конфиг /etc/knockd.conf:
[openSSH]
sequence = 7001,5022,2345
seq_timeout = 10
command = firewall-cmd --add-rich-rule='rule family="ipv4" source address="%IP%" port protocol="tcp" port="22" accept'
tcpflags = syn
[closeSSH]
sequence = 2345,5022,7001
seq_timeout = 10
command = firewall-cmd --remove-rich-rule='rule family="ipv4" source address="%IP%" port protocol="tcp" port="22" accept'
tcpflags = syn
Включаем сервис:
systemctl enable --now knockd
Открыть SSH:
knock server.ip 7001 5022 2345
Закрыть обратно:
knock server.ip 2345 5022 7001
Теперь можно заходить:
ssh user@server.ip
#linux #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29❤12
🔧 Для системных администраторов и IT-специалистов!
Ищете надежный источник знаний и поддержки? Тогда вам к нам!
📚 Что у нас есть:
- Книги по Cisco Systems, Mikrotik, VoIP, Linux и Windows Server
- Руководства по сетевым технологиям
- 📽 Видеоуроки на актуальные темы
- 🤝 Поддержка от сообщества
Присоединяйтесь к нашему сообществу профессионалов: @sysadmin1
Ищете надежный источник знаний и поддержки? Тогда вам к нам!
📚 Что у нас есть:
- Книги по Cisco Systems, Mikrotik, VoIP, Linux и Windows Server
- Руководства по сетевым технологиям
- 📽 Видеоуроки на актуальные темы
- 🤝 Поддержка от сообщества
Присоединяйтесь к нашему сообществу профессионалов: @sysadmin1
👍4
Есть одна старая, но очень полезная фишка терминала, про которую многие либо не знают, либо вспоминают слишком поздно.
Ситуация знакомая: в bash запущен процесс, который постоянно пишет в stdout. Экран бесконечно обновляется, строки летят вниз, а вам нужно прочитать сообщение об ошибке, которое уже убежало вверх. Пытаетесь прокрутить терминал и каждый раз его тут же возвращает в самый низ. Раздражает.
tail -f /var/log/nginx/access.log
С tail это не критично, его можно просто остановить. Но есть куда более неприятные сценарии. Например, вы запустили Docker-контейнер не в -d, он активно пишет логи, где-то мелькнула ошибка, а остановить процесс нельзя - контейнер завершится. То же самое при сборке Dockerfile, запуске большого docker-compose или долгом скрипте с подробным выводом.
Ctrl + S - ставит вывод терминала на паузу. Новые строки перестают появляться, и вы спокойно можете прокрутить экран вверх и прочитать нужное место.Ctrl + Q - возвращает терминал в обычный режим, вывод продолжается.Это не фича bash, а управление потоком вывода (XON/XOFF), которое работает почти в любом терминале.
Маленькая комбинация клавиш, которая закрывает реально раздражающую проблему и заметно упрощает жизнь в консоли.
#linux #terminal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15⚡4❤2🔥2😱1
В современных дистрибутивах пингвина все системные логи по умолчанию собирает
systemd-journald. Вместо десятков файлов в /var/log вы получаете единый журнал, с которым удобно работать через journalctl. Если сервер ведет себя странно, это первое место, куда стоит смотреть.
journalctl
Покажет весь журнал, начиная с самых старых записей. Для удобства почти всегда используют пейджер с прокруткой.
journalctl -b
Полезно после падения или перезагрузки сервера.
journalctl -b -1
Позволяет понять, что пошло не так до ребута.
journalctl -u nginx
journalctl -u ssh
Можно сразу увидеть ошибки запуска, рестарты и падения.
journalctl --since "2026-01-22 10:00" --until "2026-01-22 10:30"
journalctl -u docker -f
journalctl -p err
journalctl -p warning
Можно комбинировать с
-b и -u.
journalctl _PID=1234
journalctl _COMM=sshd
mkdir -p /var/log/journal
systemctl restart systemd-journald
#systemd #journalctl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23
Когда в сети появляется больше одного маршрутизатора, статические маршруты быстро превращаются в боль. Даже в небольших инфраструктурах нужен динамический роутинг. Здесь выручает FRRouting (FRR) - open-source стек маршрутизации для линукс.
FRRouting - это набор демонов маршрутизации, который превращает обычный линукс-сервер в полноценный маршрутизатор. Используется не только энтузиастами, но и в продакшене у провайдеров и дата-центров.
Поддерживаемые протоколы:
OSPFv2 / OSPFv3
BGP
IS-IS
RIP
static routing
VRF
Для небольших сетей чаще всего интересны именно OSPF и BGP.
работает на обычном линукс без спецжелеза;
конфигурация похожа на cisco (vtysh);
можно автоматизировать через ansible;
легко интегрируется с iptables/nftables и policy routing;
отлично подходит для виртуалок и VPN-туннелей.
apt install frr
vtysh
Минимальная настройка:
configure terminal
router ospf
network 10.0.0.0/24 area 0
exit
write
После этого маршрутизаторы начнут автоматически обмениваться маршрутами внутри зоны.
для мультихоминга;
в VPN.
Пример:
router bgp 65001
neighbor 10.0.0.2 remote-as 65002
network 192.168.100.0/24
exit
небольшие офисы и филиалы;
VPN на WireGuard/IPsec;
тестовые стенды;
self-hosted инфраструктура без дорогих маршрутизаторов.
FRR хороший способ понять и использовать динамическую маршрутизацию без cisco, juniper и железных коробок. Для малых и средних сетей его возможностей более чем достаточно.
#networking #frr
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4
В Linux есть простой и почти забытый механизм ограничения сетевого доступа к сервисам - TCP Wrappers. Сегодня его используют редко, потому что он сильно уступает по гибкости
iptables и nftables, но инструмент до сих пор работает и иногда может быть полезен. Основан он на библиотеке libwrap и действует на уровне приложений, которые ее поддерживают.Суть проста: доступ контролируется через два файла:
/etc/hosts.allow и /etc/hosts.deny.Для этого в /
etc/hosts.allow добавляем:
sshd : 10.10.0.0/24
sshd : 172.16.50.0/24
А в
/etc/hosts.deny:
sshd : ALL
После этого подключение по SSH будет возможно только из указанных сетей. Никакие службы перезапускать не нужно, правила применяются сразу. Если кто-то попытается подключиться извне, в логах SSH появится запись:
journalctl -u ssh -n 10
sshd[814]: refused connect from 172.31.8.45 (172.31.8.45)
Можно дополнительно логировать все заблокированные подключения:
sshd : ALL \
: spawn /usr/bin/echo "$(/bin/date +"%%d-%%m-%%y %%T") SSH access blocked from %h" >> /var/log/libwrap
В итоге в
/var/log/libwrap появится понятная запись:
21-01-26 10:03:05 SSH access blocked from 172.31.8.45
Важно: сервис обязан поддерживать libwrap. Проверить это можно так:
ldd /usr/sbin/sshd | grep libwrap
Очевидно, что полноценный файрвол будет более надежным решением. Но TCP Wrappers могут быть полезны в простых сценариях, как дополнительный уровень защиты или страховка на случай ошибки в правилах файрвола. Полезно хотя бы знать, что такой механизм существует и как он работает.
#linux #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥3⚡1
Раньше в linux было несколько классических способов перезагрузки системы:
shutdown -r, reboot, halt. Сейчас вся эта разница по сути исчезла: в современных дистрибутивах всем управляет systemd.Если посмотреть внимательнее, окажется, что привычные команды - это всего лишь обертки:
whereis reboot
ls -la /usr/sbin/reboot
и аналогично для shutdown. В итоге обе команды являются символьными ссылками на
/bin/systemctl. То есть не важно, что именно вы набрали - reboot, shutdown -r или systemctl reboot - запрос все равно уйдет в systemd.Иногда можно встретить рекомендации перезагружать сервер именно так:
systemctl reboot
Но на практике обычный ребут делает ровно то же самое, просто быстрее набирается.
Возникает логичный вопрос: как systemctl понимает, что от него хотят - перезагрузку или выключение, если бинарник один и тот же? Все просто: при запуске программа знает имя, под которым ее вызвали. Это стандартный механизм execve. Например, в shell имя команды доступно через
$0. Внутри systemctl есть проверка, которая определяет, был ли вызов через reboot, shutdown или напрямую.Кроме привычных команд, перезагрузку можно инициировать и через цели systemd:
systemctl start reboot.target
systemctl start ctrl-alt-del.target
По сути, эффект будет тем же самым, просто разными путями.
И важный момент напоследок. Все эти способы все равно требуют запуска бинарника с диска. Если файловая система повреждена и systemctl не может выполниться, система может зависнуть и не перезагрузиться. В таком случае остаётся крайний вариант - обратиться напрямую к ядру:
echo b > /proc/sysrq-trigger
Это эквивалент жесткого нажатия кнопки reset: без graceful shutdown, но зато работает даже в самых тяжелых ситуациях.
#systemd #reboot
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5
SMB/CIFS - это один из самых популярных протоколов для файловых шар в локальных сетях. По умолчанию он далеко не всегда работает быстро. Часто жалобы на медленную работу сетевых папок связаны не с дисками или сетью, а с настройками.
Первое, на что стоит обратить внимание: версия протокола. SMB1 давно устарел и медленный, к тому же небезопасный. В современных системах стоит использовать SMB2 или SMB3. На samba это явно задается параметрами
server min protocol = SMB2 и server max protocol = SMB3.Второй момент: размеры буферов и асинхронный ввод-вывод. В samba полезно включать:
aio read size и aio write sizesocket 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2