之前用docker安装的freeswitch的,启动是正常的,
但用下面的Microsip连接不上
主要原因有可能一下几个
1、通过下面命令可以看
[root@localhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"
=================================================================================================
Name internal
Domain Name N/A
Auto-NAT false
DBName sofia_reg_internal
Pres Hosts 192.168.199.151,192.168.199.151
Dialplan XML
Context public
Challenge Realm auto_from
RTP-IP 192.168.199.151
Ext-RTP-IP 202.107.210.51
SIP-IP 192.168.199.151
Ext-SIP-IP 202.107.210.51
URL sip:mod_sofia@202.107.210.51:5060
BIND-URL sip:mod_sofia@202.107.210.51:5060;maddr=192.168.199.151;transport=udp,tcp
WS-BIND-URL sip:mod_sofia@192.168.199.151:5066;transport=ws
WSS-BIND-URL sips:mod_sofia@192.168.199.151:7443;transport=wss
HOLD-MUSIC local_stream://moh
OUTBOUND-PROXY N/A
CODECS IN OPUS,G722,PCMU,PCMA,H264,VP8
CODECS OUT OPUS,G722,PCMU,PCMA,H264,VP8
TEL-EVENT 101
DTMF-MODE rfc2833
CNG 13
SESSION-TO 0
MAX-DIALOG 0
NOMEDIA false
LATE-NEG true
PROXY-MEDIA false
ZRTP-PASSTHRU true
AGGRESSIVENAT false
CALLS-IN 4
FAILED-CALLS-IN 2
CALLS-OUT 0
FAILED-CALLS-OUT 0
REGISTRATIONS 1
2、另外防火墙还是需要加上下面的规则策略的
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.199.0/24" port protocol="udp" port="5060" accept' --permanent
sudo firewall-cmd --reload
不过上面的密码不是1234,反而是在/etc/freeswitch目录下的vars.xml里的缺省密码,我这里是下面这个比较复杂的密码,当然也可以自己修改掉,我后来修改成1234了
3、在线正常如下:
所以相关参数设置都要在/etc/freeswitch目录下的文件配置文件进行修改,其它地方的配置文件修改应该是不对的,也没有效果的
<X-PRE-PROCESS cmd="set" data="default_password=o-qEitzz29Sc"
<X-PRE-PROCESS cmd="set" data="disable_system_api_commands=true"/>
<!-- Did you change it yet? -->
现在我用microsip可以连接上freeswitch了,但用基于JsSIP实现的webrtc软电话条对接freeswitch的时候还是连接不上,
- JsSIP 基于 WebSocket Secure (WSS) 协议连接,默认端口为
7443
;而 MicroSIP 使用 UDP/TCP 的5060
端口。
docker新增7443的wss访问端口
-p 7443:7443/tcp ... # 新增 7443 端口映射
用wscat -c wss://192.168.199.151:7443测试出现下面错误
E:\test\softphone>wscat -c wss://192.168.199.151:7443
error: self signed certificate
>
E:\test\softphone>
临时绕过证书验证(测试环境使用)
在 wscat
命令中添加 -n
或 --no-check
参数忽略证书验证
wscat -n -c wss://192.168.199.151:7443
在宿主机生成证书
# 生成私钥和证书(示例生成自签名证书)
openssl req -x509 -newkey rsa:4096 -nodes \
-keyout tls.key -out tls.crt -days 365 \
-subj "/CN=yourdomain.com"
# 合并为 WSS 所需文件(如 FreeSWITCH 要求)
cat tls.crt tls.key > wss.pem
复制证书到容器内部
# 将证书文件复制到容器目标路径(例如 /etc/freeswitch/certs)
docker cp wss.pem <容器名称或ID>:/etc/freeswitch/certs/wss.pem
# 修改权限(确保容器内应用可读取)
docker exec <容器名称或ID> chown freeswitch:freeswitch /etc/freeswitch/certs/wss.pem
修改 FreeSWITCH 配置
编辑 SIP Profile 配置文件(需挂载到容器):
文件路径: /etc/freeswitch/sip_profiles/internal.xml
<!-- 修改以下参数 -->
<param name="wss-binding" value="0.0.0.0:7443"/>
<param name="tls-cert-dir" value="/etc/freeswitch/certs"/> <!-- 指向证书目录 -->
<param name="ws-binding" value="0.0.0.0:5066"/>
这样再次用连接如下:
登录好后如下:
两个之间通话界面如下: