首页/网络/常用端口速查/4369 EPMD Erlang 端口映射

4369 EPMD Erlang 端口映射

Erlang 分布式节点发现端口:RabbitMQ 集群、CouchDB 集群等 BEAM 系系统启动时最先监听的就是它。

常用端口速查网络更新于 2026-10-13

EPMD 是什么

EPMD(Erlang Port Mapper Daemon)是 Erlang 分布式节点体系的端口映射服务:每个节点启动时向它注册自己的名字与监听端口,其他节点通过它完成查找后再直连通信。默认监听 TCP 4369,RabbitMQ、CouchDB 等基于 BEAM 的系统集群化时都靠它。节点之间的实际通信走随机高阶端口,因此只放行 4369 并不足以让集群组建成功。

基本信息

服务EPMD(Erlang Port Mapper Daemon)
协议TCP 4369;节点通信走可配置的高阶端口段
典型宿主RabbitMQ、CouchDB、基于 Erlang 的通信与游戏后端
认证机制Erlang 分布式 cookie
安全等级仅集群内网,cookie 必须保密

典型使用场景

  • RabbitMQ 集群组建:节点之间通过 EPMD 找到彼此后再建立分布式连接
  • 排障:新节点无法加入集群时,确认 4369 与节点通信端口是否互通
  • 容量规划:固定节点通信端口段,便于防火墙按段放行与审计
  • 安全评估:确认 cookie 是否为默认值、EPMD 是否对外可达
  • 跨机房设计:延迟敏感场景改用 federation 或 shovel 做跨域分发

查询 EPMD 注册的节点

查询 EPMD 注册的节点
epmd -names                          # 列出本机注册的节点名与端口
ss -lntp | grep 4369
rabbitmqctl cluster_status           # 集群视角的节点与分区状态
rabbitmq-diagnostics ping            # 节点运行状态快速判定

固定节点通信端口(RabbitMQ 示例)

固定节点通信端口(RabbitMQ 示例)
# /etc/rabbitmq/rabbitmq.conf
# 固定 Erlang 分布式监听端口,便于防火墙收敛
kernel.inet_dist_listen_min = 35672
kernel.inet_dist_listen_max = 35682
# 集群防火墙需放行:4369 与上面的端口段(节点之间互访)

集群放行清单

端口用途注意点
4369/tcpEPMD 节点注册与查找节点间互访,集群内网即可
高阶端口段Erlang 分布式通信需固定后按段放行
5672/tcpAMQP 客户端业务网段按需放行
15672/tcp管理界面仅管理网段,默认账号要改
Erlang 分布式 cookie 是节点间唯一的凭据:一旦泄露,攻击者可直接接管节点执行代码;集群内任意主机都能读取到它时,等于整个集群失守。
网络规划:除 4369 与固定后的分布式端口段,还要放行客户端与管理端口;跨机房组集群对延迟敏感,通常改用 federation 或 shovel 做跨域分发更稳。

易错点

  • 只放 4369 不放节点通信端口段:集群永远组不起来,节点列表里也看不出直接原因
  • cookie 使用默认值:内网任意主机都能接管集群节点
  • 把 EPMD 暴露到业务网之外:节点名与端口一览无余,为后续攻击提供坐标
  • 节点通信端口未固定就写防火墙规则:重启后端口漂移,集群间歇性分裂

数据来源与参考

  • Erlang/OTP 官方文档(epmd)
  • IANA 端口注册表(epmd)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