FreeSWITCH没有监听8021端口问题记录

FreeSwitch启动之后,查看端口,发现没有监听8021端口,也就是没有监听EventSocket端口。

之前解决过这个问题,苦于没有做记录;今天又发生了这个问题,顿时手忙脚乱,现在把这个问题解决方法做个记录。

问题描述

FreeSwitch正常启动,没有报错,查看端口,发现8021没有被监听。如下图。

问题分析

FreeSwitch启动成功,也就是FreeSwitch核心功能正常运行,8021端口没有被监听,也就是mod_event_socket模块启动失败。

mod_event_socket模块默认是自动加载

分析日志

以mod_event_socket为关键词,搜索FreeSwitch的启动日志,发现这个模块启动失败了Thread ended for mod_event_socket,如下。

1
2
3
4
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for mod_event_socket
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for CORE_SOFTTIMER_MODULE
[DEBUG] switch_loadable_module.c:735 Chat Thread Started
[NOTICE] switch_loadable_module.c:115 Thread ended for mod_event_socket

正常的日志

如果该模块启动成功会由mod_event_socket.c打印出监听的端口,如下。

1
2
3
4
5
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for mod_event_socket
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for CORE_SOFTTIMER_MODULE
[DEBUG] switch_loadable_module.c:735 Chat Thread Started
[INFO] switch_time.c:615 Clock synchronized to system time.
[DEBUG] mod_event_socket.c:2961 Socket up listening on 0.0.0.0:8021

哪些操作导致event_socket启动失败

程序之前运行是正常的,在这之间做了哪些操作会导致启动失败?回顾了之前的操作有修改文件数限制,关闭IPv4转发,关闭IPv6功能等。

接着查看event_socket的配置文件conf/autoload_configs/event_socket.conf.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<configuration name="event_socket.conf" description="Socket Client">
  <settings>
    <param name="nat-map" value="false"/>
    <param name="listen-ip" value="::"/>
    <param name="listen-port" value="8021"/>
    <param name="password" value="ClueCon"/>
    <param name="apply-inbound-acl" value="lan"/>
    <!--<param name="stop-on-bind-error" value="true"/>-->
  </settings>
</configuration>

listen-ip是IPv6地址?刚刚不是把IPv6关闭了吗?把它改成IPv4本地回环地址试试。如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<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="ClueCon"/>
    <param name="apply-inbound-acl" value="lan"/>
    <!--<param name="stop-on-bind-error" value="true"/>-->
  </settings>
</configuration>

修改监听地址

修改之后重启FreeSwitch再次查看端口情况,已经在0.0.0.0上监听了8021端口了。

总结

因为没有IPv6地址所以监听失败,修改为0.0.0.0就可以监听成功了。

  • 出现的问题要及时做记录,以便下次查找
  • 查看日志定位问题,查看配置文件以免有疏忽
  • 回顾之前的操作,与问题对比靠拢
updatedupdated2020-07-232020-07-23