• SIP终端注册后无法收到呼入请求的情况说明


    SIP呼叫终端时,主动呼叫方无需注册,即可发送INVITE信令进行呼叫。
    若本终端需要接受其他SIP终端的呼叫,则本终端一定要注册,否则其他终端无法呼入。

    今天碰到了一个终端注册成功后,无法接受其他终端呼入请求的情况。
    首先,本人的SIP服务器为自搭建的freeswitch,里面自己建了两个号码,2022053107和2022053102,其中本端SIP号为2022053102。freeswitch部署在公网上。

    SIP终端部署在内网,若终端采取软电话linphone,其中一个linphone注册2022053107,另一个linphone注册2022053102。则本端的2022053102所在linphone可以接收到来自2022053107的呼叫。

    本人的SIP终端为janus服务器(一个开源的webrtc服务端),此janus服务器注册SIP号码2022053102,注册成功,但是无法接收到2022053107的呼叫。
    对应的示例图情况如下:
    在这里插入图片描述

    但是,如果将janus放置于公网,则其可以接收到来自2022053107的呼叫,对应的情况如下:
    在这里插入图片描述

    后面经过抓包比对,发现问题出现在REGISTER信令时的Contact域上,如下所示,janus所在服务器的本地ip是10.0.0.67(内网),注册时,向freeswitch发送的Contact的地址是内网地址,这个有问题,这个地址应该为内网地址对应的公网地址,因为freeswitch必须通过公网地址中转才能将信令发送到janus的内网地址。
    在这里插入图片描述

    正确的Contact域如下,可以看到,本内网对应的公网IP是60.12.13.106。
    在这里插入图片描述
    找到此问题,就需要在给予解决,本人在代码编写上参考了sofsip-cli,这个demo也是sofiasip的官方demo,实际上本人查出此问题的速度要快于修改此问题的速度。
    关于sofsip-cli的使用,读者可以参考我写的两篇博客:
    sofsip-cli使用
    vs2017中调试sofsip-cli

    顺带说下,本人用janus官方的很新的1.0.2版本,部署在内网,也存在接收不到其他终端呼入的情况,说明janus本身就存在着此问题。

    janus的官网地址是可以接收其他终端的呼通,官方测试地址如下:
    https://janus.conf.meetecho.com/siptest.html

  • 相关阅读:
    docker save & docker export 区别
    iOS全埋点解决方案-手势采集
    css+js实现的下拉百叶窗式弹出菜单html页面前端源码[20218]
    OA项目之我的审批(查询&会议签字)
    DAY57
    发布 jar 包到 maven 中央仓库
    Day22_8 Java学习之反射、多线程
    有源晶振与无源晶振的区别
    【大数据】Apache NiFi 助力数据处理及分发
    金融信创局面已打开,如何建设国产化文件传输系统?
  • 原文地址:https://blog.csdn.net/tusong86/article/details/125899664