You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Proxmox跨不同子网虚拟机共享存储配置技术问询

跨子网NFS共享配置方案(适配多子网虚拟机+安全需求)

我平时帮很多用户处理过类似的跨子网存储共享问题,结合你把网站、Nextcloud放在独立子网的安全诉求,给你一套分步的配置方案:

一、修改NFS共享配置(核心步骤)

首先得调整你的/etc/exports文件,默认的NFS共享通常只限制在单个子网,你需要把目标子网加入允许列表:

  1. 打开配置文件:sudo nano /etc/exports
  2. 假设你原来的共享是给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更安全)
  3. 刷新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

三、安全加固(适配你的独立子网诉求)

  1. 最小化访问范围:不要开放给整个子网,尽量指定单个虚拟机IP,比如把10.0.0.0/24改成10.0.0.10/32(网站虚拟机IP)和10.0.0.11/32(Nextcloud虚拟机IP)
  2. 文件系统权限控制:在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
    
  3. 启用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)
    

四、虚拟机端挂载验证

  1. 在目标子网的虚拟机上测试挂载:
    # 挂载网站目录
    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
    
  2. 测试读写权限:
    # 网站只读测试(如果是ro权限)
    sudo touch /var/www/html/testfile  # 应该提示权限拒绝
    # Nextcloud读写测试
    sudo touch /var/www/nextcloud/data/testfile && sudo rm /var/www/nextcloud/data/testfile
    
  3. 设置开机自动挂载:编辑/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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:27:18