FreeSWITCH的acl

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:

  1. domains, 跳过认证

sip proflie默认这样配置:<param name="apply-inbound-acl" value="domains"/>

可以在acl.conf.xml修改domains,比如allow某些落地网关的ip地址。

  1. localnet.auto

sip proflie默认这样配置: <param name="local-network-acl" value="localnet.auto"/>

如果你的本地网不规范(比如明明是公网地址但需要当内网看待),那么需要调整localnet.auto的配置。

  1. 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,其实就是放行私网地址(默认只放行公网地址)。

  1. esl.auto

在acl.conf.xml增加esl.auto配置,allow 127.0.0.0/24和其它可能的地址(esl客户端的地址),在event_socket.conf.xml里面使用它(esl.auto)。

全文完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值