我的小型家庭网络包括运行 Arch Linux ARM 的 Wandboard 和 Windows 7 桌面。 Linux 机器在启动时挂载 Windows 7 计算机上托管的 cifs 共享,没有任何问题。但在一段时间后,与 Windows 共享的连接就会丢失。
我可以光盘到挂载点目录,但是当我运行时LS我收到消息:cannot open directory '.': Host is down
。如果我卸载挂载目录并尝试重新挂载共享,则会收到错误mount error(2): No such file or directory
。但是,我可以使用连接到共享中小企业客户没有问题。如果我重新启动 Wandboard,共享就会再次挂载,没有任何问题。但一段时间后,它又变得无法访问。
我在 Windows 计算机上尝试了多种不同的操作,包括启用和禁用 SMB v1 以及尝试 NIC(具有最新驱动程序的 Intel)和 Windows 共享权限的所有可能设置。但问题必须涉及 Linux 端,因为共享仍然可以通过中小企业客户当我重新启动时安装没有问题。我已经更新了 samba 和 cifs-utils 并尝试启用和禁用 winbind。我不知道还能尝试什么。
更多信息:
我在 fstab 中使用的挂载行是://192.xxx.x.xx/Work /mnt/Work cifs guest,users,credentials=/home/alarm/.smbcredentials,iocharset=utf8,vers=2.1 0 0
但我尝试了许多选项,包括noperm
and_netdev
和 usingvers=2.0
以及vers=
根本没有选项。
我用来连接的命令中小企业客户是sudo smbclient //192.xxx.x.xx/Work -U=alarm
会提示我输入 samba 密码,该密码与 Windows 计算机上的用户“alarm”的密码相同。用户名和密码与我用来挂载共享(并尝试重新挂载)的凭据文件中的用户名和密码相同。输入密码后,我将通过以下方式连接中小企业客户并可以执行读写操作。
Windows 日志显示NTLMv2挂载共享时用于身份验证。中小企业客户的输出还表明NTLMv2正在使用中。然而 samba 日志显示 Linux 机器尝试使用NTLMv1连接,以及用户警报(我认为连接到共享的那个)不被识别;之后匿名用户没有人似乎已登录(Windows 主机配置为允许匿名登录)。这可能表明 Linux 机器正在尝试使用NTLMv1重新连接共享却失败?
在共享断开连接时,消息显示以下内容:CIFS VFS: \\192.xxx.x.xx has not responded in 180 seconds. Reconnecting...
- 但此后没有任何内容表明已重新连接。
我的配置如下:
- Arch Linux ARM version 5.7.2-1-ARCH
- samba v 4.12.3
- cifs-utils v 6.13-2
- host: Windows 7 Ultimate with SMB1 disabled and SMB2 enabled
一旦弄清楚如何,我将附上包含更详细信息的文件。但我可以根据需要提供任何信息、运行测试等 - 只需询问即可。
谢谢
莱斯
答案1
这不是答案,但可能是朝着正确方向迈出的一步。我现在有斯特雷斯和沙克成功和失败的输出LS和山命令,以及中小企业客户连接,总是成功。
比较斯特雷斯输出,关键点似乎是(在成功的 strace 中):
statx(AT_FDCWD, "/mnt/Work", AT_STATX_SYNC_AS_STAT, STATX_MODE, {stx_mask=STATX_TYPE|STATX_MODE|STATX_NLINK|STATX_UID|STATX_GID|STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|STATX_BTIME, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=131072, ...}) = 0
openat(AT_FDCWD, "/mnt/Work", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=131072, ...}) = 0
mmap2(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb68d2000
getdents64(3, 0xb68d2028 /* 65 entries */, 1048576) = 2352
openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules", O_RDONLY|O_CLOEXEC) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=56353, ...}) = 0
read(4, "# GNU libc iconv configuration.\n"..., 4096) = 4096
...然后是进一步的一系列读s(大概是文件和子目录)。
连接失败显示如下:
statx(AT_FDCWD, "/mnt/Work", AT_STATX_SYNC_AS_STAT, STATX_MODE, 0xbeb86650) = -1 EHOSTDOWN (Host is down)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2998, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2998
...然后一个读和一个写错误消息(“主持人挂了”)。我可以发布更多内容斯特雷斯输出和沙克和中小企业客户如果有人希望看到它们,也可以输出。 TIA