Proxmox跨不同子网虚拟机共享存储配置技术问询
跨子网NFS共享配置方案(适配多子网虚拟机+安全需求)
我平时帮很多用户处理过类似的跨子网存储共享问题,结合你把网站、Nextcloud放在独立子网的安全诉求,给你一套分步的配置方案:
一、修改NFS共享配置(核心步骤)
首先得调整你的/etc/exports文件,默认的NFS共享通常只限制在单个子网,你需要把目标子网加入允许列表:
- 打开配置文件:
sudo nano /etc/exports - 假设你原来的共享是给192.168.1.0/24子网的,现在追加10.0.0.0/24子网,也可以按服务拆分共享目录:
关键参数解释:# 通用共享目录(适合多服务共用) /nfs/shared 192.168.1.0/24(rw,sync,no_root_squash) 10.0.0.0/24(rw,sync,no_root_squash) # 单独给网站的只读共享(静态站点更安全) /nfs/website 10.0.0.0/24(ro,sync) # 给Nextcloud的读写共享 /nfs/nextcloud 10.0.0.0/24(rw,sync,root_squash)rw:读写权限,按需设置(网站静态文件可改用ro只读)sync:强制写入磁盘后再返回成功,避免数据丢失no_root_squash:允许客户端root用户拥有服务器端root权限(虚拟机需系统级操作时用,否则推荐root_squash更安全)
- 刷新NFS配置:
sudo exportfs -ra
二、配置防火墙允许跨子网NFS流量
NFS不仅用到2049端口,还依赖rpcbind(111端口)和动态分配的mountd、nfsd端口,为了稳定,先固定这些动态端口:
1. 固定NFS服务端口(以Debian/Ubuntu为例)
编辑/etc/default/nfs-kernel-server,添加/修改以下内容:
RPCMOUNTDOPTS="--port 4001" NFSDOPTS="--port 4002"
(CentOS/RHEL用户编辑/etc/sysconfig/nfs,设置MOUNTD_PORT=4001、NFSD_PORT=4002)
重启NFS和rpcbind服务:
sudo systemctl restart nfs-kernel-server rpcbind
2. 开放防火墙端口给目标子网
用ufw(Debian/Ubuntu)的话:
sudo ufw allow from 10.0.0.0/24 to any port 111/tcp sudo ufw allow from 10.0.0.0/24 to any port 111/udp sudo ufw allow from 10.0.0.0/24 to any port 2049/tcp sudo ufw allow from 10.0.0.0/24 to any port 2049/udp sudo ufw allow from 10.0.0.0/24 to any port 4001/tcp sudo ufw allow from 10.0.0.0/24 to any port 4001/udp sudo ufw allow from 10.0.0.0/24 to any port 4002/tcp sudo ufw allow from 10.0.0.0/24 to any port 4002/udp
如果用firewalld(CentOS/RHEL):
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port port="111" protocol="tcp" accept' --permanent sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port port="111" protocol="udp" accept' --permanent # 重复上述格式添加2049、4001、4002的tcp/udp端口 sudo firewall-cmd --reload
三、安全加固(适配你的独立子网诉求)
- 最小化访问范围:不要开放给整个子网,尽量指定单个虚拟机IP,比如把
10.0.0.0/24改成10.0.0.10/32(网站虚拟机IP)和10.0.0.11/32(Nextcloud虚拟机IP) - 文件系统权限控制:在NFS服务器上给共享目录设置严格的用户权限:
# 网站目录给web服务用户(比如www-data) sudo chown -R www-data:www-data /nfs/website sudo chmod -R 750 /nfs/website # Nextcloud目录同样给web用户 sudo chown -R www-data:www-data /nfs/nextcloud sudo chmod -R 750 /nfs/nextcloud - 启用NFSv4:NFSv4比v3更安全,且不需要额外的rpc服务,修改exports时添加
fsid=0即可启用:/nfs/shared 192.168.1.0/24(rw,sync,no_root_squash,fsid=0) 10.0.0.0/24(rw,sync,no_root_squash,fsid=0)
四、虚拟机端挂载验证
- 在目标子网的虚拟机上测试挂载:
# 挂载网站目录 sudo mount -t nfs4 NFS_SERVER_IP:/nfs/website /var/www/html # 挂载Nextcloud目录 sudo mount -t nfs4 NFS_SERVER_IP:/nfs/nextcloud /var/www/nextcloud/data - 测试读写权限:
# 网站只读测试(如果是ro权限) sudo touch /var/www/html/testfile # 应该提示权限拒绝 # Nextcloud读写测试 sudo touch /var/www/nextcloud/data/testfile && sudo rm /var/www/nextcloud/data/testfile - 设置开机自动挂载:编辑
/etc/fstab,添加:
(NFS_SERVER_IP:/nfs/website /var/www/html nfs4 defaults,_netdev 0 0 NFS_SERVER_IP:/nfs/nextcloud /var/www/nextcloud/data nfs4 defaults,_netdev 0 0_netdev参数确保系统等网络就绪后再挂载,避免开机失败)
五、额外注意事项
- 确保家庭路由器允许两个子网(192.168.1.0/24和10.0.0.0/24)之间的通信,没有防火墙规则阻断NFS相关流量
- 如果路由器有子网隔离功能,需要手动添加允许两个子网互通的规则
内容的提问来源于stack exchange,提问作者Svarto
相关产品推荐
相关产品推荐

