关键在于切断非法节点的发现与连接路径:禁用多播发现,启用静态IP列表(需完全一致、禁用localhost/主机名),自定义非标端口并绑定专用网卡,配合防火墙ACL、VLAN隔离及安全组最小化开放,最后通过主动探测与DEBUG日志验证阻断效果。

防止非法节点接入心跳网络,关键在于切断其发现与连接路径,而非仅依赖事后检测。心跳网络本质是集群节点间维持拓扑一致性的专用通信通道,一旦被未授权节点混入,轻则引发频繁驱逐、日志刷屏,重则导致仲裁混乱、数据分裂甚至服务中断。
禁用多播发现,强制使用静态节点列表
默认的 TcpDiscoveryMulticastIpFinder 会监听 UDP 组播地址(如 228.1.2.4:47500),任何在同一广播域内的节点都可尝试加入——它不验证身份,也不过滤来源。
- 在所有节点配置中,显式替换为
TcpDiscoveryStaticIpFinder -
addresses列表必须完全一致,只包含可信物理 IP + 明确端口(如192.168.5.10:42500) - 严禁使用
localhost、127.0.0.1或主机名(DNS 解析不稳定时会导致发现失败)
自定义发现与通信端口,并绑定到专用网卡
默认端口(47500/47100)极易被扫描工具识别,暴露面大;同时,若节点有多张网卡,需确保心跳流量只走指定私网接口。
- 将发现端口设为非标准值(如
42500),通信端口设为另一非标值(如42100) - 在
TcpDiscoverySpi和TcpCommunicationSpi中分别调用setLocalAddress("192.168.5.10"),绑定到心跳专用网卡 IP - 配合系统防火墙,仅放行该 IP 的这两个端口,拒绝其他源地址访问
叠加网络层隔离与访问控制
应用层配置是基础,但网络层策略才是兜底防线。心跳网络应物理或逻辑隔离,杜绝跨网段、跨VLAN直连可能。
- 为心跳链路单独划分 VLAN 或使用 VXLAN 隧道,与业务网、管理网严格分离
- 在交换机或宿主机上启用 ACL,限制仅允许已知节点 MAC/IP 互访心跳端口
- 若运行在云环境,利用安全组规则实现“最小开放”:只允许可信节点 IP 段访问自定义心跳端口
补充验证手段:主动探测与日志审计
配置生效后需验证是否真正阻断非法接入,不能仅依赖“没报错”就认为安全。
- 在非集群节点上尝试 telnet 或 nc 连接目标心跳端口,确认连接被拒绝或超时
- 开启 Ignite 的
DEBUG级日志(org.apache.ignite.spi.discovery.tcp),观察是否还有“unknown node”类警告 - 定期检查防火墙连接跟踪表,确认无异常 ESTABLISHED 连接指向心跳端口

















