Назад | Перейти на главную страницу

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

Интересно, почему у моего 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.

ОДНАКО, это работает как шарм, если я поменяю имя хоста НАС-5х2-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?

По умолчанию пакет 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