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

2023-10-14 18:30

本文主要是介绍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

同时在freeswitch上也可以通过命令sofia status profile internal reg查询内部的注册用户:
如下所示,Contact对应的网已经为公网,说明下10.0.0.28是freeswitch的内网地址

Call-ID:    	a5e4efbf-8336-123b-c383-000c29915b26
User:       	2022053102@10.0.0.28
Contact:    	"2022053102" <sip:2022053102@60.12.13.106:24385;transport=udp>
Agent:      	sofia-sip/1.12.11devel
Status:     	Registered(UDP)(unknown) EXP(2022-07-21 10:25:09) EXPSECS(3652)
Ping-Status:	Reachable
Ping-Time:	0.00
Host:       	sip-jinxin.novalocal
IP:         	60.12.13.106
Port:       	24385
Auth-User:  	2022053102
Auth-Realm: 	111.161.xx.xx
MWI-Account:	2022053102@10.0.0.28

在出问题时,freeswitch终端上打印的2022053102的注册信息如下,Contact域为内网。
注意:10.0.0.28是freeswitch的内网地址,对应的公网地址是111.161.xx.xx(由于ip敏感,只写了前两个数字),跟janus的内网地址10.0.0.67(公网地址是60.12.13.106)不在同一个局域网里面,大家不要弄错了,它们对应的公网地址是不一样的。

Call-ID:    	c497dcdc-826f-123b-6b84-000c29915b26
User:       	2022053102@10.0.0.28
Contact:    	"2022053102" <sip:2022053102@10.0.0.67:59551>
Agent:      	SIP Plugin
Status:     	Registered(UDP)(unknown) EXP(2022-07-20 10:41:30) EXPSECS(2741)
Ping-Status:	Reachable
Ping-Time:	0.00
Host:       	sip-jinxin.novalocal
IP:         	60.12.13.106
Port:       	5079
Auth-User:  	2022053102
Auth-Realm: 	111.161.xx.xx
MWI-Account:	2022053102@10.0.0.28

这篇关于SIP终端注册后无法收到呼入请求的情况说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212322

相关文章

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl