Подробный гайд: Устранение медленного подключения к SMB/CIFS в ALT Linux

Устранение медленного подключения к SMB-шарам в ALT Linux: настройка DNS, фиксация версии протокола, оптимизация, отключение IPv6 для ускорения сетевых папок.

2026.05.12                  


Подробный гайд: Устранение медленного подключения к SMB/CIFS в ALT LinuxПодробный гайд: Устранение медленного подключения к SMB/CIFS в ALT Linux

Медленное монтирование или зависание при обращении к сетевым папкам SMB в ALT Linux обычно вызвано одной из следующих причин:

  • длительным ожиданием DNS/mDNS, согласованием версий протокола, неоптимальными параметрами mount.cifs или фолбэком на IPv6. Ниже приведён пошаговый метод диагностики и оптимизации, адаптированный под особенности ALT Linux (systemd, apt-rpm, стандартные пути).

Подготовка

1. Убедитесь, что установлены актуальные пакеты:
   sudo apt-get update
   sudo apt-get install cifs-utils samba-client
2. Проверьте версию cifs-utils (рекомендуется >= 6.11):
   mount.cifs -V
3. Убедитесь, что сетевой интерфейс активен и маршрут к серверу доступен:
   ping -c 3 <IP_или_имя_SMB_сервера>

Шаг 1: Диагностика скорости подключения

Измерьте реальное время монтирования и проверьте логи:

# Тест скорости подключения (замените параметры на свои)
time sudo mount -t cifs //server/share /mnt/smb -o username=user,password=pass,vers=3.0

# Логи ядра и CIFS
dmesg | grep -i cifs | tail -n 20
journalctl -k --grep="cifs\|smb" --since "5 min ago"

# Логи Samba (если есть клиентские службы)
journalctl -u smbd -u nmbd -u winbind --since "5 min ago"

Что искать:

- CIFS VFS: cifs_mount failed
- DNS resolution took X seconds
- negotiated SMB2/SMB3
- connection timed out

Шаг 2: Оптимизация DNS и разрешения имён

SMB-клиент часто тратит 5–15 секунд на попытки разрешения имени через mDNS/WINS/DNS.

2.1 Проверка порядка разрешения
cat /etc/nsswitch.conf | grep hosts
Рекомендуемый порядок:
hosts:      files dns myhostname

Если присутствует mdns4, mdns4_minimal или wins – уберите их или закомментируйте. Это часто добавляет задержку в 3–10 сек.

2.2 Явное использование IP или /etc/hosts

Вместо имени сервера используйте IP в командах монтирования.

Если нужно имя – пропишите в /etc/hosts:
192.168.1.100  fileserver fileserver.local

Шаг 3: Принудительное указание версии SMB

Автоматическое согласование версий (SMB1 -> SMB2 -> SMB3) вызывает задержки и небезопасно.

3.1 В опциях монтирования

Добавьте vers=3.0 или vers=3.1.1:

sudo mount -t cifs //server/share /mnt/smb \
  -o username=user,password=pass,vers=3.0,sec=ntlmssp
3.2 Глобально для smbclient и системных вызовов
В /etc/samba/smb.conf (клиентская секция [global]):
[global]
client min protocol = SMB2
client max protocol = SMB3
Применить:
sudo systemctl restart smbd nmbd

(если службы активны).


Шаг 4: Оптимизация опций монтирования CIFS

Параметры в fstab или при ручном монтировании напрямую влияют на производительность и время подключения.

Пример строки /etc/fstab

//server/share /mnt/smb cifs credentials=/etc/samba/creds,vers=3.0,sec=ntlmssp,_netdev,iocharset=utf8,file_mode=0644,dir_mode=0755,cache=strict,actimeo=1,nofail 0 0
Параметр Назначение
vers=3.0 Фиксирует протокол, убирает этап согласования
sec=ntlmssp Стандартный метод аутентификации для Windows/Samba (избегайте sec=ntlm или sec=plaintext)
_netdev Говорит systemd, что это сетевая ФС (не блокирует загрузку)
cache=strict Корректная кэш-когерентность для SMB3
actimeo=1 Обновляет метаданные раз в секунду (баланс скорость/актуальность)
nofail Не останавливает загрузку при недоступности шары

