我正在嘗試將運行 Ubuntu 13.04 的客戶端連接到由最近從 Windows Server 2003 升級到 2012 的文件伺服器託管的網路共用。
目前,我可以使用以下命令在連接到 LAN 時安裝遠端共用:
sudo mount -t cifs //myserver.mydomain.co.uk/myshare /media/myshare/ -o user=myself,domain=myworkgroup,pass=**********
但是,我在透過 Cisco (IPsec/Xauth) VPN 安裝共用時遇到問題。在伺服器升級之前,我沒有遇到任何問題,但現在我收到以下訊息:
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
dmesg | tail
給我[ 1975.651346] CIFS VFS: cifs_mount failed w/return code = -112
主機絕對沒有停機 - 我仍然可以使用以下命令透過 VPN 連接到同一共享smbclient
:
smbclient //myserver.mydomain.co.uk/myshare -U myself -W myworkgroup
Enter myself's password:
session request to MYSERVER.MYDOMAIN failed (Called name not present)
Domain=[MYWORKGROUP] OS=[Windows Server 2012 Standard 9200] Server=[Windows Server 2012 Standard 6.2]
smb: \>
我不確定“ session request to MYSERVER.MYDOMAIN failed (Called name not present)
”錯誤的重要性,因為我仍然可以瀏覽目錄結構。
對於接下來要嘗試什麼有什麼建議嗎?
答案1
您可以使用 SMB 用戶端連接,因為您可以「匿名」連線。但能夠以匿名方式連線並不意味著普通用戶的身份驗證服務正在運行。
您可能有防火牆問題。打開這4個連接埠:
- UDP&TCP/137
- UDP&TCP/138
- UDP&TCP/139
- TCP/445
檢查您是否也允許 Windows 端的 Netlogon 服務進行通訊。
答案2
透過 VPN 連線時可以存取連接埠 445/tcp。使用
nc -v myserver.mydomain.co.uk 445.
如果有效的話。
Connection to myserver.mydomain.co.uk 445 port [tcp/microsoft-ds] succeeded!
您可能會看到的唯一問題是防火牆是否代理可能成功建立的連線。然後您需要進行封包擷取並查看 Windows 伺服器是否正在傳送任何內容。
答案3
嗯,一年後我終於明白了!
根本原因是主機名稱解析問題。當我試圖透過 VPN 透過 SSH 連接到同一遠端網路上的電腦來解決另一個問題時,線索出現了。
從輸出ssh -v
:
debug1: Connecting to myserver2.mydomain.ox.ac.uk [163.1.21.182] port 22.
我發現 OpenSSH 正在嘗試連接到一個無意義的 IP 位址(它實際上是將我的伺服器的主機名稱解析為網路印表機的 IP 位址!)。我發現這ping
也無法正確解析主機名,但host
似乎有效。這最終導致我這個線程關於詢問 Ubuntu。
事實證明ping
和ssh
都使用 glibc 解析器,就像mount.cifs
. glibc 取得名稱服務資訊的來源配置在/etc/nsswitch.conf
。
我的內容nsswitch.conf
原來是這樣的:
passwd: compat
group: compat
shadow: compat
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns wins mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
重要的一行是以 開頭的行hosts:
,它列出了 glibc 在執行主機名稱解析時查詢的來源的順序。請注意,在我的版本中,按搜尋順序dns
排在後面。[NOTFOUND=return]
我的解釋是,如果 glibc 無法根據前四個來源解析主機名,它將在實際查詢任何 DNS 伺服器之前返回!我不知道為什麼nsswitch.conf
以這種方式配置(我當然沒有這樣設定),但將行更改為:
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4
突然讓一切正常運作,包括ping
、ssh
和mount.cifs
。