Подробный гайд: Устранение медленного подключения к 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(отключает многопользовательское переиспользование сокетов, иногда ускоряет повторные подключения).