Доступ к общему ресурсу Windows 10 через Ubuntu / CIFS через OpenVPN

461
Mtl Dev

Цель: получить доступ к общим файловым ресурсам Windows 10 из Linux через VPN.

В этом контексте: «сервер» - это простая машина с Windows 10, а «клиент» - это Ubuntu 18.

У меня есть настройка туннеля OpenVPN, соединение кажется хорошим, я могу подключиться, проверить связь с сервером, portcan выдаст правильные результаты, и я могу вручную установить соединение telnet с портом 135.

Я пытаюсь смонтировать папку на linux, в общую папку Windows, используя CIFS, то, что я делал много раз раньше - но не на этой конкретной машине с Windows, правда.

Я эффективно использую: mount -t cifs //server/share /mnt/shareно результат всегда:

mount: / mnt / share: mount (2) системный вызов не выполнен: соединение отклонено.

dmesg / syslog show:

CIFS VFS: Ошибка подключения к сокету. Отмена операции.
CIFS VFS: сбой cifs_mount с кодом возврата = -111

Я перепробовал почти все флаги CIFS, которые я могу придумать, включая все параметры безопасности. Фактическая текущая команда, которую я использую:
sudo mount -v -t cifs -o vers=3.1.1,username=myuser,pass=mypass,servern=WINDESKTOP,sec=ntlmssp //10.8.0.1/share /mnt/share

Брандмауэр Windows выключен, на долю и папки, иметь полные права доступа к учетной записи пользователя, я пытаюсь использовать, а также guest, anonymous login.

Я установил FTP-сервер на сервер только для тройной проверки подключения, работает найти.

Почему не подключается CIFS? Есть ли способ на сервере Windows, чтобы увидеть, что именно он делает с подключением? И / или есть ли в любом случае получить больший отладочный вывод из CIFS в Ubuntu?

Edit: PortScan показывает следующие открытые порты:
nmap -Pn <host>

СЛУЖБА СОСТОЯНИЯ ПОРТА
135 / tcp open msrpc
554 / tcp open rtsp
2869 / tcp open icslap
10243 / tcp open unknown

Обновление / Решение:

Проблема и обходной путь были найдены. Ответ ниже от @grawity предупреждает о том, что сервер не прослушивает порт 445. Проблема не имеет ничего общего с OpenVPN или linux / CIFS.

  1. Отмечено, что служба сервера smb не прослушивает порт 445, это означает, что ms_serverкомпонент не работает.
  2. ms_server является службой SMB-сервера, она включается / отключается путем установки следующего флажка в сетевых настройках устройства: File and Printer Sharing for Microsoft Networks.
  3. В этом случае флажок уже был установлен. Снятие и повторная проверка устраняет проблему, сервер прослушивает порт 445, и общий доступ к файлам работает. Но только временно, до следующей перезагрузки.
  4. Вся эта проблема является известной проблемой Windows 10, вызванной относительно недавним обновлением Windows
  5. Я не смог найти чистое решение или реальный патч к актуальной проблеме.
  6. Одним из краткосрочных обходных путей является создание небольшого сценария, который эффективно «снимает флажки и ставит флажки» и запускается при входе пользователя в систему.

Команды powershell для решения этой проблемы:
Disable-NetAdapterBinding -Name "MyVPN" -ComponentID ms_server
Enable-NetAdapterBinding -Name "MyVPN" -ComponentID ms_server

0

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

1
grawity

Я могу вручную установить соединение telnet с портом 135.

Это не правильный порт (это порт RPC-EPMAP). SMB работает на TCP-порту  445 .

(Вы также можете увидеть порт 139 для совместимости со старыми клиентами до Win2000, которые поддерживают только SMB-over-NetBIOS. Этим клиентам также потребуются службы дейтаграмм NetBIOS по UDP 137–138.)

mount: / mnt / share: mount (2) системный вызов не выполнен: соединение отказано
CIFS VFS: ошибка подключения к сокету. Отмена операции.
CIFS VFS: сбой cifs_mount с кодом возврата = -111

«Отказ в соединении» означает, что клиент получил TCP RST в ответ на попытку установления связи, что обычно означает, что сервер не прослушивает этот порт TCP или что брандмауэр подделывает RST, чтобы заблокировать соединение.

Обычно это не касается версий протокола или параметров безопасности, которые согласовываются только после установления TCP-соединения.

Брандмауэр Windows отключен

Зачем?

Брандмауэр Windows настраивается: если вы хотите разрешить протокол через него, вы можете создать правило, разрешающее этот протокол. (Или просто включите предопределенное правило, когда речь идет о разрешении SMB или ICMP.)

