Монтирование CIFS в fstab успешно выполняется по IP, не выполняется по имени хоста, записанному в / etc / hosts

10

Интересно, почему у моего Ubuntu Server 14.04 LTS возникают проблемы с разрешением имени хоста из fstab. Я попытался смонтировать следующую запись:

//NAS-5h2-20/backuppc/  /mnt/backuppc   cifs   auto,user=THEUSER,password=THEPASSWORD,cifsacl,uid=109      0       0

монтирование не удается с ошибкой

mount: wrong fs type, bad option, bad superblock on //NAS-5h1-15/backuppc,
   missing codepage or helper program, or other error
   (for several filesystems (e.g. nfs, cifs) you might
   need a /sbin/mount.<type> helper program)
   In some cases useful info is found in syslog - try
   dmesg | tail  or so

и запись системного журнала:

Unable to determine destination address.

ОДНАКО, это работает как прелесть, если я меняю имя хоста NAS-5h2-20 на его IP 192.168.1.29 . Однако из соображений переносимости я хотел бы сопоставить монтирование по имени хоста в fstab.

Содержимое / etc / hosts (среди других строк):

192.168.1.28    NAS-5h1-15
192.168.1.29    NAS-5h2-20
192.168.1.30    NAS-6h1-04

Эти имена хостов не зарегистрированы на локальном DNS-сервере. Предполагается, что в некоторых случаях можно использовать разные IP-адреса (кластер сервера / рабочая станция) для DNS и для внутреннего использования сервером, поэтому я не могу зарегистрировать их в DNS.

Это также не проблема

ping NAS-5h2-20

,

Таким образом, я уверен, что это решающая проблема. Однако я не могу понять, где. Я смотрю на nsswitch.conf, там ничего особенного:

passwd:         compat
group:          compat
shadow:         compat
hosts:          files dns
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis

И /etc/resolv.conf также выглядит нормально:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.1
search ourdomain.local

Итак, вопросы: - почему распознаватель не может прочитать ИЛИ игнорирует файл hosts в этом особом случае?
DNS / WINS / какой-либо другой метод разрешения жестко запрограммирован в mount.cifs?

Nachtexpress
источник
1
От askubuntu.com/a/374699 :sudo apt-get install cifs-utils

Ответы:

8

По умолчанию пакет samba (cifs) в некоторых дистрибутивах не использует файл hosts для разрешения имени. Вместо этого он использует имя NetBIOS для разрешения IP-адреса. Есть два способа сделать это:

  • Установите samba для использования файла hosts для разрешения.

В вашем файле smb.conf найдите и измените или создайте следующую строку:

    [global]
    name resolve order =  hosts lmhosts wins bcast

и перезапустите самбу. Это заставит samba сначала использовать файл hosts для разрешения имени. Кроме того, добавлено machine-name.domainnameв качестве псевдонима в вашем файле hosts:

    192.168.1.28    machine-name    machine-name.domainname
  • Установите NetBIOS-имя компьютеров, к которым вы пытаетесь подключиться.

На машинах, которые вы пытаетесь подключить, установите следующее в файле smb.conf:

    netbios name = MachineName

и перезапустите самбу.


В идеале, вы хотите сделать обе эти вещи, однако простая настройка samba для использования файла hosts должна работать.

Ссылки: https://www.samba.org/samba/docs/using_samba/ch07.html

Тикси
источник