rpcbind 是 Linux 和 Unix 系统中非常重要的一个服务,它与 RPC(Remote Procedure Call,远程过程调用)机制密切相关。下面我们从概念、作用、安全性、版本信息等多个角度进行详细解释。


📌 一、rpcbind 是什么服务?

🔹 基本定义:

rpcbind 是一个用于 管理 RPC 服务端口映射 的守护进程服务(daemon),原名称叫 portmap,在现代系统中被替换为 rpcbind

🔹 所属协议:

  • 属于 SunRPC(ONC RPC)协议栈 的核心部分
  • 常用于 NFS、NIS、Kerberos 等依赖 RPC 的服务

📦 二、rpcbind 的主要功能

功能说明
🧭 端口注册RPC 服务启动时,向 rpcbind 注册自己(包括服务程序号、版本号、传输协议、端口号)
🔌 客户端端口查询客户端查询 rpcbind,以获得某个 RPC 服务对应的端口
🧾 显示注册服务可用 rpcinfo 命令查询当前已注册的 RPC 服务列表
🔐 支持 TCP/UDP可以同时支持 TCP 和 UDP 协议上的通信

🛠 三、rpcbind 常见用途

服务是否依赖 rpcbind用途
NFSv3✅ 是NFSv3 服务启动时依赖 rpcbind 进行端口映射
NFSv4❌ 否不再依赖 rpcbind,使用 2049 端口固定监听
NIS✅ 是Network Information Service
Mountd✅ 是NFS 挂载守护进程,依赖 rpcbind

🔐 四、安全性注意事项

由于 rpcbind 会公开 RPC 服务端口,如果不加以控制,可能被黑客扫描并利用漏洞攻击 RPC 服务

安全建议:

  • ✅ 禁止公网访问 rpcbind(通过 firewalld 或 iptables
  • ✅ 使用 tcp_wrappers 控制(配置 /etc/hosts.allow 和 /etc/hosts.deny
  • ✅ 关闭 rpcbind(如果只用 NFSv4 且不使用 NIS)

🧪 五、如何查看 rpcbind 是否运行?

# 检查 rpcbind 是否在运行
systemctl status rpcbind

# 查看监听的端口(默认是 111)
netstat -tunlp | grep 111

# 列出所有注册的 RPC 服务
rpcinfo -p

输出示例:

   program vers proto   port
    100000    4   tcp    111  rpcbind
    100003    3   udp   2049  nfs
    100005    3   udp   32777 mountd

🧾 六、rpcbind 的版本信息如何查看?

rpcbind -v

或者查看版本文件:

rpm -q rpcbind   # 对于基于 RPM 的系统如 CentOS/RHEL
apt show rpcbind # 对于 Debian/Ubuntu

输出示例:

rpcbind-0.2.4-16.el8.x86_64

🧩 七、常用配置文件位置

文件路径作用
/etc/sysconfig/rpcbind控制是否启用 rpcbind,通常包含启动参数
/etc/hosts.allow/etc/hosts.deny用于访问控制

📘 总结

属性内容
服务名称rpcbind(旧名 portmap
作用映射 RPC 服务端口,供客户端查找使用
默认端口111/tcp 和 111/udp
是否必须对 NFSv3/NIS 等服务必要;对 NFSv4 可禁用
安全风险高,需限制访问范围,避免暴露给公网
查看命令rpcinfo -p 查看端口映射,systemctl status rpcbind 查看状态