假设以下设置:
- VPN:VPN服务器(docker+openVPN)
- FS:文件存储(cifs共享)
- 应用程序、负载均衡器、数据库...
两台服务器都是由第三方公司托管的 root 访问 ubuntu 服务器虚拟机。
当 php7 应用程序写入 CIFS 共享时,我得到没有权限错误。共享上的所有文件(已检查并设置为应用程序服务器)chmod 777
是chown www-data
php-fpm 用户。当我通过VPN打开网站时,没有出现这样的错误,所有更改都正常。
我能够将错误范围缩小到文件系统层。未通过 VPN 连接时,无法从其他服务器访问 CIFS 共享。
我猜这与配置有关iptables
。虽然我跑去iptables -F
禁用防火墙,但没有帮助。我可能错误配置了 nginx,将用户的 IP 传递到 CIFS。
配置:
FS:
root@filestore:~# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
/etc/samba/smb.conf
#======================= Share Definitions =======================
[static-fs]
path = /home/storage/
browsable = yes
guest ok = no
writeable = yes
create mask = 0777
valid users = storage
write list = storage
客户:
root@ubuntuVM:~# smbclient -L \\filestore -U storage
Connection to filestore failed (Error NT_STATUS_IO_TIMEOUT)
root@ubuntuVM:~# ping filestore
PING filestore (1.2.3.4) 56(84) bytes of data.
64 bytes from xxx.ip-1.2.3.4.eu (1.2.3.4): icmp_seq=1 ttl=52 time=24.2 ms
...
这不是 DNS 问题,域是有效的,我在使用 IP 时也遇到同样的问题。
答案1
我刚刚收到我的托管公司 (OVH) 的答复。事实证明,CIFS 和 NFS 在其网络之外被阻止。他们建议使用SSHFS,我们用FTP解决了问题。