fstab 中的 CIFS 挂载在 IP 上成功,在 /etc/hosts 中写入的主机名上失败

fstab 中的 CIFS 挂载在 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

以及 Syslog 条目:

Unable to determine destination address.

但是,如果我交换主机名,这将非常有效NAS-5h2-20其知识产权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 服务器中注册。在某些情况下,DNS 和服务器内部使用时,可以使用不同的 IP(服务器集群/工作站),因此我无法将它们注册到 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

那么,问题是:-为什么解析器无法读取或忽略主机文件在这种特殊情况下?
- DNS/WINS/其他解析方法是否被硬编码到 mount.cifs 中?

答案1

默认情况下,某些发行版上的 samba (cifs) 软件包不使用 hosts 文件来解析名称。相反,它使用 NetBIOS 名称来解析 IP。有两种方法可以解决此问题:

  • 设置samba使用hosts文件进行解析。

在您的 smb.conf 文件中,找到并修改或创建以下行:

    [global]
    name resolve order =  host lmhosts wins bcast

并重新启动 samba。这将设置 samba 使用标准主机名到 IP 地址的解析,使用系统 /etc/hosts、NIS 或 DNS 查找来解析服务器名称。此外,machine-name.domainname在 hosts 文件中将其添加为别名:

    192.168.1.28    machine-name    machine-name.domainname
  • 设置您尝试连接的机器的 NetBIOS 名称。

在您尝试连接的机器上,在 smb.conf 文件中设置以下内容:

    netbios name = MachineName

并重新启动 samba。


理想情况下,您希望同时执行这两件事,但只需将 samba 设置为使用 hosts 文件就可以了。

参考: https://www.samba.org/samba/docs/using_samba/ch07.html

答案2

在 Ubuntu 22.10 的 vanilla 安装中也出现了同样的症状,但通过安装很快解决了这个问题cifs-utils

james@pi-desktop:~$ sudo mount -t cifs //rc-kvm2.somewhere.com/musicLibrary /home/james/Music -o credentials=/home/james/.smbpass_music
[sudo] password for james: 
mount: /home/james/Music: mount(2) system call failed: No route to host.
       dmesg(1) may have more information after failed mount system call.
james@pi-desktop:~$ sudo dmesg
[...]
[  508.219069] CIFS: Unable to determine destination address
[...]
james@pi-desktop:~$ sudo apt-get install cifs-utils
[...]
The following NEW packages will be installed
  cifs-utils keyutils
[...]
james@pi-desktop:~$ sudo mount -t cifs //rc-kvm2.somewhere.com/musicLibrary /home/james/Music -o credentials=/home/james/.smbpass_musiclibrary
james@pi-desktop:~$ 

已排序。

答案3

我试图让它与 auto.misc 一起工作,但缺少了一些东西。

安装 cifs-utils 包然后重新启动 autofs 即可解决问题。

更多详细信息(根据要求)...

我使用 autofs 根据需要挂载外部(网络)资源。

因此,我安装了 autofs 和 samba。

然后我有这样的条目/etc/auto.misc

REMFOLDER -fstype=cifs,ro,username=user,password=PW ://windowsbox.my.local.domain/SHAREDFOLDER

这意味着我可以以 身份访问 windowsbox 上的 SHAREDFOLDER /misc/REMFOLDER

多年来,这一做法一直很有效。

但是,在新安装的 Pop OS(基于 Ubuntu)和版本 21.04 中,此功能不起作用。

我可以使用smbclient用户名和密码访问 SHAREDFOLDER,但该auto.misc条目不起作用。

该消息表明(抱歉,没有记下来)用户名/密码不正确。

经过搜索,我来到这里,有效的解决方案是安装该cifs-util包。

相关内容