概述
acl.conf.xml的开始几行就给出了注释,说这些acl会自动创建:
rfc1918.auto - RFC1918 Space
nat.auto - RFC1918 Excluding your local lan.
localnet.auto - ACL for your local lan.
loopback.auto - ACL for your local lan.
上面每个项目都非常清楚。
可惜还是有少数人不去留意这些,导致一些低级错误。
我曾经碰到过一个故障,就是originate sofia/internal/1234@ip_addr呼叫公网地址,fs应该给ext-sip-ip和ext-rtp-ip,但是没有这么做,呼叫任何地址都给local_ip_v4,查了半天才知道这哥们覆盖了loopback.auto,他是这样定义的:
<list name="loopback.auto" default="allow">
</list>
这样测试:
fs_cli -x 'acl 127.0.0.1 loopback.auto'
true # 这个没问题
fs_cli -x 'acl 113.113.113.113 loopback.auto'
true # 但明显是个nat地址,怎么会是回环地址呢?
mod_sofia是这样检查nat的:
int sofia_glue_check_nat(sofia_profile_t *profile, const char *network_ip)
{
switch_assert(network_ip);
return (profile->extsipip &&
!switch_check_network_list_ip(network_ip, "loopback.auto") &&
!switch_check_network_list_ip(network_ip, profile->local_network));
}
profile已经定义了extsipip,地址不是loopback.auto,地址不是localnet(名字可配置)
同时满足这三个条件,那就是nat地址。
这些东西简单归简单,但是要辨析清楚。
一般需要关注的是下面几个acl:
domains, 跳过认证
sip proflie默认这样配置:<param name="apply-inbound-acl" value="domains"/>
可以在acl.conf.xml修改domains,比如allow某些落地网关的ip地址。
localnet.auto
sip proflie默认这样配置: <param name="local-network-acl" value="localnet.auto"/>
如果你的本地网不规范(比如明明是公网地址但需要当内网看待),那么需要调整localnet.auto的配置。
apply-candidate-acl
sip profile 默认不配置,但跟这样配置<param name="apply-candidate-acl" value="wan.auto"/>是等效的。
如果在纯内网环境调试js.sip,那么可以配置 <param name="apply-candidate-acl" value="any.auto",在acl.conf.xml配置any.auto为所有都allow,其实就是放行私网地址(默认只放行公网地址)。
esl.auto
在acl.conf.xml增加esl.auto配置,allow 127.0.0.0/24和其它可能的地址(esl客户端的地址),在event_socket.conf.xml里面使用它(esl.auto)。
全文完。
最后
以上就是仁爱芹菜为你收集整理的FreeSWITCH的acl的全部内容,希望文章能够帮你解决FreeSWITCH的acl所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复