Монтирование общего ресурса cifs в Ubuntu с использованием имени NetBios, а не IP-адреса

546
Bo Thompson

У меня есть пара машин с Ubuntu и ПК с Windows. Если я создаю общий ресурс на ПК с Windows, любой компьютер Ubuntu может смонтировать его с помощью mount -t cifs -o username=me //computername/sharename /mnt/mountpoint. Если я создаю общий ресурс на любом компьютере с Ubuntu, компьютер Windows может увидеть его по адресу // computername / sharename в сети и получить к нему доступ просто отлично.

Однако, если я создаю общий ресурс на одном компьютере Ubuntu (любой) и пытаюсь смонтировать его на другом, я получаю mount error: could not resolve address for computername: Unknown error. Использование IP вместо имени netbios делает его монтированным просто персиковым.

Еще более странно, nmblookup computernameдает IP-адрес.

Что мне нужно сделать на компьютерах с общим доступом и монтированием Ubuntu, чтобы смонтировать общий ресурс по имени netbios вместо IP-адреса? (Помимо создания сценария bash для извлечения IP-адреса из имени netbios каждый раз или установки статических IP-адресов).

0

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

0
grawity

Общесистемная поддержка NBNS не является стандартной частью Ubuntu (или большинства других систем Linux). Причина в nmblookupтом, что он генерирует и получает пакеты NBNS сам по себе, в то время как все другие инструменты (включая mount.cifs) полагаются на глобальную функцию «разрешения имени хоста» для выбора правильного протокола.

Вызывается модуль поиска имени хоста для NBNS libnss_wins.so.2, обычно упакованный как libnss-winbind или просто как часть smbclient . После установки Debian и Ubuntu автоматически активируют его, в противном случае его необходимо добавить в строку «hosts» /etc/nsswitch.conf:

- hosts: files dns + hosts: files dns wins 

Для работы модуля необходим winbindd . (Я думаю, что раньше он работал автономно, или просто с запущенным nmbd, но, видимо, больше не работает.)

Тест с:

  • getent ahosts ComputerNameдля всех активных модулей (перечисленных в nsswitch.conf ),
  • getent -s wins ahosts ComputerNameспециально для модуля wins (независимо от того, активен он или нет).
Не могли бы вы объяснить это немного больше для меня? Я не уверен, что делать с информацией, которую вы мне дали. Простое добавление этих двух строк в файлы nsswitch.conf ничего не решило. Есть ли способ проверить или активировать winbindd? Или я могу проверить, не работает ли libnss_wins.so.2 должным образом? Bo Thompson 5 лет назад 0
... на самом деле, почему моя глобальная функция разрешения имени хоста не работает с общими папками Linux, а с Windows? Bo Thompson 5 лет назад 0