Linux CIFS по умолчанию устанавливает версию CIFS до 3.0
Я использую 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
Я перепутал варианты с перезагрузками, но безрезультатно.
1 ответ
Я понимаю, что это довольно давно, но меня привели сюда в поисках того же самого: использование veeam (бесплатный агент для linux 4.0) в Ubuntu 16.04 для резервного копирования на современный общий ресурс SMB, размещенный на Windows Server 2016. То же, что и OP, конфигурация не выполнялась с помощью мастера veeam, а также когда я тестировал команду монтирования, однако добавление "vers=3.02" к команде монтирования работает (как и ожидалось).
Это расстраивало, потому что мои машины 18.04 подключаются нормально, и при чтении кажется, что в более новых версиях cifs-utils по умолчанию установлен SMB3.
Однако я нашел решение. Я попытался найти скрипт монтирования, который использовал veeam, но они не используют никаких традиционных типов скриптов, которые вы могли бы редактировать. Я решил попробовать добавить опцию "vers=3.02" в одно из полей мастера настройки smb, предполагая, что он просто принимает мои данные и формирует команду монтирования, и это сработало! Я добавил его сразу после имени пользователя, например, "enter_username, vers = 3.02".
Для данного 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