Есть ли способ на сервере Windows, чтобы увидеть, что именно он делает с подключением? И / или есть ли в любом случае получить больший отладочный вывод из CIFS в Ubuntu?

Установите инструмент для захвата пакетов, такой как Wireshark; начать захват tun0или переходник OpenVPN TAP; Посмотрим, что происходит непосредственно перед созданием TCP RST.

Обратите внимание на то, видят ли обе стороны одни и те же пакеты, например, если клиент действительно получает TCP RST, сервер показывает, что он отправил один?

1) Ах! Я понимаю, что SMBv1 работает на портах 135..139, знаю, что знаю, что SMBv2 + работает на порте 445 .... сканирование портов (см. Вопрос «Изменить», показывающий, что сервер * не * прослушивает порт 445). . по крайней мере не на VPN IP .. Я думаю, это проблема для расследования ...) Mtl Dev 5 лет назад 0
2) Брандмауэр Windows просто временно отключился во время тестирования, чтобы устранить его как возможную причину. Mtl Dev 5 лет назад 0
И SMBv1 (он же CIFS), и SMBv2 + используют один и тот же транспорт: TCP / 445 для современных систем или TCP / 139 для старых систем, использующих NetBIOS. Другие порты на самом деле не SMB: TCP / 135 - это MS-RPC, а UDP / 137-138 - это разные службы NetBIOS. grawity 5 лет назад 0
То, что показывает nmap, в точности совпадает с тем, что говорит модуль cifs. Он не может удаленно получить какую-либо дополнительную информацию и не знает, «прослушивает» ли порт - все, что он видит, - принял ли порт попытку подключения. Таким образом, вам действительно нужно проверять сам сервер и / или маршрутизаторы маршрутизатора. grawity 5 лет назад 0
Хорошо спасибо! Сервер прослушивает (`netstat -an`) 445 на своем обычном IP, но 445 не открыт на своем VPN IP. Проявление этого: если я вхожу, на сервере Windows, `\\ serverIP` или` \\ 127.0.0.1`, я могу видеть общие ресурсы просто отлично, но если я ввожу `\\ serverVPNip \`, я не вижу общие ресурсы, время вышло Mtl Dev 5 лет назад 1
На самом деле, что касается вашей системы, вы правы: SMBv2 + не использует никаких служб NetBIOS и, следовательно, нуждается только в TCP / 445. (SMBv1 может использовать либо TCP / 445, либо TCP / 139 в зависимости от системы.) grawity 5 лет назад 0
Итак, основываясь на результатах nmap, мы можем сказать 100%, что порт 445 не прослушивает сервер? Поскольку в пути нет брандмауэров, проблема должна быть следующей: общий доступ к файлам Windows как-то отключен для сетевого устройства TAP? Звучит ли это разумным выводом? Mtl Dev 5 лет назад 0
Нет, но, основываясь на результатах _netstat -an_ на самом сервере, вы можете сказать, что он не прослушивает этот порт (по крайней мере, не по правильному адресу). Протокол, вероятно, отключен в окне «Свойства» сетевого адаптера. grawity 5 лет назад 0
Да, хорошее предложение, это было одним из первых, что я проверил. Я нашел [следующую статью] (https://social.technet.microsoft.com/Forums/en-US/17ad2cbb-a98b-4da4-b122-9489980024bc/smbv2-not-listening-on-port-445?forum = win10itpronetworking) Какое решение в основном заключается в том, чтобы «снять отметку с совместного использования файлов», закройте и перепроверьте его. Mtl Dev 5 лет назад 0
Так что теперь он работает, слушает на 445. Решение: согласно справке Microsoft: снимите флажок и перепроверьте обмен файлами (!). Это исправление не переносит перезагрузку, я буду работать над этим, как пост обратно. Ваш ответ помог мне указать, что порт 445 не открыт, и когда я вернусь с исправлением reboot-Survival Fix, пожалуйста, не стесняйтесь объединить в один ответ, чтобы я мог принять. Mtl Dev 5 лет назад 0
Спасибо, если вы можете рассмотреть решение, включенное в вопрос. Возможно, для следующего пользователя вы захотите расширить ответ с помощью "" сервер не прослушивает порт 445. Убедитесь, что установлен флажок "Общий доступ к файлам и принтерам ...". Если уже проверено, то снимите флажок и перепроверьте его "". Кроме того, по вашему опыту, уровень, как вы думаете, я должен удалить все ссылки на openvpn / linux из вопроса, чтобы избежать красных селедок? Mtl Dev 5 лет назад 0