如何在centos7中正确配置netfilter防火墙规则?

网络文件系统(NFS)是一种在网络中不同计算机之间共享文件的分布式文件系统协议,它允许客户端系统像访问本地存储一样透明地访问服务器上的远程文件,在 CentOS 7 系统中,配置和使用 NFS 是一项非常实用的技能,尤其适用于需要集中存储数据的场景,如 Web 服务器集群共享静态资源、开发环境共享代码库或提供统一的用户主目录,本文将详细介绍在 CentOS 7 上部署 NFS 服务端和客户端的完整流程。

如何在centos7中正确配置netfilter防火墙规则?

环境准备与软件安装

在开始之前,我们需要准备两台 CentOS 7 机器,一台作为 NFS 服务器,另一台作为客户端,假设它们的 IP 地址如下:

  • NFS 服务器: 192.168.1.10
  • NFS 客户端: 192.168.1.20

在服务器和客户端上都需要安装 nfs-utils 软件包,它提供了 NFS 服务和客户端所需的所有工具。

在服务器端 (192.168.1.10) 执行:

sudo yum install -y nfs-utils rpcbind

rpcbind 是一个必需的服务,它负责管理 RPC(远程过程调用)服务的端口号映射。

在客户端 (192.168.1.20) 执行:

sudo yum install -y nfs-utils

服务器端配置

安装完成后,接下来配置 NFS 服务器。

启动并设置服务开机自启
NFS 服务依赖于 rpcbind,因此必须先启动并设置 rpcbind

sudo systemctl start rpcbind
sudo systemctl enable rpcbind
sudo systemctl start nfs-server
sudo systemctl enable nfs-server

创建共享目录
创建一个用于共享的目录,并设置适当的权限,我们创建 /shared/data 目录。

sudo mkdir -p /shared/data
sudo chmod 755 /shared/data

配置导出目录
NFS 的核心配置文件是 /etc/exports,我们需要在这个文件中定义要共享的目录以及允许访问的客户端及其权限。
编辑 /etc/exports 文件:

sudo vi /etc/exports

在文件末尾添加以下行:

如何在centos7中正确配置netfilter防火墙规则?

/shared/data 192.168.1.20(rw,sync,no_root_squash,no_subtree_check)

这行配置的含义是:

  • /shared/data: 要共享的目录路径。
  • 168.1.20: 允许访问此共享的客户端 IP 地址,也可以使用网段(如 168.1.0/24)或主机名。
  • (rw,sync,no_root_squash,no_subtree_check): 访问权限选项,括号内不能有空格。
    • rw: 允许读写操作。
    • sync: 数据同步写入磁盘,保证数据一致性,但性能稍低。
    • no_root_squash: 允许客户端的 root 用户在共享目录上拥有服务器的 root 权限,为了安全,仅在信任的网络环境中使用。
    • no_subtree_check: 禁用子目录检查,可以提高性能和稳定性。

使配置生效
保存 /etc/exports 文件后,使用以下命令重新加载配置,使其立即生效:

sudo exportfs -a

可以使用 showmount -e 命令查看当前服务器上已导出的共享列表。

客户端挂载与使用

在客户端机器上,我们需要将服务器共享的目录挂载到本地。

创建挂载点
在客户端创建一个目录作为挂载点。

sudo mkdir -p /mnt/nfs_data

执行挂载
使用 mount 命令进行挂载:

sudo mount -t nfs 192.168.1.10:/shared/data /mnt/nfs_data

验证挂载
挂载成功后,可以使用 df -hTmount | grep nfs 命令来验证。

df -hT | grep nfs

输出应类似如下:

168.1.10:/shared/data nfs4       50G  1.5G   48G   4% /mnt/nfs_data

你可以在 /mnt/nfs_data 目录中创建、读取和删除文件,这些操作都会实时反映到服务器的 /shared/data 目录中。

实现开机自动挂载

为了确保客户端重启后能自动挂载 NFS 共享,我们需要将其添加到 /etc/fstab 文件中。
编辑 /etc/fstab 文件:

如何在centos7中正确配置netfilter防火墙规则?

sudo vi /etc/fstab

在文件末尾添加以下行:

168.1.10:/shared/data /mnt/nfs_data nfs defaults,_netdev 0 0

这里的 _netdev 选项非常重要,它告诉系统这是一个网络设备,必须等待网络启动完成后再进行挂载,避免启动失败。

防火墙与NFS版本

