家里那台群晖NAS平时跑得好好的,一次小区临时停电之后,手机上的DSM就连不上了。查了半天才发现,路由器重启后DHCP重新分配,NAS的IP从原来的192.168.1.100变成了192.168.1.103,之前映射好的网络驱动器、NFS挂载、Docker容器里的路径引用全部失效。这种事发生一次就够折腾的,所以静态IP这件事,越早配好越省心。
这篇内容面向所有用群晖NAS的朋友,不管你是刚入手DSM的新手,还是已经跑了一堆服务的老玩家,只要你的NAS还在用DHCP自动获取IP,就值得花十分钟把静态IP配好。配完之后我还会顺带讲一下Linux端怎么通过NFS挂载群晖的共享目录,以及挂载过程中容易踩的那些坑。整套流程我自己在DSM 7.x上反复验证过,照着做基本不会出问题。
1. 为什么断电重启后NAS的IP会变
1.1 DHCP分配机制的本质
很多人以为路由器会给同一台设备永远分配同一个IP,其实不是。DHCP协议的工作方式是:设备上线时广播一个请求,路由器从地址池里挑一个当前空闲的IP租给它,同时给一个租期(Lease Time)。租期到了或者路由器重启导致租约表丢失,下次这台设备再请求时,路由器可能就分配一个不同的IP了。
家用路由器尤其如此。大部分家用路由器的DHCP租约表存在内存里,断电即丢失。来电后路由器重新启动,DHCP服务从零开始分配,谁先连上来谁先拿号。你的NAS如果启动比手机、电脑慢,那它拿到的IP就可能和之前不一样。
1.2 群晖在DHCP模式下的默认行为
群晖DSM出厂默认网络配置就是DHCP自动获取。在DSM的"控制面板 → 网络 → 网络界面"里可以看到,默认选的是"自动取得网络设置(DHCP)"。这个模式下,NAS每次启动都会向路由器请求IP,路由器给什么就用什么。
这里有个细节值得注意:群晖NAS在DHCP模式下,如果路由器支持,它会尝试请求上次用过的IP。但这个"请求"只是建议,路由器完全可以拒绝并分配别的地址。所以你不能指望这个机制来保持IP稳定。
1.3 IP变化带来的连锁反应
IP一变,受影响的东西比你想的多:
- 网络驱动器映射失效:Windows上映射的网络盘符指向的是旧IP,连不上就会显示红叉。
- NFS/SMB挂载断开:Linux服务器上通过/etc/fstab挂载的NFS共享,重启后会挂载失败,因为旧IP已经不通了。
- Docker容器路径引用出错:如果容器里配置了指向NAS IP的卷映射或环境变量,IP一变全部失效。
- 监控和备份任务中断:比如Hyper Backup、Active Backup for Business等套件里配置的目标地址如果是IP形式,也会断。
- 媒体库和下载工具异常:Emby、Plex、qBittorrent等如果通过IP访问NAS上的资源,同样会出问题。
所以静态IP不是一个"锦上添花"的设置,而是NAS稳定运行的基础设施。下面进入正题,讲怎么配。
2. 在DSM里配置静态IP的完整步骤
2.1 配置前的准备工作
动手之前,先确认三件事:
第一,确认当前网段信息。在DSM里打开"控制面板 → 网络 → 网络界面",点开当前使用的网卡(通常叫LAN 1),记下当前的IP地址、子网掩码、网关和DNS。这些信息配静态IP时要用。
第二,确认路由器DHCP地址池范围。登录路由器管理后台,找到DHCP设置,看看地址池是从哪个IP到哪个IP。比如地址池是192.168.1.100到192.168.1.200,那你就应该把NAS的静态IP设在这个范围之外,比如192.168.1.10或者192.168.1.250。这样做的目的是避免路由器把同一个IP分配给别的设备,造成IP冲突。
第三,确认没有其他设备占用你打算用的IP。在电脑上ping一下你想用的那个IP,比如ping 192.168.1.10,如果没有回应,说明大概率是空闲的。
提示:如果你不确定路由器的DHCP地址池范围,一个稳妥的做法是选一个网段里靠前或靠后的地址,比如x.x.x.2到x.x.x.50之间,或者x.x.x.240到x.x.x.254之间。这些地址通常不在默认地址池里。
2.2 在DSM中设置静态IP
打开"控制面板 → 网络 → 网络界面",选中你正在使用的网卡,点击上方的"编辑"按钮。在弹出的窗口中选择"使用手动设置",然后填入以下信息:
| 配置项 | 填写内容 | 说明 |
|---|---|---|
| IP地址 | 192.168.1.10(示例) | 选DHCP池外的空闲地址 |
| 子网掩码 | 255.255.255.0 | 家用网络通常都是这个 |
| 网关 | 192.168.1.1 | 一般是路由器地址 |
| DNS服务器 | 192.168.1.1 或 223.5.5.5 | 可以填路由器地址或公共DNS |
填完之后点"确定",DSM会提示网络设置已更改,可能需要几秒钟生效。这时候如果你是通过浏览器访问DSM的,可能会短暂断连,等几秒后用新IP重新访问即可。
2.3 验证静态IP是否生效
配置完成后,做两个验证:
验证一:确认DSM里显示的是手动设置。回到"网络界面",看网卡状态,应该显示"手动设置"而不是"DHCP"。
验证二:重启NAS后确认IP不变。这是最关键的一步。在DSM里点"重启",等NAS完全重启后,用你设置的静态IP访问DSM。如果能正常访问,说明静态IP配置成功。
注意:有些朋友配完静态IP后忘了改路由器的DHCP保留设置,如果你之前在路由器里给NAS做过MAC地址绑定,记得把那条绑定删掉或者改成对应的静态IP,否则可能冲突。
2.4 路由器端要不要也做绑定
这是一个常见疑问。我的建议是:DSM里设了静态IP之后,路由器端就不需要再做MAC绑定。两者选其一即可,同时做反而容易出问题。DSM端设静态IP的好处是不依赖路由器,换了路由器也不用重新配。路由器端绑定的好处是NAS端不用改设置,但换路由器就失效了。
如果你选择在路由器端做静态绑定(也就是DHCP保留),那DSM里保持DHCP模式就行。但我个人更推荐在DSM端直接设静态IP,原因很简单:少一层依赖,少一个出问题的环节。
3. Linux端通过NFS挂载群晖共享目录
3.1 群晖端开启NFS服务
静态IP配好之后,NAS的地址就固定了,接下来在Linux端挂载NFS共享才不会因为IP变化而断掉。先在群晖这边把NFS服务开起来。
打开"控制面板 → 文件服务 → NFS",勾选"启用NFS服务",NFS版本建议选NFSv4.1或NFSv3,兼容性都不错。然后到你想要共享的文件夹上右键 → "属性" → "NFS权限" → "新增",配置允许访问的客户端IP和权限。
NFS权限配置里几个关键项:
- 主机名或IP地址:填Linux服务器的IP,或者填
*允许所有(不推荐,安全性差)。 - 权限:只读或读写,按需选择。
- Squash:建议选"无映射"(no_root_squash)或"映射到管理员"(root_squash),前者方便但安全性略低,后者更安全但需要注意文件权限。
- 异步:建议勾选,能提升性能。
3.2 Linux端安装NFS客户端
不同的Linux发行版安装命令不同:
# Debian/Ubuntu 系 sudo apt update sudo apt install nfs-common # RHEL/CentOS/Rocky Linux 系 sudo dnf install nfs-utils # openEuler 系 sudo dnf install nfs-utils安装完成后,先用showmount命令测试一下能不能看到群晖的NFS共享:
showmount -e 192.168.1.10如果返回了共享目录列表,说明NFS服务正常,网络也通。如果报错"clnt_create: RPC: Program not registered",通常是群晖端NFS服务没启动或者防火墙挡了。
3.3 手动挂载测试
在写进fstab之前,先手动挂载一次,确认没问题:
# 创建本地挂载点 sudo mkdir -p /mnt/nas # 手动挂载 sudo mount -t nfs 192.168.1.10:/volume1/share /mnt/nas挂载成功后,用df -h看一下,应该能看到这个NFS挂载点。然后ls /mnt/nas确认能读到文件。
如果挂载报错"mount: wrong fs type, bad option, bad superblock",常见原因有几个:群晖端NFS权限没配好、NFS版本不匹配、或者防火墙没放行。可以尝试指定NFS版本:
sudo mount -t nfs -o vers=3 192.168.1.10:/volume1/share /mnt/nas3.4 写入fstab实现开机自动挂载
手动挂载没问题后,就可以写进/etc/fstab了。编辑fstab文件:
sudo vim /etc/fstab添加一行:
192.168.1.10:/volume1/share /mnt/nas nfs defaults,_netdev,vers=3 0 0这里几个参数解释一下:
defaults:使用默认挂载选项(rw, suid, dev, exec, auto, nouser, async)。_netdev:告诉系统这是网络设备,等网络就绪后再挂载。这个参数非常关键,不加的话开机时网络还没起来就尝试挂载,会失败。vers=3:指定NFS版本。如果你的群晖和Linux都支持NFSv4,也可以写vers=4.1。- 最后两个
0 0:第一个0表示不dump备份,第二个0表示不开机fsck检查。
保存后,用sudo mount -a测试一下fstab有没有语法错误。如果没有报错,说明配置正确。
提示:如果你的Linux服务器有多个网卡或者网络启动较慢,可以在fstab里加上
x-systemd.automount和x-systemd.mount-timeout=30,让systemd在挂载超时后自动重试,避免开机卡住。
3.5 挂载后的权限问题处理
NFS挂载最常见的问题就是权限。你可能会发现挂载上去了,但普通用户读写不了。这是因为NFS默认会把客户端的root用户映射成nobody,导致权限不对。
解决办法有两种:
方案一:在群晖端NFS权限里设置Squash为"无映射"。这样客户端的root就是root,权限不会丢。但安全性略低,适合内网可信环境。
方案二:在挂载参数里指定uid和gid。比如:
192.168.1.10:/volume1/share /mnt/nas nfs defaults,_netdev,vers=3,uid=1000,gid=1000 0 0这样挂载后的文件所有者就是uid=1000的用户。你可以用id 用户名查看目标用户的uid和gid。
4. 那些年我踩过的坑和排查思路
4.1 配了静态IP反而连不上DSM
这个坑我踩过一次。当时把NAS的IP设成了192.168.1.10,结果发现这个IP已经被另一台设备占用了,导致两台设备IP冲突,谁都连不上。排查方法是:把NAS网线拔掉,在电脑上ping那个IP,如果有回应,说明被占用了,换一个。
还有一种情况是网关填错了。比如路由器地址是192.168.1.1,你填成了192.168.1.254,那NAS就出不了网。确认网关地址的方法是在电脑上运行ipconfig(Windows)或ip route(Linux),看默认网关是多少。
4.2 NFS挂载开机失败但手动挂载正常
这个问题几乎每个人都遇到过。原因就是开机时网络还没就绪,fstab就尝试挂载NFS,自然失败。解决方案就是加_netdev参数。如果加了还是不行,可以再加x-systemd.automount:
192.168.1.10:/volume1/share /mnt/nas nfs defaults,_netdev,x-systemd.automount,x-systemd.mount-timeout=30,vers=3 0 0x-systemd.automount的作用是:系统启动时不立即挂载,而是在第一次访问该目录时才挂载。这样彻底避免了开机时网络未就绪的问题。
4.3 NFS挂载后中文文件名乱码
这个问题的根源是字符编码不一致。群晖默认使用UTF-8编码,大部分Linux也是UTF-8,一般不会乱码。但如果你挂载的Linux系统locale设置的是GBK或者其他编码,就会乱码。
检查方法:
locale确认LANG和LC_ALL都是en_US.UTF-8或zh_CN.UTF-8。如果不是,修改/etc/locale.conf或/etc/default/locale,设置成UTF-8,然后重启或者重新登录。
4.4 群晖DSM更新后NFS权限丢失
DSM大版本更新(比如从7.1升到7.2)后,偶尔会出现NFS共享权限被重置的情况。表现是之前能挂载的NFS目录突然挂不上了,报"access denied"。解决办法是重新到"控制面板 → 共享文件夹 → NFS权限"里检查一遍,把权限重新配好。
预防措施:在DSM更新前,截图保存一下NFS权限配置,更新后对照检查。
4.5 防火墙导致的NFS连接超时
如果Linux端showmount能看到共享,但mount就是超时,大概率是防火墙问题。群晖的防火墙在"控制面板 → 安全性 → 防火墙"里,确认NFS相关端口(2049、111等)没有被拦截。Linux端也要确认firewalld或ufw没有挡住NFS客户端的出站请求。
排查命令:
# 测试NFS端口是否可达 telnet 192.168.1.10 2049 # 查看本机防火墙状态 sudo firewall-cmd --state sudo ufw status5. 几个让NAS网络更稳的进阶建议
5.1 给NAS配一个主机名
除了静态IP,建议在路由器或本地DNS里给NAS配一个主机名,比如nas.home或nas.lan。这样即使将来IP再变(比如换了网段),你只需要改DNS记录,所有通过主机名访问的服务都不用动。
在Linux端,可以在/etc/hosts里加一行:
192.168.1.10 nas.home然后fstab里就可以用主机名代替IP:
nas.home:/volume1/share /mnt/nas nfs defaults,_netdev,vers=3 0 0这样IP变了只需要改hosts文件,fstab不用动。
5.2 双网卡做链路聚合或故障转移
如果你的群晖是双网卡机型(比如DS920+、DS1621+等),可以在"控制面板 → 网络 → 网络界面"里把两个网卡绑定成一个Bond,模式选"自适应负载均衡"或"主动备份"。主动备份模式下,一个网卡断了另一个自动接管,NAS的网络不会中断。
不过要注意,链路聚合需要交换机支持LACP,家用普通交换机可能不支持。如果只是想做故障转移,主动备份模式不需要交换机特殊配置。
5.3 用DDNS配合静态IP做远程访问
静态IP配好之后,如果你有公网IP,可以配合群晖的DDNS服务(控制面板 → 外部访问 → DDNS)做一个固定域名。这样在外面也能通过域名访问NAS。不过这个话题涉及的内容比较多,这里就不展开了,核心思路就是:静态IP是基础,DDNS是锦上添花。
5.4 定期检查IP占用情况
即使配了静态IP,也建议每隔一段时间检查一下网段里有没有IP冲突。方法很简单,在路由器后台看看已连接设备列表,确认没有两个设备用同一个IP。如果发现冲突,及时调整。
另外,如果你在NAS上跑了Docker,注意Docker默认会创建自己的网桥,占用一个网段(通常是172.17.0.0/16)。这个一般不会和你的局域网网段冲突,但如果你的局域网用的是172.17.x.x,那就需要改Docker的默认网段配置。
5.5 备份网络配置
DSM支持导出系统配置(控制面板 → 更新和还原 → 配置备份),建议在配好静态IP和NFS权限后做一次配置备份。这样万一NAS重置或者换机,恢复配置就能省去重新设置的麻烦。
配置备份文件不大,几百KB到几MB,存到本地电脑或者云盘都行。恢复的时候在同一个界面选择还原即可。
我在实际使用中最大的体会是:静态IP这件事,配的时候花十分钟,不配的话每次出问题都要花半小时排查。尤其是家里有多个设备、跑了多个服务的情况下,IP稳定是一切的基础。NFS挂载的坑主要集中在权限和开机挂载顺序上,把_netdev和Squash这两个点搞清楚,基本就能解决90%的问题。