opensips安装以及403回复错误

1、opensips安装

推荐使用make menuconfig图形化方式安装,不易出错,使用此方式先需要:
apt install gdb gcc automake autoconf libtool make  bison  bison-dev flex libncurses5-dev libmysqlclient-dev

再执行:
make menuconfig
勾选db_mysql,其他保持默认

vi /usr/etc/opensips/opensipsctlrc,把与mysql有关的注释去掉(USERCOL保留注释,USERCOL以上去掉注释,注意路径是否正确,SIP_DOMAIN也需要改为sipgw SIP ID的域)

在到opensips安装路径的sbin下执行:
./osipsconfig,选择ENABLE_TCP,USE_AUTH,USE_DBACC,USE_DBUSERLOC,USE_DIALOG,NAT

用生成的opensips_residential_xxx.cfg替换原先的opensips.cfg
vi /usr/etc/opensips/opensips.cfg (改listen地址和mpath,后者一般是/usr/lib/opensips/modules)

后到opensips安装目录sbin下执行:
./opensipsctl start

参考:https://www.cnblogs.com/bjzhanghao/archive/2013/02/13/2910903.html

2、opensips回复403问题

假设将opensips放到docker后,opensips本身IP为172.17.0.5,docker所在ubuntu的IP为192.168.31.47,外部的摄像头IP为192.168.31.183

外部摄像头若想向docker内的opensips发送register,则需要在ubuntu为docker建立端口映射,将docker内的opensips 5060端口映射到ubuntu的5060端口

那么摄像头在向opensips注册时,必定是向192.168.31.47的5060端口发送注册消息,注册消息通过端口映射到172.17.0.5的5060端口,此时opensips给摄像头回复的SIP消息会出现403 XXXXXdenied这种错误,经过查询有如下解释:

The SIP response '403 Not relaying' is sent because none of the domains in From URI and request URI is local IP (or hostname). For security reasons, either sender or destination must be a local user or service (using server's IP or hostnames), otherwise the instance can be used as open relay to target other hosts.

就是sip消息中From和to没有一个是本地IP,出于安全原因,发送方或目的地必须是本地用户或服务(使用服务器的IP或主机名)。否则kamailio就会作为其他主机的开放中继
参考:https://blog.csdn.net/qq_36069590/article/details/80927802

解决方式:

在opensips.cfg中加入:
advertised_address="public_ip"
alias="public_ip"
或者
listen=udp:private_ip:5060 as public_ip:5060 (这种方式可解决36秒问题和主叫方挂断被叫方不挂现象)

解决方式参考文章:https://blog.csdn.net/commander_officer/article/details/16946781

3、invite问题

说明:sipgw也是放在ubuntu内的docker中,假设其IP是172.17.0.6
上边注册通过后,sipgw会给opensips发送invite,opensips将invite转发给摄像头,此时摄像头可能会回复100 trying、101 dialog establishement、486  busy here,后边可能会有一些ack消息,但是数据都是空的,在之后sipgw又会再次去想opensips发送invite,摄像头又会恢复这些100 101 486这些消息

可能存在的问题:可能是由于invite时sdp消息内的ip是172.17.0.6,如果是这个IP的话,摄像头是无法通过172.17.0.6这个IP来找到sipgw的,所以需要两步:

1,更改sdp中传的IP为ubuntu的IP
2,将ubuntu中6000端口与sipgw的docker的6000端口做映射(摄像头与sipgw是用6000端口来传输视频数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值