文章目录
- 一、使用证书certs(N)
- 二、使用mod_abstraction(N)
- 三、ACL访问控制,限制IP访问(Y)
-
- [3.1 说明](#3.1 说明)
- [3.2 配置](#3.2 配置)
- [3.3 解释](#3.3 解释)
- 二、关闭默认音频
一、使用证书certs(N)
https://freeswitch.org.cn/books/case-study/8.2-ssl.html
第一步:创建/usr/local/freeswitch/certs
FreeSWITCH支持WebRTC,但是现在以chrome为主的web浏览器都对WebRTC应用加限制,要求与服务端的连接必须是SSL连接(也就是wss://),所以我们需要让FreeSWITCH可以支持wss协议的接入方式而不是ws,理论上这一层可以由nginx等代理服务实现,但是笔者目前还没有成功实现,所以本文就先简单实现直接在FreeSWITCH中部署SSL证书。

第二步:申请证书
向域名提供商申请SSL证书,然后下载证书文件,应该会得到2个文件,分别是xxx.key和xxx.pem。
第三步:上传证书(至freeswitch目录)
把xxx.key文件和xxx.pem文件上传到freeswitch安装目录的certs目录下,如/usr/local/freeswitch/certs。
第四步:合成wss.pem文件
别忘了把原有的wss.pem文件先备份一下
shell
cat xxx.pem xxx.key > wss.pem
第五步:配置wss端口
shell
vim /usr/local/freeswitch/conf/sip_profiles/internal.xml

第六步:重启freeswitch服务
shell
freeswitch -stop
freeswitch -nc -nonat
二、使用mod_abstraction(N)
说白了就是添加快捷方式,再次优化原来的API

三、ACL访问控制,限制IP访问(Y)

3.1 说明
端口5080是不需要鉴权的,直接访问呼叫
端口5060是需要鉴权的,也是我们通常走的点,而让所有来话都送到5060端口上(internal Profile)。5060端口上的来话是需要先鉴权才能路由的。在这种汇接局模式中,一般会使用IP地址鉴权的方式。而IP地址鉴权就会用到ACL。
3.2 配置
internal Profile默认使用domains这个ACL进行鉴权。读者可以在internal.xml配置中找到如下的配置:
powershell
<param name="apply-inbound-acl" value="domains"/>

xml
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<!--
以下的ACL是在启动时自动创建的。
rfc1918.auto - 这个ACL包含了RFC1918规定的私有IP地址范围。
nat.auto - 这个ACL包含了除了本地局域网之外的RFC1918私有IP地址范围。
localnet.auto - 这个ACL用于本地局域网的地址范围。
loopback.auto - 这个ACL用于本地环回接口的地址范围。
-->
<!--开始定义一个新的网络列表lan,默认情况下允许所有流量 -->
<list name="lan" default="allow">
<!--在lan列表中定义了一个节点,该节点拒绝来自CIDR块192.168.42.0/24的所有流量。 -->
<node type="deny" cidr="192.168.42.0/24"/>
<!--在lan列表中定义了一个节点,该节点允许CIDR块192.168.42.42/32(即单一IP地址192.168.42.42)的流量。-->
<node type="allow" cidr="192.168.42.42/32"/>
</list>
<!--
domains列表的作用是通过遍历目录来添加带有cidr=标签的所有用户到此ACL,并在匹配用户的变量和参数时,如同它们已经被摘要认证一样应用。
-->
<list name="domains" default="deny">
<!-- 注释说明domain=是一个特殊的标签,它会从目录中扫描域以构建ACL。 -->
<node type="allow" domain="$${domain}"/>
<!-- 在domains列表中定义了一个节点,该节点允许域变量$${domain}所代表的流量。
注释建议如果需要允许IP范围到此域的ACL,则应使用cidr=。-->
<!-- <node type="allow" cidr="192.168.0.0/24"/> -->
</list>
</network-lists>
</configuration>
可以额外设置注释里面的

3.3 解释
- deny 代表拒绝
- allow 带边允许
