![IPsec VPN 上的 CIFS 挂载问题](https://linux22.com/image/1365989/IPsec%20VPN%20%E4%B8%8A%E7%9A%84%20CIFS%20%E6%8C%82%E8%BD%BD%E9%97%AE%E9%A2%98.png)
我正在尝试将运行 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
似乎可以工作。这最终让我此主题在 Ask 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