折腾N天后,Fedora 18下NFS服务器终于搭建成功!

admin
在Fedora 18系统下,经过多次调试配置与问题排查,NFS服务器最终搭建成功,过程中涉及服务安装、参数优化、防火墙规则配置及权限设置等关键环节,解决了依赖冲突、网络访问异常等难题,目前服务器已稳定运行,可实现跨平台文件共享,为后续数据传输与协作提供了可靠支撑。

作为一枚Linux新手,最近在折腾Fedora 18下的文件共享时,被NFS服务器“虐”得不轻,从懵懂地跟着教程敲命令,到对着报错抓耳挠腮,再到最终看到客户端成功挂载共享目录时的狂喜,整个过程像坐过山车,今天就把这段“血泪史”和成功经验整理出来,希望能帮到同样在Fedora 18下折腾NFS的朋友。

背景:为什么选择NFS?

我的需求很简单:想在局域网内的两台Linux设备(一台Fedora 18服务器,一台Ubuntu客户端)之间共享目录,方便传输文件,对比了Samba(更适合Windows/Linux互访)和NFS(Linux原生轻量级文件共享),最终选了NFS——毕竟都是Linux系统,兼容性应该更好,配置也简单(理想很丰满……)。

准备工作:Fedora 18环境检查

在动手之前,先确认了服务器端的环境:

折腾N天后,Fedora 18下NFS服务器终于搭建成功!

  • 系统版本: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文件对空格和缩进极其

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码