微服务内网端口不通排查记录(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
二、问题现象
- 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
- 本机访问正常,跨机器访问失败
- gateway 访问本机服务端口正常
- gateway 访问另一台机器对应端口失败
- 对比端口连通性
- 9202(crm-system):两台机器互通
- 9206(crm-global):两台机器互不通
- 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
六、经验总结
- 多节点微服务环境中,防火墙端口配置必须保持一致
- 端口问题优先排查 firewalld,再排查安全组和路由
- 本机正常、跨机器失败,90% 是防火墙或安全组问题
七、改进建议
- 使用自动化脚本统一管理端口放行
- 定期巡检节点 firewalld 端口配置,防止配置漂移
- 在上线 checklist 中加入端口一致性校验
作者:张三 创建时间:2026-01-06 17:44
最后编辑:张三 更新时间:2026-01-14 17:39
最后编辑:张三 更新时间:2026-01-14 17:39