pjsip注册碰到电信私有IP上网方式问题

whiskylife 2015-05-15 09:38:02
在使用电信猫私有IP模式上网的宽带中,pjsip注册请求的VIA头域跟接收应答中的VIA头域地址不一样,造成注册流程一直重复,注册不成功
如下日志:
注册请求包:
23:09:19.787 pjsua_core.c ....TX 732 bytes Request msg REGISTER/cseq=59490 (tdta0xb1a031e8) to UDP 113.22.5.24:5060:
REGISTER sip:113.22.5.24 SIP/2.0
v: SIP/2.0/UDP 110.83.41.243:45619;rport;branch=z9hG4bKPj6y0Ana3l0p.TVANFCWcJB4N0pcvAuYMl
Route: <sip:113.22.5.24;lr>
Max-Forwards: 70
f: <sip:10000@113.22.5.24>;tag=vJH.dQFgEByZVuOHTJbLLeBZEsp50e.r
t: <sip:10000@113.22.5.24>
i: vOwBdQws7oYUrDPpBu8g1FcHluWAc5e0
CSeq: 59490 REGISTER
m: <sip:10000@110.83.41.243:45619;ob>;+sip.ice
m: <sip:10000@192.168.0.100:5060;ob>;expires=0;+sip.ice
Expires: 150
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Authorization: Digest username="10000", realm="113.22.5.24", nonce="554b803a00007a09c8b683d9c5c8a96d382696e2c969fdfe", uri="sip:113.22.5.24", response="908c7f9e3398d579036936e5b93e9824"
l: 0


--end msg--

接收数据包:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.64.33.171:1024;branch=z9hG4bKPj6y0Ana3l0p.TVANFCWcJB4N0pcvAuYMl;received=110.83.41.243;rport=1024
Call-ID: vOwBdQws7oYUrDPpBu8g1FcHluWAc5e0
From: <sip:10000@113.22.5.24>;tag=vJH.dQFgEByZVuOHTJbLLeBZEsp50e.r
To: <sip:10000@113.22.5.24>;tag=9de17b6a16a9da9983a6e9affd3e2da6.b155
CSeq: 59490 REGISTER
Contact: <sip:10000@192.168.0.100:5060;ob>;expires=150
Server: OpenSIPS (1.11.3-notls (x86_64/linux))
Content-Length: 0


--end msg--


注册请求的头域地址是110.83.41.243:45619(公网IP地址),接收的头域地址是100.64.33.171:1024(电信私有IP上网模式中内置路由分配的一个IP地址),就会造成地址变更,再重新注册。下一次又重复地址变更,变成了死循环。
正常接收的VIA是这样的Via: SIP/2.0/UDP 110.83.41.243:45619;branch=z9hG4bKPj6y0Ana3l0p.TVANFCWcJB4N0pcvAuYMl;received=110.83.41.243;rport=45619


如果打电话给客服将电信私有IP上网模式更改为公有IP上网模式就不会出现100.64.33.171:1024这个电信分配的地址,就可以正常注册成功。
如果在pjsip中禁用VIA头域变更的标志,每次注册的头域都是私有地址,这样也能注册成功。但是呼叫不到了?
目前不知道具体的原因? 有哪位大能碰到过这种情况,并且解决了的?
...全文
880 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
code_digger 2017-10-18
  • 打赏
  • 举报
回复
借楼上的东风,我内网机器向公网的SIP服务器注册也碰到401的错误,但不是VIA头部不一致的错误,3楼大哥能否帮看一下给个建议? 15:44:42.366 pjsua_acc.c ....IP address change detected for account 2 (192.168.116.227:33701 --> 203.86.29.225:2088). Updating registration (using method 4) 15:44:42.366 pjsua_acc.c ....Contact for acc 2 updated: <sip:1000@203.86.29.225:2088;transport=TCP;ob>;+sip.ice;reg-id=1;+sip.instance="<urn:uuid:00000000-0000-0000-0000-00001a7de8ab>" 15:44:42.366 pjsua_core.c ....TX 893 bytes Request msg REGISTER/cseq=26998 (tdta0x8c2c40) to TCP 131.199.163.34:5060: REGISTER sip:131.199.163.34;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 203.86.29.225:2088;rport;branch=z9hG4bKPjcab94828-9a6c-4e0b-bd35-242afae96e8e;alias Max-Forwards: 70 From: <sip:1000@131.199.163.34>;tag=48de8a35-cf4c-4f49-86f6-2e38d60a9cf7 To: <sip:1000@131.199.163.34> Call-ID: f8af5460-4da3-45ba-9e6b-deaac27604a4 CSeq: 26998 REGISTER User-Agent: PJSUA v2.6 Linux-4.10.0.37/x86_64/glibc-2.23 Supported: outbound, path Contact: <sip:1000@203.86.29.225:2088;transport=TCP;ob>;+sip.ice;reg-id=1;+sip.instance="<urn:uuid:00000000-0000-0000-0000-00001a7de8ab>" Expires: 300 Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Authorization: Digest username="1000", realm="131.199.163.34", nonce="WecHllnnBmpaHzTYibBESfMfmJBf/p2P", uri="sip:131.199.163.34;transport=tcp", response="2bdf3de266208a838e71536ad7152f30" Content-Length: 0 --end msg-- 15:44:42.373 pjsua_core.c .RX 530 bytes Response msg 401/REGISTER/cseq=26998 (rdata0x8c00f0) from TCP 131.199.163.34:5060: SIP/2.0 401 Unauthorized Via: SIP/2.0/TCP 203.86.29.225:2088;rport=2088;branch=z9hG4bKPjcab94828-9a6c-4e0b-bd35-242afae96e8e;alias;received=203.86.29.225 From: <sip:1000@131.199.163.34>;tag=48de8a35-cf4c-4f49-86f6-2e38d60a9cf7 To: <sip:1000@131.199.163.34>;tag=a1a14f277d95b8e4e28cd79320751dec.04fa Call-ID: f8af5460-4da3-45ba-9e6b-deaac27604a4 CSeq: 26998 REGISTER WWW-Authenticate: Digest realm="131.199.163.34", nonce="WecHllnnBmpaHzTYibBESfMfmJBf/p2P" Server: kamailio (5.1.0-dev6 (x86_64/linux)) Content-Length: 0 --end msg-- 15:44:42.373 sip_auth_clien ...Authorization failed for 1000@131.199.163.34: server rejected with stale=false 15:44:42.373 pjsua_acc.c ....SIP registration error: Credential failed to authenticate (PJSIP_EFAILEDCREDENTIAL) [status=171100]
whiskylife 2016-09-29
  • 打赏
  • 举报
回复
好久了,遗忘了这个问题。楼上的兄弟,上面已经说了不需要禁用了VIA头域能注册成功,但是呼叫不到了,所以这种方法解决不行。我后面也没有解决出来,只能更改上网模式
GYY_2046 2015-11-27
  • 打赏
  • 举报
回复
兄弟,不知道这个网址https://trac.pjsip.org/repos/ticket/1537能不能帮到你,我设置 pjsua_acc_config.allow_via_rewrite = 0就可以保证via头域中的发送地址不发生变化

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