在Fedora 18系统下,经过多次调试配置与问题排查,NFS服务器最终搭建成功,过程中涉及服务安装、参数优化、防火墙规则配置及权限设置等关键环节,解决了依赖冲突、网络访问异常等难题,目前服务器已稳定运行,可实现跨平台文件共享,为后续数据传输与协作提供了可靠支撑。
作为一枚Linux新手,最近在折腾Fedora 18下的文件共享时,被NFS服务器“虐”得不轻,从懵懂地跟着教程敲命令,到对着报错抓耳挠腮,再到最终看到客户端成功挂载共享目录时的狂喜,整个过程像坐过山车,今天就把这段“血泪史”和成功经验整理出来,希望能帮到同样在Fedora 18下折腾NFS的朋友。
背景:为什么选择NFS?
我的需求很简单:想在局域网内的两台Linux设备(一台Fedora 18服务器,一台Ubuntu客户端)之间共享目录,方便传输文件,对比了Samba(更适合Windows/Linux互访)和NFS(Linux原生轻量级文件共享),最终选了NFS——毕竟都是Linux系统,兼容性应该更好,配置也简单(理想很丰满……)。
准备工作:Fedora 18环境检查
在动手之前,先确认了服务器端的环境:

- 系统版本:Fedora 18(2013年发布的“Spherical Cow”,虽然老了点,但手头设备有限,先凑合用)
- 网络环境:局域网内,两台设备能互相ping通(服务器IP:192.168.1.100,客户端IP:192.168.1.101)
- 需要共享的目录:
/home/share(提前创建好,并赋予读写权限)
搭建步骤:从安装到配置
安装NFS相关软件包
Fedora 18的软件包管理器是yum,先更新一下系统(虽然可能没啥用,但仪式感不能少):
sudo yum update -y
然后安装NFS的核心组件:
nfs-utils:NFS的主程序,包括服务端工具和客户端工具rpcbind:远程过程调用(RPC)服务,NFS依赖它进行通信
执行安装命令:
sudo yum install nfs-utils rpcbind -y
安装过程中会自动解决依赖,一路回车就行,完成后可以检查一下包是否装上:
rpm -q nfs-utils rpcbind
配置共享目录
NFS服务端的配置文件是/etc/exports,这里需要定义“哪个目录共享给哪个客户端,以及共享权限”。
先创建共享目录(如果还没创建的话):
sudo mkdir -p /home/share sudo chmod 777 /home/share # 临时开放所有权限,测试用,生产环境建议按需设置
然后编辑/etc/exports文件:
sudo vim /etc/exports
在文件末尾添加以下内容(注意格式,别漏了空格):
/home/share 192.168.1.101(rw,sync,no_root_squash)
参数解释:
168.1.101:客户端IP,如果是允许所有客户端,可以用(但不安全,测试时可用);rw:客户端可读写(默认是ro只读);sync:数据同步写入内存和硬盘,保证数据安全(比async更安全,但性能稍低);no_root_squash:客户端以root身份访问时,映射为服务端的root用户(生产环境慎用,安全风险高,测试方便)。
保存退出后,检查exports配置语法是否正确:
sudo exportfs -a
如果没有报错,说明配置生效。
启动并设置开机自启
NFS依赖rpcbind服务,所以必须先启动rpcbind,再启动nfs服务:
# 启动rpcbind sudo systemctl start rpcbind # 设置rpcbind开机自启 sudo systemctl enable rpcbind # 启动nfs服务(Fedora 18下是nfs-server,注意不同版本服务名可能不同) sudo systemctl start nfs-server # 设置nfs-server开机自启 sudo systemctl enable nfs-server
检查服务状态:
sudo systemctl status rpcbind nfs-server
如果显示“active (running)”,说明服务启动成功。
踩坑实录:那些让我头秃的问题
服务启动后,我兴冲冲地在客户端尝试挂载,结果直接报错:“mount: mount to NFS server '192.168.1.100' failed (retrying)”,折腾了两天,终于找到几个“罪魁祸首”:
坑1:防火墙拦截!
Fedora 18默认开启防火墙(firewalld的前身iptables),NFS使用的端口(2049、111等)默认被拦截。
解决方法:
在服务端开放NFS相关端口:
# 开放rpcbind端口(111/tcp、111/udp) sudo iptables -A INPUT -p tcp --dport 111 -j ACCEPT sudo iptables -A INPUT -p udp --dport 111 -j ACCEPT # 开放nfs端口(2049/tcp、2049/udp) sudo iptables -A INPUT -p tcp --dport 2049 -j ACCEPT sudo iptables -A INPUT -p udp --dport 2049 -j ACCEPT # 开放mountd端口(随机端口,需通过rpcinfo获取) sudo iptables -A INPUT -p tcp -j ACCEPT sudo iptables -A INPUT -p udp -j ACCEPT # 保存防火墙规则 sudo service iptables save
重启防火墙:
sudo service iptables restart
坑2:SELinux捣乱!
Fedora 18默认开启SELinux,对NFS服务的权限限制很严格,可能导致客户端无法读写共享目录。
解决方法:
临时关闭SELinux测试(生产环境建议配置策略而非直接关闭):
sudo setenforce 0 # 临时关闭(重启后恢复)
如果关闭后能正常挂载,说明是SELinux的问题,永久关闭需修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,然后重启。
坑3:exports配置语法错误!
一开始我写/home/share 192.168.1.101(rw,sync,no_root_squash)时,在括号后面多打了个空格,结果exportfs -a直接报错,后来用vim的语法检查(syntax on)才发现问题——exports文件对空格和缩进极其

