我是靠谱客的博主 仁爱芹菜,最近开发中收集的这篇文章主要介绍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)。

全文完。

最后

以上就是仁爱芹菜为你收集整理的FreeSWITCH的acl的全部内容,希望文章能够帮你解决FreeSWITCH的acl所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部