Файл учётных данных (/etc/samba/creds):

username=youruser
password=yourpass
domain=WORKGROUP

Права:

sudo chmod 600 /etc/samba/creds

Шаг 5: Сетевые настройки и IPv6

Если DNS отдаёт IPv6-адрес, а сервер отвечает только по IPv4, ядро ждёт таймаута фолбэка (~5 сек).

5.1 Отключение IPv6 на уровне интерфейса (если не используется)
sudo sysctl -w net.ipv6.conf.<interface>.disable_ipv6=1
# Для персистентности:
echo "net.ipv6.conf.<interface>.disable_ipv6=1" | sudo tee -a /etc/sysctl.d/99-disable-ipv6.conf
5.2 Приоритет IPv4 в NetworkManager
nmcli connection modify <connection-name> ipv6.method ignore
nmcli connection up <connection-name>

Шаг 6: Настройка smb.conf (дополнительно)

Если используется домен Active Directory или сложная аутентификация, задержки часто вызваны Kerberos/LDAP-запросами.

В /etc/samba/smb.conf:
[global]
name resolve order = bcast host
dns proxy = no
local master = no
preferred master = no
Перезапустите службы:
sudo systemctl restart smbd nmbd winbind
Если в домене:

проверьте синхронизацию времени (chronyc tracking), расхождение >5 мин ломает Kerberos и вызывает многократные ретраи.


Шаг 7: Проверка и мониторинг

После применения настроек:
# Принудительно перечитать fstab
sudo mount -a

# Проверить активные монтирования
mount | grep cifs

# Тест скорости чтения/записи
dd if=/dev/zero of=/mnt/smb/testfile bs=1M count=100 oflag=direct
dd if=/mnt/smb/testfile of=/dev/null bs=1M count=100 iflag=direct
rm /mnt/smb/testfile

Ожидаемое время подключения: < 2 сек. Задержки >5 сек указывают на проблемы с сетью, аутентификацией или DNS.


Чек-лист быстрых решений

Симптом Вероятная причина Решение
Зависание на 10–30 сек при mount DNS/mDNS фолбэк Убрать mdns4 из nsswitch.conf, использовать IP
CIFS VFS: Error connecting to socket Порт 445 закрыт или IPv6 таймаут Проверить telnet <IP> 445, отключить IPv6
Медленное копирование, но быстрое подключение Кэш/опции монтирования Добавить cache=strict,actimeo=1,rsize=131072,wsize=131072
Ошибка Permission denied или Bad file descriptor sec= не совпадает с сервером Попробовать sec=ntlmssp или sec=krb5 (для AD)
Загрузка системы виснет на Mounting network filesystems Отсутствует _netdev в fstab Добавить _netdev,nofail

Важные замечания по безопасности

  • Не используйте vers=1.0 (SMB1) – протокол устарел, уязвим к WannaCry, отключён по умолчанию в современных ядрах и Windows 10/11.
  • Храните пароли только в файлах с chmod 600, не в fstab.
  • В ALT Linux по умолчанию может быть активен SELinux. Проверьте статус: getenforce. Если Enforcing и есть ошибки в /var/log/audit/audit.log, используйте audit2allow или временно переключите в Permissive для диагностики.

Дополнительно

  • Документация mount.cifs: man mount.cifs
  • Отладочный вывод монтирования: sudo mount.cifs //server/share /mnt/smb -o debug,username=user,vers=3.0
  • Если сервер находится в другой подсети: добавьте nosharesock (отключает многопользовательское переиспользование сокетов, иногда ускоряет повторные подключения).