微服务内网端口不通排查记录(gateway 访问 crm-system 9202)

一、问题背景

环境中存在两台 ECS:

  • 机器 A
    公网 IP:114.xx.xx.xx
    内网 IP:172.16.0.41

  • 机器 B
    公网 IP:47.xx.xx.xx
    内网 IP:172.16.0.42

部署服务及端口:

  • gateway:8080
  • crm-global:9206
  • crm-system:9202

请求流程:

客户端 → gateway → Nacos 获取内网 IP → 转发至 crm-system

二、问题现象

  1. gateway 日志报错
  • 172.16.0.41 上的 gateway 访问报错 No route to host 172.16.0.42:9206
  • 172.16.0.42 上的 gateway 访问报错 No route to host 172.16.0.41:9206

错误信息:

No route to host 172.16.0.xx:9206

  1. 本机访问正常,跨机器访问失败
  • gateway 访问本机服务端口正常
  • gateway 访问另一台机器对应端口失败
  1. 对比端口连通性
  • 9202(crm-system):两台机器互通
  • 9206(crm-global):两台机器互不通
  1. telnet 验证
telnet 172.16.0.41 9206
telnet 172.16.0.42 9206

均返回:

No route to host

公网 IP + 9202 / 9206 均无法访问,说明属于内网通信端口。

三、排查过程

1. 确认服务监听状态

ss -lntp | grep 9206

两台机器均确认 Java 进程已监听 9206。

2. 确认 firewalld 状态

systemctl status firewalld

两台机器 firewalld 均处于 active 状态。

3. 对比防火墙端口放行情况

机器 A:

firewall-cmd --list-ports

未发现 9206/tcp。

机器 B:

firewall-cmd --list-ports

未发现 9206/tcp。

四、解决方案

在两台机器上分别执行以下命令,统一放行 crm-global 使用的 9206 端口:

firewall-cmd --zone=public --add-port=9206/tcp --permanent
firewall-cmd --reload

五、验证结果

  • telnet 172.16.0.41 9206:成功
  • telnet 172.16.0.42 9206:成功
  • gateway 跨节点访问恢复正常
  • 日志中不再出现 No route to host

六、经验总结

  1. 多节点微服务环境中,防火墙端口配置必须保持一致
  2. 端口问题优先排查 firewalld,再排查安全组和路由
  3. 本机正常、跨机器失败,90% 是防火墙或安全组问题

七、改进建议

  • 使用自动化脚本统一管理端口放行
  • 定期巡检节点 firewalld 端口配置,防止配置漂移
  • 在上线 checklist 中加入端口一致性校验
作者:张三  创建时间:2026-01-06 17:44
最后编辑:张三  更新时间:2026-01-14 17:39