这是我学习搭建opensips服务器以来持续性最长的一个问题,具体就是终端电话软件一直注册不了已经创建好的sip会话账号。我刚开始用的终端电话软件是Zoiper,要么一直在注册中,要么直接注册失败,后面网上查询重新下载了Microsip,它能显示注册失败的原因,比如请求超时,比较方便一点。
网上查询说可以使用sngrep工具抓包分析,第一次使用需要先下载这个工具:
#sudo apt-get install sngrep
然后直接sngrep
#sngrep
感觉像是sip服务器压根没有接受到终端发送的任何消息,我开始以为是配置文件的问题,比如IP地址或端口号没写正确。
#cd /usr/local/etc/opensips
#vim opensips.cfg
#vim opensipsctlrc
#vim /etc/default/opensips
#vim /etc/init.d/opensips
配置都没有问题,具体配置文件的内容见http://t.csdn.cn/7NezY
我又在网上查了很多解决方法,比如修改/usr/local/etc/opensips/opensips.cfg配置文件:
加上自个儿的sip服务器IP地址,还是不行。修改控制面板的配置:
也是不行。
之后在网上看到说是防火墙限制5060端口的缘故,也就是5060端口还被开放。
#netstat -anp
#netstat -ulpn | grep 5060
显示所有端口/协议的占用情况,意料之中没有5060的占用情况。
首先我觉得会不会是主机防火墙限制的5060端口,接收不了通过5060端口发送过来的信息,进行了如下设置:
控制面板——>windows防火墙——>高级设置——>入站规则——>新建规则——>端口——>协议(udp)——>特定本地端口(5060)——>允许连接——>勾选“域,专用,公司”——>名称——>完成
还是没解决问题。
然后是sip服务器的防火墙,用指令打开5060端口
#iptables -I INPUT -p tcp --dport 5060 -j ACCEPT
#iptables -I INPUT -p udp --dport 5060 -j ACCEPT
#iptables-save
然后根据指示执行#dmesg,还出现了其他问题,比如:
网上查询说的是该sip服务器的虚拟磁盘容量不够,需要增大容量:
#df -h
查询各设备的空间使用情况:
更改搭建该Ubuntu的时候分配的磁盘容量(需要先关闭该虚拟机再进行更改)后,重新分配(具体方法可网上查询)。反正这波操作下来还是没什么用。
**************************************************
应该是防火墙打开端口的指令不对,查询到Ubuntu18.04使用的防火墙是ufw :
①查看防火墙的状态
#sudo ufw status
防火墙是打开的,如果是关闭的,可通过#sudo ufw enable 打开。
②安装firewalld,开放5060端口。
#sudo apt-get install firewalld
#sudo firewall-cmd --permanent --add-port=560/udp
#sudo firewall-cmd --list-all
③重启防火墙(重点)
#sudo systemctl reload firewalld
或
#firewall-cmd --reload
sip账户依然没有注册成功,苦思冥想后发现防火墙也有可能限制了udp协议,没有开放该协议,如上图中,protocols项是没有内容的。
#sudo firewall-cmd --permanent --add-protocol=udp
再次重启防火墙#firewall-cmd --reload。
Microsip电话就显示在线了,至此问题终于得到解决:
#netstat -ulpn | grep 5060
也出现了5060端口占用情况:
注: 属个人学习总结,如有错误欢迎指正。