При подключении с помощью Samba к общему ресурсу Windows возвращается сообщение «NT_STATUS_DUPLICATE_NAME»

10

Я установил общий каталог на моей машине с Windows и дал полный доступ к username @ workgroup.

Когда я пытаюсь подключиться к машине Windows с Linux с помощью smbclient, я получаю сообщение об ошибке NT_STATUS_DUPLICATE_NAME. Вот стенограмма:

$ smbclient -U username -W workgroup -L //windows-machine
Enter username's password: 
Domain=[workgroup] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
tree connect failed: NT_STATUS_DUPLICATE_NAME

Если я намеренно ввести неправильный логин, пароль или рабочую группу, я получаю другую ошибку: NT_STATUS_LOGON_FAILURE. Похоже, я правильно понял другую информацию.

Я помещаю запись в / etc / hosts, которая указывает windows-machineна его IP-адрес. NetBIOS-имя машины Windows - это нечто иное.

Кто-нибудь знает, что означает эта ошибка?

Нил
источник

Ответы:

9

NetBIOS-имя машины Windows - это нечто другое

Это твоя проблема. Это легко исправить с помощью взлома реестра на компьютере с Windows. См. Http://support.microsoft.com/kb/281308 для деталей.

Обновить

Ссылка на оригинальную статью поддержки исчезла (спасибо Microsoft). Новая статья о том, что общий доступ к файловому серверу SMB невозможен через псевдоним DNS CNAME .

Джорил также отмечает, что сервер может иметь несколько имен NetBIOS. Это делается путем редактирования раздела реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\OptionalNames

и добавление дополнительных имен.

Джон Ренни
источник
1
Интересно, почему это не просто исправлено в патче?
Нил
Это не ошибка, это сделано специально. Возможно для безопасности, хотя я не уверен, почему именно. Я предполагаю, что это останавливает вас от случайного подключения к неправильному серверу, если у вас есть мошеннические записи в файле hosts или в DNS. Лично я поместил взлом реестра на все мои серверы.
Джон Ренни
ссылка выглядит мертвой (404). В любом случае ключ должен бытьHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters\DisableStrictNameChecking
Джорил
... или еще лучше, OptionalNames
Joril
6

Вы, вероятно, получаете эту ошибку, потому что машина Windows не понимает себя идентифицируемой как то, к чему вы подключаетесь. (Использование неверной информации аутентификации изменяет ошибку, потому что эта проблема не возникает позже в процессе подключения.)

Попробуйте подключиться к нему как его IP-номер, а не windows-machine. Если это работает, это подтверждает, что имя происходит именно так, и вы можете решить это, либо сделав так, чтобы PDC понял себя, windows-machineлибо просто используя номер IP.

хаос
источник
3

Вы должны использовать флаг "-m", чтобы указать максимальную версию протокола, которую вы будете использовать. По умолчанию это "NT1", здесь со страницы руководства smbclient:

-m|--max-protocol protocol
    This allows the user to select the highest SMB protocol level that
    smbclient will use to connect to the server. By default this is set
    to NT1, which is the highest available SMB1 protocol. To connect
    using SMB2 or SMB3 protocol, use the strings SMB2 or SMB3
    respectively. Note that to connect to a Windows 2012 server with
    encrypted transport selecting a max-protocol of SMB3 is required.

Я подозреваю, что версия "NT1" полагается на вещи netbios, в отличие от SMB2 и далее.

Так что попробуйте снова с "-m SMB3" или "-m SMB2", вы также значительно улучшите производительность.

ThoSil
источник
2

Вы можете использовать опцию -I и указать IP-адрес.

smbclient -U username -W workgroup -L //windows-machine  -I <machine-ipaddr>
Panciz
источник
0

Вы не можете использовать ни имя машины в / etc / hosts, ни, возможно, имя с DNS-сервера.

Вы должны использовать либо IP-адрес компьютера, либо имя NetBIOS компьютера, указанного в Windows.

Чтобы найти имя NetBIOS в Windows XP:

  1. Щелкните правой кнопкой мыши на «Мой компьютер»
  2. Нажмите «Свойства»
  3. Перейдите на вкладку «Имя компьютера».
  4. Прочитайте поле «Полное имя компьютера» до первого периода '.'
Нил
источник