美文网首页
Freeswitch ldns crash问题分析

Freeswitch ldns crash问题分析

作者: 安安爸Chris | 来源:发表于2018-07-25 15:44 被阅读0次

先来看一个FS的coredump的堆栈信息。 你看到这个慌不慌?

#0  0x00007f62d15af1f7 in raise () from /usr/lib64/libc.so.6
#1  0x00007f62d15b08e8 in abort () from /usr/lib64/libc.so.6
#2  0x00007f62d15eef47 in __libc_message () from /usr/lib64/libc.so.6
#3  0x00007f62d1689d87 in __fortify_fail () from /usr/lib64/libc.so.6
#4  0x00007f62d1687f40 in __chk_fail () from /usr/lib64/libc.so.6
#5  0x00007f62d1689cf7 in __fdelt_warn () from /usr/lib64/libc.so.6
#6  0x00007f62b7bd0095 in ldns_sock_wait () from /usr/lib64/libldns.so.1
#7  0x00007f62b7bd057f in ldns_udp_send () from /usr/lib64/libldns.so.1
#8  0x00007f62b7bd0d1a in ldns_send_buffer () from /usr/lib64/libldns.so.1
#9  0x00007f62b7bd1029 in ldns_send () from /usr/lib64/libldns.so.1
#10 0x00007f62b7bd5e9d in ldns_resolver_send_pkt () from /usr/lib64/libldns.so.1
#11 0x00007f62b7bd62c2 in ldns_resolver_send () from /usr/lib64/libldns.so.1
#12 0x00007f62b7bd6400 in ldns_resolver_query () from /usr/lib64/libldns.so.1
#13 0x00007f62b7dfd3d0 in ldns_lookup () from /usr/lib64/freeswitch/mod/mod_enum.so
#14 0x00007f62b7dfd61a in enum_lookup () from /usr/lib64/freeswitch/mod/mod_enum.so
#15 0x00007f62b7dfd817 in enum_dialplan_hunt () from /usr/lib64/freeswitch/mod/mod_enum.so
#16 0x00007f62d3d57dbf in switch_core_session_run () from /usr/lib64/libfreeswitch.so.1
#17 0x00007f62d3d5033e in switch_core_session_thread () from /usr/lib64/libfreeswitch.so.1
#18 0x00007f62d3d4bd83 in switch_core_session_thread_pool_worker () from /usr/lib64/libfreeswitch.so.1
#19 0x00007f62d4012900 in dummy_worker () from /usr/lib64/libfreeswitch.so.1
#20 0x00007f62d2017e25 in start_thread () from /usr/lib64/libpthread.so.0
#21 0x00007f62d167234d in clone () from /usr/lib64/libc.so.6

反正一开始我慌的一批。FreeSwitch的coredump,我又要开始扒代码了。

镇定下来一看,好像还不是FS的锅。问题出在ldns三方库上。根据coredump的时间,在FS日志中找一找看看是否有线索。


coredump时日志位置

再根据这里的提示找一下源码


mod_emun:495

看到这里难道和resolv.conf有关? 这个和DNS解析有关,检查了这个文件,也没有太大问题。应该不是这个原因。

在看一下日志,这里的17940046812410296实际上是拨号计划里的DestinationNumber。为什么会有这么奇怪的DestinationNumber?
我检查了FS上的拨号计划,里面也没有配置过如此怪异的DestinationNumber。难道是网络上的攻击?

再次查看日志,发先这种奇怪的DestinationNumber出现次数比较多。

还是问一下谷歌吧。似乎找到了问题原因。请看下面的参考。

参考 https://blog.csdn.net/y_xianjun/article/details/79882632

概括一下就是ldns库中的 ldns_sock_wait使用了select等待socket。但是select使用的socket数组长度是1024。 如果超过了这个长度,这里就crash了。

明白了这个原因,重新再来日志中统计一下奇怪的DestinationNumber

[root@fs freeswitch]# grep "ENUM Lookup on" freeswitch.log | wc -l
1083

好吧。黑客你赢了。

那么如何解决呢?

首先,可以选择参考中的方案,升级ldns库。但我觉得治标不治本。根本原因还是因为受到了网络攻击。
我把防火墙打开后,好了。(原谅我之前一直没有开防火墙)

相关文章

  • Freeswitch ldns crash问题分析

    先来看一个FS的coredump的堆栈信息。 你看到这个慌不慌? 反正一开始我慌的一批。FreeSwitch的co...

  • 【Freeswitch问题分析】 switch_rtp_add_

    【问题现象】freeswitch在使用tls通信时,每次第二次通话必然发生crash 【根因分析】通过core堆栈...

  • FreeSWITCH折腾笔记5——freeswitch在拨号计划

    3种freeswitch访问redis方案的分析 由于项目的原因,需要在freeswitch的拨号计划中根据red...

  • 解析iOS崩溃日志

    在常规的的log日志下能分析很多crash,那么问题来了。分发测试或者上线了的包怎么抓取和分析crash。常规的解...

  • Crash日志 分析处理--DSYM文件

    iOS-dsym分析crash日志我们在iOS开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可...

  • crash 收集分析

    crash 收集分析 当app发生crash时会产生crash report,查看crash记录对我们定位cras...

  • 记一些印象深刻的 Bug

    一、iOS 加载超大尺寸图片 Crash 的调研及解决方案  1.1、问题描述  1.2、问题分析  1.3、问题...

  • 3.Xcode方面问题

    1.iOS崩溃日志分析 iOS 获得crash dSYM方法(手机本地连接方式) [iOS Crash文件分析]-...

  • python自动化解析Android Native Crash问

    本文主要分析两方面的问题: 1.如何使用python自动分析一个Native Crash问题,下面用NE来代替。2...

  • LDNS 获取

    1. 什么是LDNS? 抄一个阿里cdn的截图,这个应该是目前大多数cdn的做法 LDNS 即用户本地DNS, C...

网友评论

      本文标题:Freeswitch ldns crash问题分析

      本文链接:https://www.haomeiwen.com/subject/kaipmftx.html