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,他是这样定义的:


这样测试:

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默认这样配置:

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

  1. localnet.auto

sip proflie默认这样配置:

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

  1. apply-candidate-acl

sip profile 默认不配置,但跟这样配置是等效的。

如果在纯内网环境调试js.sip,那么可以配置

  1. esl.auto

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

全文完。

你可能感兴趣的:(FreeSWITCH,信息与通信)