银河麒麟V10防火墙下访问NFS共享:端口开放全攻略

一、问题背景:防火墙与NFS服务的端口博弈

在银河麒麟V10系统中启用防火墙后,直接访问NFS共享目录时可能遇到RPC: Unable to receive等网络阻断问题。这是因为NFS服务依赖多个端口协同工作,而防火墙默认未开放这些端口。本文将详细介绍如何在保留防火墙防护能力的前提下,安全开放NFS所需端口,实现共享目录的正常访问。

二、NFS服务的端口需求解析

NFS(Network File System)是基于RPC(Remote Procedure Call)架构的服务,其通信依赖以下核心端口:

服务组件 端口号 协议 作用描述
rpcbind 111 TCP/UDP 负责RPC端口映射,是NFS通信的基础
nfs-server 2049 TCP NFS数据传输的主端口
mountd 20048 TCP/UDP 处理客户端挂载请求

注意:部分环境中mountd可能使用动态端口(由rpcbind分配),此时需通过rpcinfo -p <服务器IP>命令查询实际端口,但静态端口配置更便于防火墙管理。

三、命令行方式开放端口(推荐)

3.1 永久开放端口(重启后生效)

以root权限执行以下命令,分别开放NFS相关端口:

# 开放rpcbind端口(TCP协议)
firewall-cmd --permanent --add-port=111/tcp

# 开放NFS主端口(TCP协议)
firewall-cmd --permanent --add-port=2049/tcp

# 开放mountd端口(TCP协议,如需UDP支持可添加--add-port=20048/udp)
firewall-cmd --permanent --add-port=20048/tcp

3.2 重新加载防火墙规则

firewall-cmd --reload

此步骤用于使新配置立即生效,无需重启系统。

四、图形界面方式开放端口(适合新手)

4.1 打开安全中心

点击桌面左下角“开始菜单”,搜索并打开安全中心

4.2 进入防火墙自定义配置

在安全中心界面中,选择左侧网络保护,点击右侧“防火墙”模块的自定义按钮。

4.3 添加端口规则

在弹出的“自定义配置”窗口中,点击添加规则,按以下参数分别创建规则:

  1. rpcbind端口(TCP/UDP 111)

    • 协议:选择TCPUDP
    • 端口:输入111
    • 方向:选择入站
    • 操作:允许连接
  2. NFS主端口(TCP 2049)

    • 协议:选择TCP
    • 端口:输入2049
    • 方向:入站
    • 操作:允许连接
  3. mountd端口(TCP/UDP 20048)

    • 协议:选择TCPUDP
    • 端口:输入20048
    • 方向:入站
    • 操作:允许连接

4.4 保存并应用配置

完成所有端口添加后,点击保存,防火墙会自动应用新规则。

五、端口连通性验证

5.1 客户端验证(以NFS服务器IP为192.168.1.21为例)

# 验证rpcbind端口(TCP 111)
telnet 192.168.1.21 111

# 验证NFS主端口(TCP 2049)
telnet 192.168.1.21 2049

# 验证mountd端口(TCP 20048)
telnet 192.168.1.21 20048

成功标志:若命令行显示Connected to...或进入空白界面,说明端口可通;若提示connect: refused,则需检查端口配置或服务器状态。

5.2 服务器端验证(检查端口监听情况)

# 查看rpcbind是否监听111端口
ss -ant | grep 111

# 查看nfs-server是否监听2049端口
ss -ant | grep 2049

# 查看mountd是否监听20048端口
ss -ant | grep 20048

正常结果:显示LISTEN状态,如0.0.0.0:1110.0.0.0:2049等。

六、完整流程验证:访问NFS共享目录

6.1 查看服务器共享目录

showmount -e 192.168.1.21

预期输出:显示服务器导出的共享目录,如/data/nfs-share 192.168.1.0/24

6.2 挂载共享目录

# 创建本地挂载点
mkdir -p /mnt/nfs-share

# 临时挂载(需root权限)
mount -t nfs 192.168.1.21:/data/nfs-share /mnt/nfs-share

6.3 测试读写权限

touch /mnt/nfs-share/test.txt  # 创建测试文件
ls /mnt/nfs-share/test.txt     # 验证文件存在

七、高级技巧:动态端口场景处理

若NFS服务器使用动态端口(默认配置),需通过以下方式获取实际端口:

# 在服务器端查询mountd端口
rpcinfo -p 127.0.0.1 | grep mountd
# 输出示例:rpcbind   100005    1-4  tcp   20048  mountd

此时需在防火墙中开放查询到的动态端口(如20048),而非固定端口。为避免动态端口带来的管理复杂度,建议在服务器端配置静态端口(修改/etc/sysconfig/nfs文件指定端口)。

八、总结

通过本文步骤,可在银河麒麟V10系统中实现防火墙开启状态下的NFS共享访问,既保障了系统安全,又满足了网络文件服务需求。关键操作要点如下:

  1. 明确NFS服务的三大核心端口:111(rpcbind)、2049(nfs)、20048(mountd)。
  2. 优先使用命令行批量配置端口规则,提升管理效率。
  3. 结合telnetss命令验证端口连通性与监听状态。

合理配置防火墙规则,既能抵御外部攻击,又能为NFS等服务提供安全的运行环境,是服务器管理的重要实践。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