mirror of
https://gitee.com/270580156/weiyu.git
synced 2025-12-30 02:42:25 +00:00
3.8 KiB
3.8 KiB
FreeSwitch ESL 连接问题解决状态报告
📊 问题分析总结
✅ 已确认的情况
- 网络连通性: 正常 (ping 响应时间 ~29ms)
- 端口访问: 端口8021可访问
- FreeSwitch服务: 运行中
- 问题根因: ACL (Access Control List) 配置限制外部连接
❌ 当前问题状态
- ESL响应: 仍然返回 "text/rude-rejection"
- 错误消息: "Access Denied, go away."
- Java连接: 因ACL限制无法建立ESL连接
🛠️ 已完成的工作
1. Java端增强 ✅
- 智能错误诊断: 自动识别ACL拒绝、连接超时等错误类型
- 连接重试机制: 指数退避策略,最多3次重试
- 健康状态监控: Spring Boot Actuator集成
- 启动时诊断: 应用启动自动检测FreeSwitch连接状态
- 管理API: 提供连接测试和状态查询REST接口
2. 诊断工具创建 ✅
- diagnose_and_fix.sh: 完整诊断脚本
- monitor_esl_status.sh: 实时连接状态监控
- one_click_fix.sh: 服务器端一键修复脚本
- IMMEDIATE_FIX_COMMANDS.md: 立即修复指令
3. 配置文件准备 ✅
- event_socket.conf.xml: 已准备无ACL限制的配置
- 修复脚本: 包含自动备份和配置替换逻辑
🚨 待执行的关键步骤
服务器端修复 (需要SSH访问)
在FreeSwitch服务器 (14.103.165.199) 上执行:
# 一行命令修复
cp /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml.backup && cat > /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml << 'EOF'
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="0.0.0.0"/>
<param name="listen-port" value="8021"/>
<param name="password" value="bytedesk123"/>
</settings>
</configuration>
EOF
systemctl restart freeswitch
📈 预期修复结果
修复成功后的ESL响应
Content-Type: auth/request
Content-Length: 0
Java应用连接状态
- 健康检查: 从 DOWN 变为 UP
- 连接测试: API返回成功状态
- 事件监听: 可正常接收FreeSwitch事件
🔍 验证步骤
1. 服务器端验证
# 检查端口监听
netstat -tlnp | grep :8021
# 测试本地连接
echo "" | nc localhost 8021
# 检查服务状态
systemctl status freeswitch
2. 客户端验证
# 运行监控脚本
./monitor_esl_status.sh
# 测试Java应用健康状态
curl http://localhost:9003/actuator/health/freeSwitch
# 测试ESL连接
curl -X POST http://localhost:9003/api/v1/freeswitch/test-connection
🔒 安全考虑
⚠️ 当前修复方案移除了所有ACL限制,仅用于解决连接问题
生产环境建议
修复成功后,建议添加IP白名单配置:
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="0.0.0.0"/>
<param name="listen-port" value="8021"/>
<param name="password" value="bytedesk123"/>
<param name="apply-inbound-acl" value="bytedesk_safe"/>
</settings>
</configuration>
然后在 acl.conf.xml 中添加:
<list name="bytedesk_safe" default="deny">
<node type="allow" cidr="YOUR_JAVA_APP_IP/32"/>
</list>
📞 后续支持
如果修复仍然失败
- 检查是否有多个配置文件
- 确认FreeSwitch版本和配置目录
- 查看详细的FreeSwitch日志
- 考虑使用SSH隧道作为临时方案
联系信息
提供以下信息以获取进一步支持:
- 服务器修复命令的执行结果
- FreeSwitch日志输出
- 配置文件的实际位置和内容
状态: 等待服务器端配置修复
优先级: 高
预计解决时间: 执行修复命令后立即生效