我正在尝试将我的 NAS 驱动器自动安装到 Ubuntu 服务器,但是当我安装它时,它似乎无法在网络上找到 NAS 名称,这给了我一个问题。
像这样拉起共享可以正常工作,并给我 NAS 上的共享的打印输出。
smbclient -L //NASNAMEHERE
我继续使用下面的行将我想要的共享添加到 /etc/fstab。该.smbcredentials
文件包含用于 RW 访问共享的用户/密码组合。:
//NASNAMEHERE/Archive /home/user/Archive cifs credentials=/home/user/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
但是,当我运行sudo mount -a
安装新设备时,它给出了这个信息。
mount error: could not resolve address for martinez-nas: Unknown error
这似乎是一个网络问题,因为我似乎无法直接通过名称 ping NAS,但我很困惑为什么这不起作用,如果smbclient
可以正确找到 NAS 并列出共享。
运行 Ubuntu Server 14.04.2
答案1
成立这个问题这回答了我的问题。基本上,Samba 可以进行主机名查找,而 mount 不能。我在 中设置了 IP 地址而不是主机名/etc/fstab
,结果运行良好。
答案2
不同之处在于 samba 客户端执行 netbios 名称查找,而 mount.cifs 执行主机名查找,这需要某种局域网端 DNS 机制。CIFS 不知道 netbios 名称是什么。
有一些解决方案:
[1] 有些路由器自动提供局域网侧DNS机制。这就是为什么只有一小部分 CIFS 用户会遇到此名称解析问题。也许您的路由器有此功能,但未启用 - 值得调查。
[2] 您可以为您的 nas 指定一个静态 IP 地址。如果您不想在 nas 上执行此操作,也可以在路由器上执行此操作。然后只需通过该 ip 地址访问服务器即可。
[3] 如果您的 nas 有 mDNS 限定主机名(hostname.local),您可以使用它。目前 Linux、Win10(您必须启用它)、Apple Mac 以及这些设计用于与 Mac 配合使用的网络设备都具有这些主机名。如果您知道 nas 的当前 IP 地址,则可以使用此命令(使用正确的 IP 地址)查看它是否有一个:
avahi-resolve -a 192.168.1.208
使用该输出中的名称,并在末尾附加 .local(如果尚未附加)。
[4] 最后,是被人们误解和曲解的 winbind“噱头”:
如果应用程序想要解析主机名的 IP 地址,它会查找/etc/nsswitch.conf文件来了解如何操作。如果你查看文件,你会看到它执行此操作的不同方式:“文件”(/etc/hosts)、“mdns4”(mDNS)和“dns”本身。其中没有任何地方提到 netbios。因此,通过将参数胜利参数之前域名系统。
wins 反过来需要 libnss_wins.so 库,当您安装以下包时您就可以获得该库:
sudo apt install libnss-winbind
安装该软件包也会安装 winbind 本身。
因此,您最终会安装为完全不同的东西设计的东西 ( winbind ),以便使 netbios 名称作为主机名出现在 CIFS 和 ping 等东西中。过去,这种“解决方案”会产生后果,因为它有时会减慢互联网访问速度,但考虑到多年来相对速度的提高,我猜没人会注意到。