我们有两台运行 docker + kubernetes 的 ubuntu 机器,它们需要访问 Windows 共享。
第一个是在 /etc/fstab 中设置的:
//dfs/Archive01 /mnt/dfs cifs rw,cred=/etc/cifspasswd,forceuid,forcegid 0 1
并且它可以工作,执行 mount -a 后我们就可以进入目录。
但是在机器 2 上进行相同的配置时,我们在尝试挂载时收到可怕的“没有到主机的路由”错误。
ping dfs
返回一个 IP 地址,这样就可以正常工作了。
正在运行的机器上执行 ip -4 addr show 命令显示:
- ens160:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq 状态 UP 组默认 qlen 1000 altname enp3s0 inet 10.203.32.80/24 brd 10.203.32.255 范围全局 ens160 valid_lft 永远 preferred_lft 永远
- docker0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 状态 UP 组默认 inet 10.200.200.20/24 范围全局 docker0 valid_lft 永远 preferred_lft 永远
- vxlan.calico:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue 状态 UNKNOWN 组默认 inet 10.244.255.192/32 范围全局 vxlan.calico valid_lft 永远 preferred_lft 永远
在发生故障的机器上 ip -4 a 显示:
- ens160:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq 状态 UP 组默认 qlen 1000 altname enp3s0 inet 10.203.32.81/24 brd 10.203.32.255 范围全局 ens160 valid_lft 永远 preferred_lft 永远
- docker0:<NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue 状态 DOWN 组默认 inet 10.200.200.21/24 brd 10.200.200.255 范围全局 docker0 valid_lft 永远 preferred_lft 永远
- vxlan.calico:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue 状态 UNKNOWN 组默认 inet 10.244.161.0/32 范围全局 vxlan.calico valid_lft 永远 preferred_lft 永远
dmesg 说:
CIFS:无法确定目标地址
不知道为什么 2 号失败,1 号却能正常工作。感觉和 calico 网络有关,但不确定如何调试。
有人知道如何修复这个问题或者至少知道在哪里检查吗?
答案1
找到解决方案。
忘记在第二台机器上安装 cifs-utils 和 keyutils。
所以只是做
sudo apt-get install keyutils
sudo apt-get install cifs-utils
修复
答案2
我遇到了这个问题,将 Ubuntu 20.04 升级到 22.04 后,无法再连接到我的 Synology NAS。显然,升级卸载了 smbclient(或者在 20.04 中没有它也可以工作,不确定),cifs-utils 仍然安装着。
现在我不得不补充
- keyutils(根据 Serve 的回答,尚未测试是否有必要)
- 客户端
- 我还安装了 winbind,因为 apt 建议这样做,但这不是必需的(仅适用于 Windows 域登录)。它可以方便地连接到我的笔记本电脑或公司网络,但到目前为止我还没有使用它。
这将其更改为不同的错误消息(不支持操作),为此我必须vers=2.0
在 /etc/fstab 中的相关行中添加选项。
-- 编辑 -- 检查我的 NAS,我发现它被设置为最高版本 = 2.0。更改它并从 /etc/fstab 中删除“vers=2.0”,它就可以正常工作了。显然,当您在 Synology 上设置最大值时,自动协商协议版本效果不太好。