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
和系統日誌條目:
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
所以,問題: - 為什麼在這種特殊情況下解析器無法讀取或忽略主機文件?
- DNS/WINS/其他一些解析方法是否硬編碼到 mount.cifs 中?
預設情況下,某些發行版上的 samba (cifs) 包不使用 hosts 文件來解析名稱。相反,它使用 NetBIOS 名稱來解析 IP。有兩種方法可以解決這個問題:
- 將 samba 設置為使用 hosts 文件進行解析。
在您的 smb.conf 文件中,找到並修改或創建以下行:
[global] name resolve order = host lmhosts wins bcast
並重新啟動桑巴。這會將 samba 設置為使用標準主機名到 IP 地址解析,使用系統 /etc/hosts、NIS 或 DNS 查找來解析伺服器名稱。此外,
machine-name.domainname
在您的主機文件中添加為別名: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