我想知道为什么我的 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 文件就可以了。
答案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
包。