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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads