Linux CIFS по умолчанию устанавливает версию CIFS до 3.0

3686
Steven4x4

Я использую Ubuntu Server 16.04.3 LTS 64-Bit с установленным cifs-utils в качестве виртуальной машины на гипервизоре VMWare ESXi 6.5.

У меня есть обычная настройка общего сетевого ресурса на Windows Server 2016.

Цель - использовать Veeam Linux Agent для резервного копирования этой виртуальной машины Linux на общий ресурс Windows через CIFS.

Эта проблема:

Когда я настраиваю Veeam для использования CIFS, (просматривая логи) Veeam выполняет эту команду для подключения к сетевой папке:

mount -t cifs -o username=MyUsername,password=*,rw,soft //MyServerIP/MyShare /tmp/veeam/MyServerIPMyShare 

Это дает мне ошибку: ошибка монтирования (112): Хост не работает.

Когда я запускаю команду вручную, она делает то же самое.

Однако, когда я запускаю команду так:

mount -t cifs -o vers=3.0,username=MyUsername,password=*,rw,soft //MyServerIP/MyShare /tmp/veeam/MyServerIPMyShare 

Он монтируется без проблем, если я использую 2.0.

Проблема в том, что в Veeam нет возможности форсировать версию 3.0. Итак, я должен быть в состоянии заставить это в Linux каким-то образом.

Я видел, что другие тоже сталкивались с этой проблемой, но решение не было представлено.

Я попытался сделать следующее (основываясь на том, что нашел):

Добавлены следующие строки в /etc/samba/smb.conf

server min protocol = SMB2 server max protocol = SMB3 client min protocol = SMB2 client max protocol = SMB3 min protocol = SMB2 max protocol = SMB3 client ipc min protocol = SMB2 

Я перепутал варианты с перезагрузками, но безрезультатно.

2

1 ответ на вопрос

0
stevek_mcc

Для данной mount.cifsверсии я не знаю другого способа, кроме добавления vers=3.0в командную строку (или в /etc/fstab). mount.cifsВодитель игнорирует smb.conf. Исторически сложилось так, что он mount.cifsне мог автоматически договориться, и просто попробовал одну версию протокола - 1.0 до июля 2017 года и 3.0 после этого . (Июль 2017 г. является датой изменения кода на cifs 4.13, а не в том, что более ранние версии смотрели эту дату во время выполнения!) С сентября 2017 г. похоже, что он может автоматически согласовывать, по умолчанию он равен 2.1 или более поздней (независимо от того, что максимальное сервер может предложить).

Таким образом, если вы сможете обновить свою версию cifs, вы сможете получить другую результирующую версию протокола, даже не указав ее явно.

Ниже показано соответствие версий протокола mount.cifs, smb.conf и Windows: версия
= 3.0 - это SMB3, то есть Windows 8, Windows Server 2012 версия
= 2.1 - это SMB2_10, то есть Windows 7, Windows Server 2008 R2
версия = 2.0 - это SMB2_02, то есть Vista SP1 Windows Server 2008 версии
= 1.0 - это NT1, т.е. Windows 95, NT 4.0

Важно, что «обновить вашу версию cifs» означает установить новую версию ядра с новым модулем cifs.ko - _не_ пакетом cifs-utils или инструментом mount.cifs. (Также не забудьте версию = 3.1 для Windows 10.) grawity 5 лет назад 1
@grawity - Также важно, что вам нужен соответствующий файл mount.cifs для вашего нового ядра. Без этого вы не можете передать некоторые из новых опций (или новые значения для существующих опций). Michael Kohne 5 лет назад 0