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 查看状态 |
发表回复