防火墙配置
如果服务器开启了防火墙(默认 firewalld),需要开放 NFS 相关的服务。

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

NFS 版本选择
CentOS 7 默认支持 NFSv4 和 NFSv3,NFSv4 相比 NFSv3 有显著改进。

特性 NFSv3 NFSv4
端口 使用随机端口,需配置 lockdstatd 端口 仅使用 TCP 2049 端口,防火墙配置更简单
安全性 依赖 IP/主机名验证,无内置加密 支持 Kerberos 强认证和加密(更安全)
性能 性能良好 性能更优,尤其在处理大量小文件时
协议 无状态协议 有状态协议,网络中断恢复能力更强

在大多数新部署中,推荐使用 NFSv4,客户端在挂载时可以通过 -o vers=4 明确指定版本,但通常系统会自动协商使用最高版本。


相关问答FAQs

问题1:客户端挂载时出现 “Permission Denied” 错误,该如何排查?
解答: 这是一个常见问题,可以从以下几个方面进行排查:

  1. :检查客户端 IP 地址是否在允许列表中,权限选项(如 rw)是否正确,修改后记得执行 exportfs -r
  2. 服务器端目录权限:检查被共享的目录本身(如 /shared/data)的 Linux 权限(ls -ld /shared/data),确保运行挂载命令的用户或 NFS 客户端用户有足够的访问权限。
  3. SELinux 状态:SELinux 处于 Enforcing 模式,它可能会阻止 NFS 访问,可以临时关闭 SELinux(setenforce 0)测试,或永久设置布尔值允许 NFS 读写:setsebool -P nfs_export_all_rw on
  4. 防火墙:确认服务器防火墙已正确开放 nfs, mountd, rpc-bind 服务。


解答: no_root_squash 会带来严重的安全风险,因为它允许客户端的 root 用户直接操作服务器文件,更安全的做法是:

  1. :这样客户端的 root 用户请求会被映射到服务器上的一个匿名用户(通常是 nfsnobody),无法直接修改服务器的关键文件。
  2. 用户权限映射:在服务器和客户端上创建相同的普通用户(UID 和 GID 都为 1001 的 appuser),然后以该用户的身份进行文件操作,确保文件权限一致。
  3. 启用 NFSv4 和 Kerberos:这是最安全的方式,通过配置 Kerberos 认证,可以对用户进行强身份验证,并对网络传输的数据进行加密,有效防止未授权访问和数据窃听,但这需要搭建额外的 Kerberos 服务,配置相对复杂。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-11 01:55
下一篇 2025-10-11 02:01

相关推荐

  • CentOS系统下如何更新MySQL数据库的时间戳?

    在CentOS系统中管理和维护MySQL数据库时,了解如何查看和更新时间戳是一个常见需求,无论是为了数据追踪、备份管理还是故障排查,掌握时间相关的操作都能提高数据库管理的效率和准确性,本文将详细介绍在CentOS环境下如何查看MySQL的更新时间,以及如何通过不同方式调整或记录时间信息,同时提供实用的操作步骤和……

    2025-12-09
    004
  • Centos主题下载去哪里找?最新资源与安全安装指南

    CentOS作为一款广泛使用的Linux发行版,其默认主题虽然简洁实用,但许多用户希望根据个人喜好或品牌需求进行个性化定制,通过下载和应用不同的主题,可以显著提升桌面环境的视觉体验和操作舒适度,本文将详细介绍CentOS主题下载的相关知识,包括主题类型、获取途径、安装步骤及注意事项,帮助用户轻松实现系统美化,主……

    2025-11-22
    002
  • CentOS 7 /etc/sudoers 文件如何正确配置用户权限?

    在CentOS 7系统中,/etc/sudoers文件是控制用户权限的核心配置文件,它决定了哪些用户可以以超级用户或其他用户的身份执行命令,正确配置该文件对于系统安全和管理效率至关重要,本文将详细介绍/etc/sudoers文件的结构、配置方法、常见场景及注意事项,帮助管理员更好地管理用户权限,/etc/sud……

    2025-11-01
    008
  • CentOS i386系统还适用于哪些老旧硬件设备?

    CentOS i386的历史背景与应用场景CentOS i386是CentOS操作系统针对32位x86架构(也称为i386或i686)的发行版本,在64位处理器普及之前,32位系统广泛应用于个人电脑、服务器和嵌入式设备,CentOS作为Red Hat Enterprise Linux(RHEL)的社区克隆版,继……

    2025-11-22
    003

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信